<?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>189729</bug_id>
          
          <creation_ts>2018-09-18 19:14:59 -0700</creation_ts>
          <short_desc>JS bindings generator should support EnabledAtRuntime for static methods</short_desc>
          <delta_ts>2018-09-20 10:33:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Bindings</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>189694</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Justin Michaud">justin_michaud</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1460837</commentid>
    <comment_count>0</comment_count>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-09-18 19:14:59 -0700</bug_when>
    <thetext>[EnabledAtRuntime=Feature] static void blah(); should add/remove the method when Feature is enabled or disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460838</commentid>
    <comment_count>1</comment_count>
      <attachid>350088</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-09-18 19:27:31 -0700</bug_when>
    <thetext>Created attachment 350088
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461010</commentid>
    <comment_count>2</comment_count>
      <attachid>350129</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-09-19 10:08:31 -0700</bug_when>
    <thetext>Created attachment 350129
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461140</commentid>
    <comment_count>3</comment_count>
      <attachid>350129</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-19 15:20:28 -0700</bug_when>
    <thetext>Comment on attachment 350129
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3658
&gt; +    my $globalObjectPtr = ($globalObjectIsParam? &quot;&amp;globalObject&quot; : &quot;globalObject()&quot;);

missing space before &apos;?&apos;. Also, I think we usually omit the parentheses.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:3679
&gt; +    my $globalObjectPtr = ($globalObjectIsParam? &quot;&amp;globalObject&quot; : &quot;globalObject()&quot;);

Same comments as above.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7199
&gt; +    push(@attributes, @{$interface-&gt;mapLike-&gt;attributes}) if $interface-&gt;mapLike;

Could you clarify why maplike is unconditionally treated as runtime enabled?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7205
&gt; +        if ($attribute-&gt;extendedAttributes-&gt;{EnabledAtRuntime}) {

Same comment as below. Should probably use NeedsRuntimeCheck()

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7211
&gt; +    push(@operations, @{$interface-&gt;iterable-&gt;operations}) if IsKeyValueIterableInterface($interface);

Could you clarify why iterable is unconditionally treated as runtime enabled?

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7212
&gt; +    push(@operations, @{$interface-&gt;mapLike-&gt;operations}) if $interface-&gt;mapLike;

ditto.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7213
&gt; +    push(@operations, @{$interface-&gt;serializable-&gt;operations}) if $interface-&gt;serializable;

ditto.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7221
&gt; +        if ($operation-&gt;extendedAttributes-&gt;{EnabledAtRuntime}) {

We normally do not special-case EnabledAtRuntime and instead rely on NeedsRuntimeCheck(). Also note that EnabledAtRuntime is kind of deprecated in favor of EnabledBySetting, unless you need multithreaded access.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorJS.pm:7293
&gt; +        my $runtimeEnableConditionalString = GenerateRuntimeEnableConditionalString($interface, $operationOrAttribute, &quot;true&quot;);

GenerateRuntimeEnableConditionalString supports other things that EnabledAtRuntime. For e.g. it supports EnabledBySetting (which is preferred nowadays). Therefore, it is unfortunate that GetRuntimeEnabledStaticProperties() only returns EnabledAtRuntime things.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461183</commentid>
    <comment_count>4</comment_count>
      <attachid>350161</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-09-19 16:59:27 -0700</bug_when>
    <thetext>Created attachment 350161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461380</commentid>
    <comment_count>5</comment_count>
      <attachid>350161</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-09-20 09:18:44 -0700</bug_when>
    <thetext>Comment on attachment 350161
Patch

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

r=me

&gt; Source/WebCore/ChangeLog:6
&gt; +        Add support for EnabledAtRuntime to static methods in the JS bindings

The description should come after...

&gt; Source/WebCore/ChangeLog:9
&gt; +        Reviewed by NOBODY (OOPS!).

... the reviewed by line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461396</commentid>
    <comment_count>6</comment_count>
      <attachid>350219</attachid>
    <who name="Justin Michaud">justin_michaud</who>
    <bug_when>2018-09-20 09:53:04 -0700</bug_when>
    <thetext>Created attachment 350219
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461417</commentid>
    <comment_count>7</comment_count>
      <attachid>350219</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-20 10:31:51 -0700</bug_when>
    <thetext>Comment on attachment 350219
Patch

Clearing flags on attachment: 350219

Committed r236266: &lt;https://trac.webkit.org/changeset/236266&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461418</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-09-20 10:31:52 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1461420</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-09-20 10:33:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/44646048&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350088</attachid>
            <date>2018-09-18 19:27:31 -0700</date>
            <delta_ts>2018-09-19 10:08:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189729-20180918192730.patch</filename>
            <type>text/plain</type>
            <size>26311</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTU0YWExN2JmMjg3ZmU3
YWM1ZDZlNjlkNTAzZDc3ZDRhNjU4ZTQ1Mi4uYzA2ZWQ4NGNmMmRiOTRmNWM1MGNlNTEzZTNiMTQ1
ZmVkZDlhNjEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA5LTE4ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBKUyBiaW5k
aW5ncyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQgRW5hYmxlZEF0UnVudGltZSBmb3Igc3RhdGlj
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTcyOQorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBFbmFibGVkQXRSdW50aW1lIHRvIHN0
YXRpYyBtZXRob2RzIGluIHRoZSBKUyBiaW5kaW5ncworICAgICAgICBjb2RlIGdlbmVyYXRvci4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkKToKKyAgICAgICAgKEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKEdldFJ1bnRpbWVFbmFibGVk
U3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0
aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY0dldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGVTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0
YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKIDIwMTgtMDkt
MTggIEJhc3VrZSBTdXp1a2kgIDxCYXN1a2UuU3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtD
dXJsXSBMaW1pdCBjYXB0dXJpbmcgZXh0cmEgbWV0cmljcyBmb3IgV2ViIEluc3BlY3RvciB3aGVu
IG5vdCByZXF1aXJlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggN2Y0YWMxMGM5ZThhZjhiZGM2ZGJjODY1Y2M3YmJmZTRh
NjQyZjNkYy4uOWZjNzgxYWFjZWQ4YzZkNDczMGJkZTY1NDM0ZGZjZTk5OGU3OGM4MyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTM2NDEsNyArMzY0MSw3IEBAIHN1YiBUb01ldGhvZE5hbWUKIAogc3ViIEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogewotICAgIG15ICgkaW50ZXJm
YWNlLCAkY29udGV4dCwgJGNvbmp1bmN0cykgPSBAXzsKKyAgICBteSAoJGludGVyZmFjZSwgJGNv
bnRleHQsICRjb25qdW5jdHMsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBfOwogCiAgICAgYXNz
ZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEV4cG9zZWQuIikgaWYgJGNvbnRleHQtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsKIApAQCAtMzY1
NSwxMCArMzY1NSwxMiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJp
bmdGb3JFeHBvc2VkCiAgICAgICAgICRleHBvc2VkID0gQCRleHBvc2VkWzBdOwogICAgIH0KIAor
ICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAoJGdsb2JhbE9iamVjdElzUGFyYW0/ICImZ2xvYmFs
T2JqZWN0IiA6ICJnbG9iYWxPYmplY3QoKSIpOworCiAgICAgaWYgKCRleHBvc2VkIGVxICJXaW5k
b3ciKSB7Ci0gICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNEb2N1bWVu
dCgpIik7CisgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzRG9jdW1lbnQoKSIpOwogICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJXb3JrZXIiKSB7Ci0g
ICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9i
YWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29w
ZSgpIik7CisgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkt
PmlzV29ya2VyR2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGFzc2VydCgi
VW5yZWNvZ25pemVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntFeHBvc2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQgYXR0cmlidXRlIG9u
ICciIC4gcmVmKCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTM2NzEsMTUgKzM2NzMsMTcg
QEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAog
IyAoZS5nLiBJRExJbnRlcmZhY2UsIElETEF0dHJpYnV0ZSwgSURMT3BlcmF0aW9uLCBJRExJdGVy
YWJsZSwgZXRjLikKIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZwog
ewotICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCkgPSBAXzsKKyAgICBteSAoJGludGVyZmFj
ZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBfOwogCiAgICAgbXkgQGNvbmp1
bmN0czsKKyAgICBteSAkZ2xvYmFsT2JqZWN0UHRyID0gKCRnbG9iYWxPYmplY3RJc1BhcmFtPyAi
Jmdsb2JhbE9iamVjdCIgOiAiZ2xvYmFsT2JqZWN0KCkiKTsKICAgICAKICAgICBpZiAoJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NlY3VyZUNvbnRleHR9KSB7CiAgICAgICAgIEFkZFRv
SW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiKTsKIAogICAgICAgICBpZiAo
JGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnRleHRIYXNTZXJ2aWNlV29ya2VyU2No
ZW1lfSkgewotICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiKGpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1Nl
Y3VyZUNvbnRleHQoKSB8fCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3Qo
KSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aGFzU2VydmljZVdvcmtlclNjaGVtZSgpKSIp
OworICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiKGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+
aXNTZWN1cmVDb250ZXh0KCkiCisgICAgICAgICAgICAgICAgLiAifHwganNDYXN0PEpTRE9NR2xv
YmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5oYXNTZXJ2aWNlV29ya2VyU2NoZW1lKCkpIik7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0
KCkiKTsKICAgICAgICAgfQpAQCAtMzY4Nyw3ICszNjkxLDcgQEAgc3ViIEdlbmVyYXRlUnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAgICAgIGlmICgkY29udGV4dC0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57Q29udGV4dEhhc1NlcnZpY2VXb3JrZXJTY2hlbWV9KSB7CiAgICAgICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CiAKLSAgICAg
ICAgICAgIHB1c2goQGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2Jh
bE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5oYXNTZXJ2aWNlV29ya2VyU2No
ZW1lKCkiKTsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2Jh
bE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aGFzU2VydmljZVdvcmtlclNjaGVtZSgpIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTM3MTMsNyArMzcxNyw3IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0
cmluZwogCiAgICAgICAgIG15IEBmbGFncyA9IHNwbGl0KC8mLywgJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KTsKICAgICAgICAgZm9yZWFjaCBteSAkZmxh
ZyAoQGZsYWdzKSB7Ci0gICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJkb3duY2FzdDxEb2N1
bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLiIgLiBUb01ldGhvZE5hbWUoJGZsYWcpIC4g
IkVuYWJsZWQoKSIpOworICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiZG93bmNhc3Q8RG9j
dW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4g
IiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkuIiAuIFRvTWV0aG9kTmFt
ZSgkZmxhZykgLiAiRW5hYmxlZCgpIik7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcxODUsNiAr
NzE4OSw0MyBAQCBzdWIgQ29uc3RydWN0b3JIYXNQcm9wZXJ0aWVzCiAgICAgcmV0dXJuIDA7CiB9
CiAKK3N1YiBHZXRSdW50aW1lRW5hYmxlZFN0YXRpY1Byb3BlcnRpZXMKK3sKKyAgICBteSAoJGlu
dGVyZmFjZSkgPSBAXzsKKworICAgIG15IEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMgPSAoKTsK
KworICAgIG15IEBhdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1dGVzfTsKKyAgICBw
dXNoKEBhdHRyaWJ1dGVzLCBAeyRpbnRlcmZhY2UtPm1hcExpa2UtPmF0dHJpYnV0ZXN9KSBpZiAk
aW50ZXJmYWNlLT5tYXBMaWtlOworCisgICAgZm9yZWFjaCBteSAkYXR0cmlidXRlIChAYXR0cmli
dXRlcykgeworICAgICAgICBuZXh0IGlmIEF0dHJpYnV0ZVNob3VsZEJlT25JbnN0YW5jZSgkaW50
ZXJmYWNlLCAkYXR0cmlidXRlKSAhPSAwOworICAgICAgICBuZXh0IGlmIG5vdCAkYXR0cmlidXRl
LT5pc1N0YXRpYzsKKworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57RW5hYmxlZEF0UnVudGltZX0pIHsKKyAgICAgICAgICAgIHB1c2goQHJ1bnRpbWVFbmFibGVk
UHJvcGVydGllcywgJGF0dHJpYnV0ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBteSBAb3Bl
cmF0aW9ucyA9IEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc307CisgICAgcHVzaChAb3BlcmF0aW9u
cywgQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+b3BlcmF0aW9uc30pIGlmIElzS2V5VmFsdWVJdGVy
YWJsZUludGVyZmFjZSgkaW50ZXJmYWNlKTsKKyAgICBwdXNoKEBvcGVyYXRpb25zLCBAeyRpbnRl
cmZhY2UtPm1hcExpa2UtPm9wZXJhdGlvbnN9KSBpZiAkaW50ZXJmYWNlLT5tYXBMaWtlOworICAg
IHB1c2goQG9wZXJhdGlvbnMsIEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxlLT5vcGVyYXRpb25z
fSkgaWYgJGludGVyZmFjZS0+c2VyaWFsaXphYmxlOworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlv
biAoQG9wZXJhdGlvbnMpIHsKKyAgICAgICAgbmV4dCBpZiAoJG9wZXJhdGlvbi0+ZXh0ZW5kZWRB
dHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJG9wZXJhdGlvbi0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0pOworICAgICAgICBuZXh0IGlmICRvcGVy
YXRpb24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gPiAx
OworICAgICAgICBuZXh0IGlmIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5jZSgkaW50ZXJmYWNl
LCAkb3BlcmF0aW9uKSAhPSAwOworICAgICAgICBuZXh0IGlmICRvcGVyYXRpb24tPm5hbWUgZXEg
IltTeW1ib2wuSXRlcmF0b3JdIjsKKyAgICAgICAgbmV4dCBpZiBub3QgJG9wZXJhdGlvbi0+aXNT
dGF0aWM7CisKKyAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Vu
YWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgICAgICBwdXNoKEBydW50aW1lRW5hYmxlZFByb3Bl
cnRpZXMsICRvcGVyYXRpb24pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIEBydW50
aW1lRW5hYmxlZFByb3BlcnRpZXM7Cit9CisKIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVy
TWV0aG9kcwogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUsICRwcm90b0NsYXNz
TmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2VuZXJhdGluZ05hbWVk
Q29uc3RydWN0b3IpID0gQF87CkBAIC03MjQ0LDYgKzcyODUsMjEgQEAgc3ViIEdlbmVyYXRlQ29u
c3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgfQogICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sICR7Y2xhc3NGb3JUaGlzfSwgJHtjbGFzc05hbWV9
Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpO1xuIikgaWYgQ29uc3RydWN0b3JIYXNQcm9w
ZXJ0aWVzKCRpbnRlcmZhY2UpOwogCisgICAgbXkgQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcyA9
IEdldFJ1bnRpbWVFbmFibGVkU3RhdGljUHJvcGVydGllcygkaW50ZXJmYWNlKTsKKworICAgIGZv
cmVhY2ggbXkgJG9wZXJhdGlvbk9yQXR0cmlidXRlIChAcnVudGltZUVuYWJsZWRQcm9wZXJ0aWVz
KSB7CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5l
cmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb25PckF0dHJpYnV0ZSk7CisgICAgICAgIHB1
c2goJG91dHB1dEFycmF5LCAiI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0
aW9uYWxTdHJpbmc7CisgICAgICAgIG15ICRydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcg
PSBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZygkaW50ZXJmYWNlLCAkb3Bl
cmF0aW9uT3JBdHRyaWJ1dGUsICJ0cnVlIik7CisgICAgICAgIG15ICRuYW1lID0gJG9wZXJhdGlv
bk9yQXR0cmlidXRlLT5uYW1lOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYg
KCEke3J1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZ30pIHtcbiIpOworICAgICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIgICAgICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPihcIiRuYW1lXCIp
LCBzdHJsZW4oXCIkbmFtZVwiKSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
ICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQ
cm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJsZSk7XG4iKTsKKyAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xvYmFs
T2JqZWN0Lmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTtcbiIpOworICAgICAgICBwdXNoKEAk
b3V0cHV0QXJyYXksICIgICAgfVxuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNl
bmRpZlxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgIH0KKwogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIn1cblxuIik7CiAKICAgICBpZiAoSXNKU0J1aWx0aW5Db25zdHJ1Y3RvcigkaW50
ZXJmYWNlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAppbmRleCBiZGEzMmMzN2IwNDRi
ZmJkNzM0NmI3MjcwYTZjYWI0NDg4Yzg0ZWE1Li43MWI4YmRkZjY4ZGFlY2M3M2UyMjFjZTgzZDY2
MDczYzczOGI0ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0R2xvYmFsT2JqZWN0LmNwcApAQCAtNTYsNiArNTYs
OSBAQCBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0
SW5zdGFuY2VGdW5jdGlvblJlZ3VsYXJPcGVyYQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBK
U0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKICNl
bmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNDOjpFeGVjU3RhdGUqKTsKKyNlbmRpZgogSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rp
b25FbmFibGVkSW5TcGVjaWZpY1dvcmxkKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVu
YWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhlY1N0
YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2Jq
ZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVuUnVudGltZUZlYXR1
cmVzRW5hYmxlZChKU0M6OkV4ZWNTdGF0ZSopOwpAQCAtMTIyLDYgKzEyNSwxNyBAQCBzdGF0aWMg
Y29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1ZXNbXSA9CiB9
OwogCiBzdGF0aWMgY29uc3QgSGFzaFRhYmxlIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlID0geyA0
LCAxNSwgdHJ1ZSwgSlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVj
dFRhYmxlVmFsdWVzLCBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZUluZGV4IH07CisvKiBIYXNoIHRh
YmxlIGZvciBjb25zdHJ1Y3RvciAqLworCitzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlc1tdID0KK3sKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIHsgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBO
b0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpz
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljKSwgKGludHB0cl90KSAoMSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50
cmluc2ljLCB7IDAsIDAgfSB9LAorI2VuZGlmCit9OworCiB0ZW1wbGF0ZTw+IEpTVmFsdWUgSlNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OnByb3RvdHlwZUZvclN0cnVjdHVyZShKU0M6OlZN
JiB2bSwgY29uc3QgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKIHsKICAgICBVTlVT
RURfUEFSQU0odm0pOwpAQCAtMTMzLDYgKzE0Nyw3IEBAIHRlbXBsYXRlPD4gdm9pZCBKU1Rlc3RH
bG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBKU0RP
CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIGdsb2JhbE9i
amVjdC5nZXRQcm90b3R5cGVEaXJlY3Qodm0pLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5uYW1lLCBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoIlRlc3RHbG9iYWxPYmplY3Qi
X3MpKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5s
ZW5ndGgsIGpzTnVtYmVyKDApLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKKyAgICByZWlmeVN0YXRpY1Byb3BlcnRp
ZXModm0sIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rlc3RHbG9iYWxPYmplY3RDb25z
dHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CiB9CiAKIHRlbXBsYXRlPD4gY29uc3QgQ2xhc3NJ
bmZvIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJUZXN0R2xvYmFs
T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvcikgfTsKQEAgLTE3Niw2ICsxOTEsMTAg
QEAgdm9pZCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKICNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFy
ZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQogICAgICAgICBwdXREaXJlY3ROYXRp
dmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGll
bnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblB1YmxpY05h
bWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24sIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKKyNlbmRp
ZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCisgICAgICAgIHB1dERp
cmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+
KHZtLmNsaWVudERhdGEpLT5idWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
U3RhdGljUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYywgTm9JbnRyaW5zaWMsIGF0dHJpYnV0
ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkZ1bmN0aW9uKSkpOwogI2VuZGlmCiAgICAgaWYgKHdvcmxkRm9yRE9NT2JqZWN0KCp0aGlz
KS5zcGVjaWZpY1dvcmxkKCkpCiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9uKHZtLCB0
aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5idWlsdGlu
TmFtZXMoKS5lbmFibGVkSW5TcGVjaWZpY1dvcmxkUHVibGljTmFtZSgpLCAxLCBqc1Rlc3RHbG9i
YWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZCwgTm9JbnRyaW5z
aWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOwpAQCAtNDU2LDYgKzQ3NSwyNiBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lTwogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0Q29uc3Ry
dWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFRlc3RHbG9iYWxPYmplY3Q6OmVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJu
IElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpjYWxsU3RhdGljPGpzVGVzdEdsb2Jh
bE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
Qm9keT4oKnN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpOworfQorCisj
ZW5kaWYKKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2JhbE9i
amVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkQm9keShKU0M6OkV4ZWNT
dGF0ZSogc3RhdGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RHbG9iYWxPYmplY3Q+OjpD
bGFzc1BhcmFtZXRlciBjYXN0ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7
CiAgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggZTRkOTg4NTk3YWNmOTJk
NGZkNTU1YWQyZmJkZjg3ZTA0YTY2ZDU4Zi4uMGNhNWRiZGUwYzk3MzRlMzk4MWVjMTFjMWU3NWU3
ODg5YWJiN2JiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTE0MTksNiArMTQxOSw5IEBAIHRlbXBsYXRlPD4g
VGVzdE9iajo6Q29uZGl0aW9uYWxEaWN0aW9uYXJ5QyBjb252ZXJ0RGljdGlvbmFyeTxUZXN0T2Jq
OjpDb25kaXRpb25hCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEpTQzo6RW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24oSlNDOjpFeGVjU3RhdGUqKTsKICNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoSlNDOjpFeGVjU3Rh
dGUqKTsKKyNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9i
alByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVy
ZUVuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbldvcmxkU3BlY2lmaWNNZXRob2QoSlNDOjpF
eGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQ
cm90b3R5cGVGdW5jdGlvbkNhbGN1bGF0ZVNlY3JldFJlc3VsdChKU0M6OkV4ZWNTdGF0ZSopOwpA
QCAtMTY4NSw2ICsxNjg4LDEwIEBAIGJvb2wgc2V0SlNUZXN0T2JqUmVmbGVjdGVkQ3VzdG9tVVJM
QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTCiBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoSlNDOjpFeGVjU3Rh
dGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpT
VGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKICNlbmRpZgorI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCitKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9yRW5h
YmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uc3RydWN0
b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpF
bmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CisjZW5kaWYKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVu
Y29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CiBib29sIHNldEpTVGVzdE9ialR5cGVk
QXJyYXlBdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSk7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9iakN1c3RvbUF0dHIoSlND
OjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CkBA
IC0xODc5LDYgKzE4ODYsMTYgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdE9i
akNvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9CiAgICAgeyAic3RhdGljUmVhZE9ubHlMb25nQXR0
ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6Okdl
dFZhbHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNSZWFkT25seUxvbmdBdHRyKSwg
KGludHB0cl90KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkg
fSB9LAogICAgIHsgInN0YXRpY1N0cmluZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCks
IE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZh
bHVlRnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKSwgKGludHB0cl90
KSBzdGF0aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2Jq
Q29uc3RydWN0b3JTdGF0aWNTdHJpbmdBdHRyKSB9IH0sCiAgICAgeyAiVGVzdFN1Yk9iaiIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksIE5v
SW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVl
RnVuYz4oanNUZXN0T2JqQ29uc3RydWN0b3JUZXN0U3ViT2JqKSwgKGludHB0cl90KSBzdGF0aWNf
Y2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oMCkgfSB9LAorI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCisgICAgeyAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIsIHN0
YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19j
YXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMpLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMpIH0gfSwKKyNlbHNlCisgICAgeyAwLCAwLCBOb0ludHJp
bnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAg
eyAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpLCAoaW50cHRyX3QpICgxKSB9
IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYK
ICAgICB7ICJudWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCIsIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JG
dW5jdGlvbk51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kKSwgKGludHB0cl90KSAoMCkgfSB9LAog
ICAgIHsgInN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGlvbmFsQXJnIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpD
b25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcp
LCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJn
Iiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9u
KSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9u
Pihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQXJn
KSwgKGludHB0cl90KSAoMSkgfSB9LApAQCAtMTk0NSw2ICsxOTYyLDIwIEBAIHRlbXBsYXRlPD4g
dm9pZCBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMoVk0mIHZtLCBK
U0RPTUdsb2JhbE9iCiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lLCBq
c05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmcoIlRlc3RPYmplY3QiX3MpKSwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51
bSk7CiAgICAgcHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgsIGpzTnVtYmVy
KDIpLCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtKTsKICAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sIEpTVGVzdE9i
ajo6aW5mbygpLCBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzLCAqdGhpcyk7CisjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNo
YXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKKyAgICAgICAgYXV0byBwcm9w
ZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxj
b25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiksIHN0cmxlbigi
ZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIpKTsKKyAgICAgICAgVk06OkRlbGV0ZVBy
b3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVD
b25maWd1cmFibGUpOworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJvcGVydHkodGhpcywgZ2xv
YmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsKKyAgICB9CisjZW5kaWYKKyNp
ZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgeworICAgICAgICBhdXRvIHBy
b3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0
PGNvbnN0IExDaGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSwgc3RybGVu
KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIikpOworICAgICAgICBWTTo6RGVsZXRl
UHJvcGVydHlNb2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9y
ZUNvbmZpZ3VyYWJsZSk7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBn
bG9iYWxPYmplY3QuZ2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOworICAgIH0KKyNlbmRpZgog
fQogCiB0ZW1wbGF0ZTw+IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiVGVzdE9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0T2JqQ29uc3RydWN0b3IpIH07CkBAIC0zOTQ2LDYgKzM5
NzcsNDEgQEAgYm9vbCBzZXRKU1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKEV4ZWNT
dGF0ZSogc3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXMKIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9iakNvbnN0cnVjdG9y
RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY0dldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBU
aHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gdG9KUzxJRExE
T01TdHJpbmc+KHN0YXRlLCB0aHJvd1Njb3BlLCBUZXN0T2JqOjplbmFibGVkQXRSdW50aW1lQXR0
cmlidXRlU3RhdGljKCkpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0VuY29kZWRKU1ZhbHVl
IGpzVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyhFeGVj
U3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkKK3sK
KyAgICByZXR1cm4gSURMQXR0cmlidXRlPEpTVGVzdE9iaj46OmdldFN0YXRpYzxqc1Rlc3RPYmpD
b25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWNHZXR0ZXI+KCpzdGF0ZSwg
dGhpc1ZhbHVlLCAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIpOworfQorCisjZW5k
aWYKKworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCitzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNU
ZXN0T2JqQ29uc3RydWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljU2V0dGVyKEV4
ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUsIFRocm93U2NvcGUmIHRocm93U2NvcGUpCit7
CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGF1dG8gbmF0aXZlVmFsdWUgPSBj
b252ZXJ0PElETERPTVN0cmluZz4oc3RhdGUsIHZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGZhbHNlKTsKKyAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwoc3RhdGUs
IHRocm93U2NvcGUsIFsmXSB7CisgICAgICAgIHJldHVybiBUZXN0T2JqOjpzZXRFbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlU3RhdGljKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKKyAgICB9KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkVmFsdWUpCit7CisgICAgcmV0dXJuIElE
TEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpzZXRTdGF0aWM8c2V0SlNUZXN0T2JqQ29uc3RydWN0b3JF
bmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljU2V0dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwg
ZW5jb2RlZFZhbHVlLCAiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyIpOworfQorCisj
ZW5kaWYKKwogc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyR2V0
dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVGVzdE9iaiYgdGhpc09iamVjdCwgVGhyb3dTY29wZSYg
dGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CkBAIC01MjYzLDYg
KzUzMjksMjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5
cGVGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24KIAogI2VuZGlmCiAKKyNpZiBFTkFC
TEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljQm9k
eShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sK
KyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsK
KyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExMb25n
Pigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBUZXN0T2JqOjplbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKFdURk1vdmUodGVzdFBhcmFtKSk7CisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvblN0YXRpYyhFeGVjU3RhdGUqIHN0YXRlKQoreworICAgIHJldHVybiBJRExPcGVy
YXRpb248SlNUZXN0T2JqPjo6Y2FsbFN0YXRpYzxqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHk+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb25TdGF0aWMiKTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgSlND
OjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNp
ZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkQm9keShKU0M6OkV4ZWNTdGF0ZSogc3Rh
dGUsIHR5cGVuYW1lIElETE9wZXJhdGlvbjxKU1Rlc3RPYmo+OjpDbGFzc1BhcmFtZXRlciBjYXN0
ZWRUaGlzLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0R2xvYmFsT2JqZWN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbAppbmRleCA1MTAwZThhMmI4ZTgxNjBmM2Y0ZjRmMjIy
YThjYjA4Zjc4NzAwNjg2Li5mZDRmYjM4ZTc3YWUyNzliY2EyYWM4MzBhNTMxNzg2NjFjOWNhZTIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEds
b2JhbE9iamVjdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Rlc3RHbG9iYWxPYmplY3QuaWRsCkBAIC0zNCw2ICszNCw3IEBACiAgICAgdm9pZCByZWd1bGFy
T3BlcmF0aW9uKERPTVN0cmluZyB0ZXN0UGFyYW0pOwogICAgIFtDb25kaXRpb25hbD1URVNUX0ZF
QVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFtKTsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9G
RUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2b2lkIGVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb24obG9uZyB0ZXN0UGFyYW0pOworICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRV
UkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHN0YXRpYyB2b2lkIGVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb25TdGF0aWMobG9uZyB0ZXN0UGFyYW0pOwogCiAgICAgW0VuYWJsZWRGb3JX
b3JsZD1zcGVjaWZpY1dvcmxkXSB2b2lkIGVuYWJsZWRJblNwZWNpZmljV29ybGQobG9uZyB0ZXN0
UGFyYW0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVGVzdE9iai5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVz
dE9iai5pZGwKaW5kZXggNzFkZGZjNDg5ZWQyZDVkYTI1NmZiNWM0MzBiOTMyZWJkYzRmODcwYi4u
YmUwOTBhNDM4ZjM0ZGNkMzY2M2U4N2ZmYjA2NzY3NjI3YTUyZjExZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMTEwLDYgKzEx
MCw4IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAg
W0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZSZU
ZXN0RmVhdHVyZTFdIGF0dHJpYnV0ZSBET01TdHJpbmcgZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0
ZTsKICAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RG
ZWF0dXJlXSB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRE9NU3RyaW5nIHRlc3RQYXJh
bSk7CiAgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0UnVudGltZT1UZXN0
RmVhdHVyZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKGxvbmcgdGVzdFBhcmFtKTsK
KyAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0
dXJlXSBzdGF0aWMgdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKGxvbmcgdGVz
dFBhcmFtKTsKKyAgICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1l
PVRlc3RGZWF0dXJlXSBzdGF0aWMgYXR0cmlidXRlIERPTVN0cmluZyBlbmFibGVkQXRSdW50aW1l
QXR0cmlidXRlU3RhdGljOwogCiAgICAgW0VuYWJsZWRGb3JXb3JsZD1zb21lV29ybGQsIEVuYWJs
ZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5S
dW50aW1lRmVhdHVyZUVuYWJsZWQobG9uZyB0ZXN0UGFyYW0pOwogICAgIFtFbmFibGVkRm9yV29y
bGQ9c29tZVdvcmxkXSB2b2lkIHdvcmxkU3BlY2lmaWNNZXRob2QobG9uZyB0ZXN0UGFyYW0pOwpA
QCAtMjczLDcgKzI3NSw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1s
b3ciIH07CiAKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IGNh
Y2hlZEF0dHJpYnV0ZTE7CiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0cmlidXRl
IGFueSBjYWNoZWRBdHRyaWJ1dGUyOwotICAgIAorCiAgICAgYXR0cmlidXRlIGFueSBhbnlBdHRy
aWJ1dGU7CiAgICAgYXR0cmlidXRlIG9iamVjdCBvYmplY3RBdHRyaWJ1dGU7CiAKQEAgLTM5Nyw3
ICszOTksNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9Owog
CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8dm9pZD4gdGVzdFJlYWRPbmx5Vm9pZFBy
b21pc2VBdHRyaWJ1dGU7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFByb21pc2U8VGVzdE5vZGU+
IHRlc3RSZWFkT25seVByb21pc2VBdHRyaWJ1dGU7Ci0gICAgCisKICAgICAvLyBQcm9taXNlIGZ1
bmN0aW9uCiAgICAgUHJvbWlzZTx2b2lkPiB0ZXN0UHJvbWlzZUZ1bmN0aW9uKCk7CiAgICAgUHJv
bWlzZTx2b2lkPiB0ZXN0UHJvbWlzZUZ1bmN0aW9uV2l0aEZsb2F0QXJndW1lbnQoZmxvYXQgYSk7
CkBAIC00MzEsNyArNDMzLDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRh
LWxvdyIgfTsKICAgICBzZXJpYWxpemVyID0ge2NyZWF0ZSwgcmVhZE9ubHlTdHJpbmdBdHRyLCBl
bnVtQXR0ciwgbG9uZ0F0dHJ9OwogCiAgICAgdm9pZCBidWZmZXJTb3VyY2VQYXJhbWV0ZXIoQnVm
ZmVyU291cmNlIGRhdGEpOwotICAgIAorCiAgICAgbGVnYWN5Y2FsbGVyIHZvaWQgbGVnYWN5Q2Fs
bGVyTmFtZWQobG9uZyBwYXJhbSk7CiAgICAgbGVnYWN5Y2FsbGVyIGxvbmcgKERPTVN0cmluZyBw
YXJhbSk7CiAgICAgbGVnYWN5Y2FsbGVyIHZvaWQgKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350129</attachid>
            <date>2018-09-19 10:08:31 -0700</date>
            <delta_ts>2018-09-19 16:59:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189729-20180919100830.patch</filename>
            <type>text/plain</type>
            <size>26267</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZiY2MzMDE5MWYzNzg4
YzVmMzAyYzUwMGQ2NjMzYzljZTc2OGNkNi4uZDJmY2ViYmE3MDAyYWM3MjI4NjEyYTc1OWY3NTQ1
Yzk2N2JmNTRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA5LTE5ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBKUyBiaW5k
aW5ncyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQgRW5hYmxlZEF0UnVudGltZSBmb3Igc3RhdGlj
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTcyOQorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBFbmFibGVkQXRSdW50aW1lIHRvIHN0
YXRpYyBtZXRob2RzIGluIHRoZSBKUyBiaW5kaW5ncworICAgICAgICBjb2RlIGdlbmVyYXRvci4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkKToKKyAgICAgICAgKEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKEdldFJ1bnRpbWVFbmFibGVk
U3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0
aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY0dldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGVTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0
YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKIDIwMTgtMDkt
MTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBzZW5kZXIvcmVjZWl2ZXIgZ2V0U3RhdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggN2Y0YWMxMGM5ZThhZjhiZGM2ZGJj
ODY1Y2M3YmJmZTRhNjQyZjNkYy4uMGVmNTYxMmM2ODdlYTNiY2JjMTYwYzc0MjM0ZDEwNDUyNWJh
OWJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTM2NDEsNyArMzY0MSw3IEBAIHN1YiBUb01ldGhvZE5hbWUKIAogc3Vi
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogewotICAg
IG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGNvbmp1bmN0cykgPSBAXzsKKyAgICBteSAoJGlu
dGVyZmFjZSwgJGNvbnRleHQsICRjb25qdW5jdHMsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBf
OwogCiAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEV4cG9zZWQuIikgaWYgJGNv
bnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9IGVxICJWQUxVRV9JU19NSVNTSU5H
IjsKIApAQCAtMzY1NSwxMCArMzY1NSwxMiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkCiAgICAgICAgICRleHBvc2VkID0gQCRleHBvc2VkWzBd
OwogICAgIH0KIAorICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAoJGdsb2JhbE9iamVjdElzUGFy
YW0/ICImZ2xvYmFsT2JqZWN0IiA6ICJnbG9iYWxPYmplY3QoKSIpOworCiAgICAgaWYgKCRleHBv
c2VkIGVxICJXaW5kb3ciKSB7Ci0gICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNEb2N1bWVudCgpIik7CisgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzRG9jdW1lbnQoKSIpOwogICAgIH0gZWxzaWYgKCRleHBvc2VkIGVxICJX
b3JrZXIiKSB7Ci0gICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxP
YmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNXb3Jr
ZXJHbG9iYWxTY29wZSgpIik7CisgICAgICAgIHB1c2goQCRjb25qdW5jdHMsICJqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmlzV29ya2VyR2xvYmFsU2NvcGUoKSIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIGFzc2VydCgiVW5yZWNvZ25pemVkIHZhbHVlICciIC4gRHVtcGVyKCRjb250ZXh0LT5leHRl
bmRlZEF0dHJpYnV0ZXMtPntFeHBvc2VkfSkgLiAiJyBmb3IgdGhlIEV4cG9zZWQgZXh0ZW5kZWQg
YXR0cmlidXRlIG9uICciIC4gcmVmKCRjb250ZXh0KSAuICInLiIpOwogICAgIH0KQEAgLTM2NzEs
MTUgKzM2NzMsMTcgQEAgc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5n
Rm9yRXhwb3NlZAogIyAoZS5nLiBJRExJbnRlcmZhY2UsIElETEF0dHJpYnV0ZSwgSURMT3BlcmF0
aW9uLCBJRExJdGVyYWJsZSwgZXRjLikKIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRp
b25hbFN0cmluZwogewotICAgIG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCkgPSBAXzsKKyAgICBt
eSAoJGludGVyZmFjZSwgJGNvbnRleHQsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBfOwogCiAg
ICAgbXkgQGNvbmp1bmN0czsKKyAgICBteSAkZ2xvYmFsT2JqZWN0UHRyID0gKCRnbG9iYWxPYmpl
Y3RJc1BhcmFtPyAiJmdsb2JhbE9iamVjdCIgOiAiZ2xvYmFsT2JqZWN0KCkiKTsKICAgICAKICAg
ICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1NlY3VyZUNvbnRleHR9KSB7CiAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiKTsKIAog
ICAgICAgICBpZiAoJGNvbnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnRleHRIYXNTZXJ2
aWNlV29ya2VyU2NoZW1lfSkgewotICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiKGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5pc1NlY3VyZUNvbnRleHQoKSB8fCBqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihn
bG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aGFzU2VydmljZVdvcmtl
clNjaGVtZSgpKSIpOworICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiKGpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNTZWN1cmVDb250ZXh0KCkiCisgICAgICAgICAgICAgICAgLiAifHwganND
YXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oIiAuICRnbG9iYWxPYmplY3RQdHIgLiAiKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5oYXNTZXJ2aWNlV29ya2VyU2NoZW1lKCkpIik7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aXNT
ZWN1cmVDb250ZXh0KCkiKTsKICAgICAgICAgfQpAQCAtMzY4Nyw3ICszNjkxLDcgQEAgc3ViIEdl
bmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nCiAgICAgICAgIGlmICgkY29udGV4
dC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q29udGV4dEhhc1NlcnZpY2VXb3JrZXJTY2hlbWV9KSB7
CiAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5o
Iik7CiAKLSAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5oYXNTZXJ2
aWNlV29ya2VyU2NoZW1lKCkiKTsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aGFzU2VydmljZVdvcmtlclNjaGVtZSgpIik7CiAgICAgICAgIH0K
ICAgICB9CiAKQEAgLTM3MTMsNyArMzcxNyw3IEBAIHN1YiBHZW5lcmF0ZVJ1bnRpbWVFbmFibGVD
b25kaXRpb25hbFN0cmluZwogCiAgICAgICAgIG15IEBmbGFncyA9IHNwbGl0KC8mLywgJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0VuYWJsZWRCeVNldHRpbmd9KTsKICAgICAgICAgZm9y
ZWFjaCBteSAkZmxhZyAoQGZsYWdzKSB7Ci0gICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJk
b3duY2FzdDxEb2N1bWVudD4oanNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFsT2JqZWN0
KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLiIgLiBUb01ldGhvZE5h
bWUoJGZsYWcpIC4gIkVuYWJsZWQoKSIpOworICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAi
ZG93bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFs
T2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSktPnNldHRpbmdzKCkuIiAu
IFRvTWV0aG9kTmFtZSgkZmxhZykgLiAiRW5hYmxlZCgpIik7CiAgICAgICAgIH0KICAgICB9CiAK
QEAgLTcxODUsNiArNzE4OSw0MyBAQCBzdWIgQ29uc3RydWN0b3JIYXNQcm9wZXJ0aWVzCiAgICAg
cmV0dXJuIDA7CiB9CiAKK3N1YiBHZXRSdW50aW1lRW5hYmxlZFN0YXRpY1Byb3BlcnRpZXMKK3sK
KyAgICBteSAoJGludGVyZmFjZSkgPSBAXzsKKworICAgIG15IEBydW50aW1lRW5hYmxlZFByb3Bl
cnRpZXMgPSAoKTsKKworICAgIG15IEBhdHRyaWJ1dGVzID0gQHskaW50ZXJmYWNlLT5hdHRyaWJ1
dGVzfTsKKyAgICBwdXNoKEBhdHRyaWJ1dGVzLCBAeyRpbnRlcmZhY2UtPm1hcExpa2UtPmF0dHJp
YnV0ZXN9KSBpZiAkaW50ZXJmYWNlLT5tYXBMaWtlOworCisgICAgZm9yZWFjaCBteSAkYXR0cmli
dXRlIChAYXR0cmlidXRlcykgeworICAgICAgICBuZXh0IGlmIEF0dHJpYnV0ZVNob3VsZEJlT25J
bnN0YW5jZSgkaW50ZXJmYWNlLCAkYXR0cmlidXRlKSAhPSAwOworICAgICAgICBuZXh0IGlmIG5v
dCAkYXR0cmlidXRlLT5pc1N0YXRpYzsKKworICAgICAgICBpZiAoJGF0dHJpYnV0ZS0+ZXh0ZW5k
ZWRBdHRyaWJ1dGVzLT57RW5hYmxlZEF0UnVudGltZX0pIHsKKyAgICAgICAgICAgIHB1c2goQHJ1
bnRpbWVFbmFibGVkUHJvcGVydGllcywgJGF0dHJpYnV0ZSk7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBteSBAb3BlcmF0aW9ucyA9IEB7JGludGVyZmFjZS0+b3BlcmF0aW9uc307CisgICAgcHVz
aChAb3BlcmF0aW9ucywgQHskaW50ZXJmYWNlLT5pdGVyYWJsZS0+b3BlcmF0aW9uc30pIGlmIElz
S2V5VmFsdWVJdGVyYWJsZUludGVyZmFjZSgkaW50ZXJmYWNlKTsKKyAgICBwdXNoKEBvcGVyYXRp
b25zLCBAeyRpbnRlcmZhY2UtPm1hcExpa2UtPm9wZXJhdGlvbnN9KSBpZiAkaW50ZXJmYWNlLT5t
YXBMaWtlOworICAgIHB1c2goQG9wZXJhdGlvbnMsIEB7JGludGVyZmFjZS0+c2VyaWFsaXphYmxl
LT5vcGVyYXRpb25zfSkgaWYgJGludGVyZmFjZS0+c2VyaWFsaXphYmxlOworICAgIGZvcmVhY2gg
bXkgJG9wZXJhdGlvbiAoQG9wZXJhdGlvbnMpIHsKKyAgICAgICAgbmV4dCBpZiAoJG9wZXJhdGlv
bi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHJpdmF0ZUlkZW50aWZpZXJ9IGFuZCBub3QgJG9wZXJh
dGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UHVibGljSWRlbnRpZmllcn0pOworICAgICAgICBu
ZXh0IGlmICRvcGVyYXRpb24tPntvdmVybG9hZEluZGV4fSAmJiAkb3BlcmF0aW9uLT57b3Zlcmxv
YWRJbmRleH0gPiAxOworICAgICAgICBuZXh0IGlmIE9wZXJhdGlvblNob3VsZEJlT25JbnN0YW5j
ZSgkaW50ZXJmYWNlLCAkb3BlcmF0aW9uKSAhPSAwOworICAgICAgICBuZXh0IGlmICRvcGVyYXRp
b24tPm5hbWUgZXEgIltTeW1ib2wuSXRlcmF0b3JdIjsKKyAgICAgICAgbmV4dCBpZiBub3QgJG9w
ZXJhdGlvbi0+aXNTdGF0aWM7CisKKyAgICAgICAgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0VuYWJsZWRBdFJ1bnRpbWV9KSB7CisgICAgICAgICAgICBwdXNoKEBydW50aW1l
RW5hYmxlZFByb3BlcnRpZXMsICRvcGVyYXRpb24pOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXM7Cit9CisKIHN1YiBHZW5lcmF0ZUNvbnN0
cnVjdG9ySGVscGVyTWV0aG9kcwogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRjbGFzc05hbWUs
ICRwcm90b0NsYXNzTmFtZSwgJHZpc2libGVJbnRlcmZhY2VOYW1lLCAkaW50ZXJmYWNlLCAkZ2Vu
ZXJhdGluZ05hbWVkQ29uc3RydWN0b3IpID0gQF87CkBAIC03MjQ0LDYgKzcyODUsMjEgQEAgc3Vi
IEdlbmVyYXRlQ29uc3RydWN0b3JIZWxwZXJNZXRob2RzCiAgICAgfQogICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICByZWlmeVN0YXRpY1Byb3BlcnRpZXModm0sICR7Y2xhc3NGb3JUaGlzfSwg
JHtjbGFzc05hbWV9Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpO1xuIikgaWYgQ29uc3Ry
dWN0b3JIYXNQcm9wZXJ0aWVzKCRpbnRlcmZhY2UpOwogCisgICAgbXkgQHJ1bnRpbWVFbmFibGVk
UHJvcGVydGllcyA9IEdldFJ1bnRpbWVFbmFibGVkU3RhdGljUHJvcGVydGllcygkaW50ZXJmYWNl
KTsKKworICAgIGZvcmVhY2ggbXkgJG9wZXJhdGlvbk9yQXR0cmlidXRlIChAcnVudGltZUVuYWJs
ZWRQcm9wZXJ0aWVzKSB7CisgICAgICAgIG15ICRjb25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2Vu
ZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRvcGVyYXRpb25PckF0dHJpYnV0ZSk7
CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOworICAgICAgICBteSAkcnVudGltZUVuYWJsZUNvbmRp
dGlvbmFsU3RyaW5nID0gR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmcoJGlu
dGVyZmFjZSwgJG9wZXJhdGlvbk9yQXR0cmlidXRlLCAidHJ1ZSIpOworICAgICAgICBteSAkbmFt
ZSA9ICRvcGVyYXRpb25PckF0dHJpYnV0ZS0+bmFtZTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFy
cmF5LCAiICAgIGlmICghJHtydW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmd9KSB7XG4iKTsK
KyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oXCIkbmFtZVwiKSwgc3RybGVuKFwiJG5hbWVcIikpO1xuIik7CisgICAgICAgIHB1c2goQCRv
dXRwdXRBcnJheSwgIiAgICAgICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZt
LCBWTTo6RGVsZXRlUHJvcGVydHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpO1xuIik7CisgICAg
ICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5
KHRoaXMsIGdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7XG4iKTsKKyAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpOworICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKKyAgICB9CisKICAg
ICBwdXNoKEAkb3V0cHV0QXJyYXksICJ9XG5cbiIpOwogCiAgICAgaWYgKElzSlNCdWlsdGluQ29u
c3RydWN0b3IoJGludGVyZmFjZSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKaW5kZXgg
YmRhMzJjMzdiMDQ0YmZiZDczNDZiNzI3MGE2Y2FiNDQ4OGM4NGVhNS4uNzFiOGJkZGY2OGRhZWNj
NzNlMjIxY2U4M2Q2NjA3M2M3MzhiNGVjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVjdC5jcHAK
QEAgLTU2LDYgKzU2LDkgQEAgSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25SZWd1bGFyT3BlcmEKICNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2Jh
bE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6RXhl
Y1N0YXRlKik7CiAjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorSlNDOjpFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rp
b25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKEpTQzo6RXhlY1N0YXRlKik7CisjZW5k
aWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJ
bnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZChKU0M6OkV4ZWNTdGF0ZSopOwog
SlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdEdsb2JhbE9iamVjdEluc3Rh
bmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxl
ZChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hl
blJ1bnRpbWVGZWF0dXJlc0VuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKQEAgLTEyMiw2ICsxMjUs
MTcgQEAgc3RhdGljIGNvbnN0IEhhc2hUYWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxl
VmFsdWVzW10gPQogfTsKIAogc3RhdGljIGNvbnN0IEhhc2hUYWJsZSBKU1Rlc3RHbG9iYWxPYmpl
Y3RUYWJsZSA9IHsgNCwgMTUsIHRydWUsIEpTVGVzdEdsb2JhbE9iamVjdDo6aW5mbygpLCBKU1Rl
c3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlcywgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVJbmRleCB9
OworLyogSGFzaCB0YWJsZSBmb3IgY29uc3RydWN0b3IgKi8KKworc3RhdGljIGNvbnN0IEhhc2hU
YWJsZVZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFibGVWYWx1ZXNbXSA9Cit7
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICB7ICJlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFJhd05hdGl2
ZUZ1bmN0aW9uPihqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0
UnVudGltZU9wZXJhdGlvblN0YXRpYyksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyNlbHNlCisgICAg
eyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgorfTsKKwogdGVtcGxhdGU8
PiBKU1ZhbHVlIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yOjpwcm90b3R5cGVGb3JTdHJ1
Y3R1cmUoSlNDOjpWTSYgdm0sIGNvbnN0IEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3Qp
CiB7CiAgICAgVU5VU0VEX1BBUkFNKHZtKTsKQEAgLTEzMyw2ICsxNDcsNyBAQCB0ZW1wbGF0ZTw+
IHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVz
KFZNJiB2bSwgSlNETwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90
eXBlLCBnbG9iYWxPYmplY3QuZ2V0UHJvdG90eXBlRGlyZWN0KHZtKSwgSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwg
SlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0u
cHJvcGVydHlOYW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKCJUZXN0
R2xvYmFsT2JqZWN0Il9zKSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlND
OjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+bGVuZ3RoLCBqc051bWJlcigwKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkgfCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CisgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xv
YmFsT2JqZWN0Q29uc3RydWN0b3JUYWJsZVZhbHVlcywgKnRoaXMpOwogfQogCiB0ZW1wbGF0ZTw+
IGNvbnN0IENsYXNzSW5mbyBKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6c19pbmZvID0g
eyAiVGVzdEdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoSlNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3IpIH07CkBAIC0x
NzYsNiArMTkxLDEwIEBAIHZvaWQgSlNUZXN0R2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0pCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKICAgICBpZiAoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKICAgICAgICAg
cHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnRE
YXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVPcGVy
YXRpb25QdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdEluc3RhbmNlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVj
dHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pKSk7CisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIGlmIChSdW50aW1l
RW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKQor
ICAgICAgICBwdXREaXJlY3ROYXRpdmVGdW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNW
TUNsaWVudERhdGEqPih2bS5jbGllbnREYXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvblN0YXRpY1B1YmxpY05hbWUoKSwgMSwganNUZXN0R2xvYmFsT2JqZWN0Q29u
c3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMsIE5vSW50cmlu
c2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlBy
b3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKICNlbmRpZgogICAgIGlmICh3b3JsZEZvckRP
TU9iamVjdCgqdGhpcykuc3BlY2lmaWNXb3JsZCgpKQogICAgICAgICBwdXREaXJlY3ROYXRpdmVG
dW5jdGlvbih2bSwgdGhpcywgc3RhdGljX2Nhc3Q8SlNWTUNsaWVudERhdGEqPih2bS5jbGllbnRE
YXRhKS0+YnVpbHRpbk5hbWVzKCkuZW5hYmxlZEluU3BlY2lmaWNXb3JsZFB1YmxpY05hbWUoKSwg
MSwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29y
bGQsIE5vSW50cmluc2ljLCBhdHRyaWJ1dGVzRm9yU3RydWN0dXJlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbikpKTsKQEAgLTQ1Niw2ICs0NzUs
MjYgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU8KIAogI2VuZGlmCiAKKyNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQorc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdEdsb2Jh
bE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
Qm9keShKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkK
K3sKKyAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3Bl
KTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUtPmFyZ3VtZW50Q291bnQoKSA8IDEpKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKHN0YXRlLCB0aHJvd1Njb3BlLCBjcmVhdGVOb3RFbm91Z2hB
cmd1bWVudHNFcnJvcihzdGF0ZSkpOworICAgIGF1dG8gdGVzdFBhcmFtID0gY29udmVydDxJRExM
b25nPigqc3RhdGUsIHN0YXRlLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBUZXN0R2xvYmFs
T2JqZWN0OjplbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKFdURk1vdmUodGVzdFBhcmFt
KSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKK30KKworRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1
bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhFeGVjU3RhdGUqIHN0YXRlKQor
eworICAgIHJldHVybiBJRExPcGVyYXRpb248SlNUZXN0R2xvYmFsT2JqZWN0Pjo6Y2FsbFN0YXRp
Yzxqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvblN0YXRpY0JvZHk+KCpzdGF0ZSwgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0
aWMiKTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZEJv
ZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0R2xv
YmFsT2JqZWN0Pjo6Q2xhc3NQYXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQogewogICAgIFVOVVNFRF9QQVJBTShzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCmluZGV4IGU0
ZDk4ODU5N2FjZjkyZDRmZDU1NWFkMmZiZGY4N2UwNGE2NmQ1OGYuLjBjYTVkYmRlMGM5NzM0ZTM5
ODFlYzExYzFlNzVlNzg4OWFiYjdiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwCkBAIC0xNDE5LDYgKzE0MTksOSBA
QCB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkNvbmRpdGlvbmFsRGljdGlvbmFyeUMgY29udmVydERpY3Rp
b25hcnk8VGVzdE9iajo6Q29uZGl0aW9uYQogI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCiBKU0M6
OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25F
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKEpTQzo6RXhlY1N0YXRlKik7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoVEVTVF9GRUFUVVJFKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGlj
KEpTQzo6RXhlY1N0YXRlKik7CisjZW5kaWYKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRXaGVu
UnVudGltZUZlYXR1cmVFbmFibGVkKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25Xb3JsZFNwZWNpZmlj
TWV0aG9kKEpTQzo6RXhlY1N0YXRlKik7CiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25DYWxjdWxhdGVTZWNyZXRSZXN1bHQoSlNDOjpF
eGVjU3RhdGUqKTsKQEAgLTE2ODUsNiArMTY4OCwxMCBAQCBib29sIHNldEpTVGVzdE9ialJlZmxl
Y3RlZEN1c3RvbVVSTEF0dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
UwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRl
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUp
OwogYm9vbCBzZXRKU1Rlc3RPYmpFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpFbmNvZGVkSlNWYWx1ZSk7CiAjZW5kaWYK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
b25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7Citib29sIHNldEpTVGVz
dE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyhKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOworI2VuZGlm
CiBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdE9ialR5cGVkQXJyYXlBdHRyKEpTQzo6RXhlY1N0
YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOwogYm9vbCBzZXRK
U1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpD
dXN0b21BdHRyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9w
ZXJ0eU5hbWUpOwpAQCAtMTg3OSw2ICsxODg2LDE2IEBAIHN0YXRpYyBjb25zdCBIYXNoVGFibGVW
YWx1ZSBKU1Rlc3RPYmpDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQogICAgIHsgInN0YXRpY1Jl
YWRPbmx5TG9uZ0F0dHIiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljUmVhZE9u
bHlMb25nQXR0ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRW
YWx1ZUZ1bmM+KDApIH0gfSwKICAgICB7ICJzdGF0aWNTdHJpbmdBdHRyIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KDApLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0
ciksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+
KHNldEpTVGVzdE9iakNvbnN0cnVjdG9yU3RhdGljU3RyaW5nQXR0cikgfSB9LAogICAgIHsgIlRl
c3RTdWJPYmoiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVydHlT
bG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yVGVzdFN1Yk9iaiksIChpbnRw
dHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90OjpQdXRWYWx1ZUZ1bmM+KDApIH0gfSwK
KyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorICAgIHsgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGVTdGF0aWMiLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oMCksIE5vSW50cmluc2ljLCB7IChpbnRw
dHJfdClzdGF0aWNfY2FzdDxQcm9wZXJ0eVNsb3Q6OkdldFZhbHVlRnVuYz4oanNUZXN0T2JqQ29u
c3RydWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljKSwgKGludHB0cl90KSBzdGF0
aWNfY2FzdDxQdXRQcm9wZXJ0eVNsb3Q6OlB1dFZhbHVlRnVuYz4oc2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljKSB9IH0sCisjZWxzZQorICAgIHsg
MCwgMCwgTm9JbnRyaW5zaWMsIHsgMCwgMCB9IH0sCisjZW5kaWYKKyNpZiBFTkFCTEUoVEVTVF9G
RUFUVVJFKQorICAgIHsgImVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKSwgKGlu
dHB0cl90KSAoMSkgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAsIDAg
fSB9LAorI2VuZGlmCiAgICAgeyAibnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QiLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25OdWxsYWJsZVN0cmluZ1N0YXRpY01ldGhvZCksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
ZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlv
biksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlv
bj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0Fu
ZE9wdGlvbmFsQXJnKSwgKGludHB0cl90KSAoMCkgfSB9LAogICAgIHsgInN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FyZyIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdO
YXRpdmVGdW5jdGlvbj4oanNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdp
dGhDYWxsYmFja0FyZyksIChpbnRwdHJfdCkgKDEpIH0gfSwKQEAgLTE5NDUsNiArMTk2MiwyMCBA
QCB0ZW1wbGF0ZTw+IHZvaWQgSlNUZXN0T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0
aWVzKFZNJiB2bSwgSlNET01HbG9iYWxPYgogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlO
YW1lcy0+bmFtZSwganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nKCJUZXN0T2JqZWN0Il9z
KSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0pOwogICAgIHB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+bGVu
Z3RoLCBqc051bWJlcigyKSwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkgfCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSk7CiAgICAgcmVpZnlTdGF0aWNQcm9wZXJ0aWVz
KHZtLCBKU1Rlc3RPYmo6OmluZm8oKSwgSlNUZXN0T2JqQ29uc3RydWN0b3JUYWJsZVZhbHVlcywg
KnRoaXMpOworI2lmIEVOQUJMRShURVNUX0ZFQVRVUkUpCisgICAgaWYgKCFSdW50aW1lRW5hYmxl
ZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CisgICAg
ICAgIGF1dG8gcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50
ZXJwcmV0X2Nhc3Q8Y29uc3QgTENoYXIqPigiZW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRp
YyIpLCBzdHJsZW4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSk7CisgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3Bl
cnR5KHRoaXMsIGdsb2JhbE9iamVjdC5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7CisgICAg
fQorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoIVJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpIHsKKyAg
ICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZ2bSwgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KCJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3Rh
dGljIiksIHN0cmxlbigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpKTsKKyAgICAg
ICAgVk06OkRlbGV0ZVByb3BlcnR5TW9kZVNjb3BlIHNjb3BlKHZtLCBWTTo6RGVsZXRlUHJvcGVy
dHlNb2RlOjpJZ25vcmVDb25maWd1cmFibGUpOworICAgICAgICBKU09iamVjdDo6ZGVsZXRlUHJv
cGVydHkodGhpcywgZ2xvYmFsT2JqZWN0Lmdsb2JhbEV4ZWMoKSwgcHJvcGVydHlOYW1lKTsKKyAg
ICB9CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0T2JqQ29u
c3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RPYmplY3QiLCAmQmFzZTo6c19pbmZvLCBudWxscHRy
LCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVzdE9iakNvbnN0cnVjdG9yKSB9OwpA
QCAtMzk0Niw2ICszOTc3LDQxIEBAIGJvb2wgc2V0SlNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZShFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzCiAKICNlbmRpZgog
CisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RP
YmpDb25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWNHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IHRvSlM8SURMRE9NU3RyaW5nPihzdGF0ZSwgdGhyb3dTY29wZSwgVGVzdE9iajo6ZW5hYmxl
ZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYygpKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitF
bmNvZGVkSlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGVTdGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUpCit7CisgICAgcmV0dXJuIElETEF0dHJpYnV0ZTxKU1Rlc3RPYmo+OjpnZXRTdGF0
aWM8anNUZXN0T2JqQ29uc3RydWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljR2V0
dGVyPigqc3RhdGUsIHRoaXNWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMi
KTsKK30KKworI2VuZGlmCisKKyNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQorc3RhdGljIGlubGlu
ZSBib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0
YXRpY1NldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBUaHJvd1Njb3BlJiB0
aHJvd1Njb3BlKQoreworICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKKyAgICBhdXRvIG5h
dGl2ZVZhbHVlID0gY29udmVydDxJRExET01TdHJpbmc+KHN0YXRlLCB2YWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7CisgICAgQXR0cmlidXRlU2V0dGVy
OjpjYWxsKHN0YXRlLCB0aHJvd1Njb3BlLCBbJl0geworICAgICAgICByZXR1cm4gVGVzdE9iajo6
c2V0RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYyhXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7
CisgICAgfSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgc2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljKEV4ZWNTdGF0ZSogc3RhdGUsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZFZhbHVlKQorewor
ICAgIHJldHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6c2V0U3RhdGljPHNldEpTVGVzdE9i
akNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY1NldHRlcj4oKnN0YXRl
LCB0aGlzVmFsdWUsIGVuY29kZWRWYWx1ZSwgImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0
aWMiKTsKK30KKworI2VuZGlmCisKIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RPYmpUeXBl
ZEFycmF5QXR0ckdldHRlcihFeGVjU3RhdGUmIHN0YXRlLCBKU1Rlc3RPYmomIHRoaXNPYmplY3Qs
IFRocm93U2NvcGUmIHRocm93U2NvcGUpCiB7CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUp
OwpAQCAtNTI2Myw2ICs1MzI5LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNU
ZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uCiAKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVk
SlNWYWx1ZSBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpY0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHRo
cm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0o
dGhyb3dTY29wZSk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAx
KSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRl
Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsKKyAgICBhdXRvIHRlc3RQYXJhbSA9IGNv
bnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAg
VGVzdE9iajo6ZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhXVEZNb3ZlKHRlc3RQYXJh
bSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0Vu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICBy
ZXR1cm4gSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OmNhbGxTdGF0aWM8anNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigqc3RhdGUs
ICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIik7Cit9CisKKyNlbmRpZgorCiBzdGF0
aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25F
bmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZEJvZHkoSlNDOjpF
eGVjU3RhdGUqIHN0YXRlLCB0eXBlbmFtZSBJRExPcGVyYXRpb248SlNUZXN0T2JqPjo6Q2xhc3NQ
YXJhbWV0ZXIgY2FzdGVkVGhpcywgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQogewogICAg
IFVOVVNFRF9QQVJBTShzdGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdEdsb2JhbE9iamVjdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEdsb2JhbE9iamVjdC5pZGwKaW5kZXggNTEwMGU4YTJiOGU4
MTYwZjNmNGY0ZjIyMmE4Y2IwOGY3ODcwMDY4Ni4uZmQ0ZmIzOGU3N2FlMjc5YmNhMmFjODMwYTUz
MTc4NjYxYzljYWUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RHbG9iYWxPYmplY3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbApAQCAtMzQsNiArMzQsNyBAQAogICAg
IHZvaWQgcmVndWxhck9wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFtKTsKICAgICBbQ29uZGl0
aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2b2lkIGVu
YWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24oRE9NU3RyaW5nIHRlc3RQYXJhbSk7CiAgICAgW0NvbmRp
dGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCBl
bmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKGxvbmcgdGVzdFBhcmFtKTsKKyAgICBbQ29uZGl0aW9u
YWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSBzdGF0aWMgdm9p
ZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljKGxvbmcgdGVzdFBhcmFtKTsKIAogICAg
IFtFbmFibGVkRm9yV29ybGQ9c3BlY2lmaWNXb3JsZF0gdm9pZCBlbmFibGVkSW5TcGVjaWZpY1dv
cmxkKGxvbmcgdGVzdFBhcmFtKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Rlc3RPYmouaWRsCmluZGV4IDcxZGRmYzQ4OWVkMmQ1ZGEyNTZmYjVjNDMwYjkz
MmViZGM0Zjg3MGIuLmJlMDkwYTQzOGYzNGRjZDM2NjNlODdmZmIwNjc2NzYyN2E1MmYxMWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwK
QEAgLTExMCw2ICsxMTAsOCBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEt
bG93IiB9OwogICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9
VGVzdEZlYXR1cmUmVGVzdEZlYXR1cmUxXSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGU7CiAgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0
UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uKERPTVN0
cmluZyB0ZXN0UGFyYW0pOwogICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRB
dFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihsb25n
IHRlc3RQYXJhbSk7CisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxlZEF0UnVu
dGltZT1UZXN0RmVhdHVyZV0gc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0
YXRpYyhsb25nIHRlc3RQYXJhbSk7CisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5h
YmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gc3RhdGljIGF0dHJpYnV0ZSBET01TdHJpbmcgZW5h
YmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpYzsKIAogICAgIFtFbmFibGVkRm9yV29ybGQ9c29t
ZVdvcmxkLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2b2lkIGVuYWJsZWRJblNwZWNp
ZmljV29ybGRXaGVuUnVudGltZUZlYXR1cmVFbmFibGVkKGxvbmcgdGVzdFBhcmFtKTsKICAgICBb
RW5hYmxlZEZvcldvcmxkPXNvbWVXb3JsZF0gdm9pZCB3b3JsZFNwZWNpZmljTWV0aG9kKGxvbmcg
dGVzdFBhcmFtKTsKQEAgLTI3Myw3ICsyNzUsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhp
Z2giLCAia2luZGEtbG93IiB9OwogCiAgICAgW0NhY2hlZEF0dHJpYnV0ZV0gcmVhZG9ubHkgYXR0
cmlidXRlIGFueSBjYWNoZWRBdHRyaWJ1dGUxOwogICAgIFtDYWNoZWRBdHRyaWJ1dGVdIHJlYWRv
bmx5IGF0dHJpYnV0ZSBhbnkgY2FjaGVkQXR0cmlidXRlMjsKLSAgICAKKwogICAgIGF0dHJpYnV0
ZSBhbnkgYW55QXR0cmlidXRlOwogICAgIGF0dHJpYnV0ZSBvYmplY3Qgb2JqZWN0QXR0cmlidXRl
OwogCkBAIC0zOTcsNyArMzk5LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtp
bmRhLWxvdyIgfTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9taXNlPHZvaWQ+IHRlc3RS
ZWFkT25seVZvaWRQcm9taXNlQXR0cmlidXRlOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBQcm9t
aXNlPFRlc3ROb2RlPiB0ZXN0UmVhZE9ubHlQcm9taXNlQXR0cmlidXRlOwotICAgIAorCiAgICAg
Ly8gUHJvbWlzZSBmdW5jdGlvbgogICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlv
bigpOwogICAgIFByb21pc2U8dm9pZD4gdGVzdFByb21pc2VGdW5jdGlvbldpdGhGbG9hdEFyZ3Vt
ZW50KGZsb2F0IGEpOwpAQCAtNDMxLDcgKzQzMyw3IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAi
aGlnaCIsICJraW5kYS1sb3ciIH07CiAgICAgc2VyaWFsaXplciA9IHtjcmVhdGUsIHJlYWRPbmx5
U3RyaW5nQXR0ciwgZW51bUF0dHIsIGxvbmdBdHRyfTsKIAogICAgIHZvaWQgYnVmZmVyU291cmNl
UGFyYW1ldGVyKEJ1ZmZlclNvdXJjZSBkYXRhKTsKLSAgICAKKwogICAgIGxlZ2FjeWNhbGxlciB2
b2lkIGxlZ2FjeUNhbGxlck5hbWVkKGxvbmcgcGFyYW0pOwogICAgIGxlZ2FjeWNhbGxlciBsb25n
IChET01TdHJpbmcgcGFyYW0pOwogICAgIGxlZ2FjeWNhbGxlciB2b2lkICgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350161</attachid>
            <date>2018-09-19 16:59:27 -0700</date>
            <delta_ts>2018-09-20 09:53:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189729-20180919165926.patch</filename>
            <type>text/plain</type>
            <size>26247</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZiY2MzMDE5MWYzNzg4
YzVmMzAyYzUwMGQ2NjMzYzljZTc2OGNkNi4uZDJmY2ViYmE3MDAyYWM3MjI4NjEyYTc1OWY3NTQ1
Yzk2N2JmNTRjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA5LTE5ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBKUyBiaW5k
aW5ncyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQgRW5hYmxlZEF0UnVudGltZSBmb3Igc3RhdGlj
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTcyOQorCisgICAgICAgIEFkZCBzdXBwb3J0IGZvciBFbmFibGVkQXRSdW50aW1lIHRvIHN0
YXRpYyBtZXRob2RzIGluIHRoZSBKUyBiaW5kaW5ncworICAgICAgICBjb2RlIGdlbmVyYXRvci4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1l
RW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkKToKKyAgICAgICAgKEdlbmVyYXRlUnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKEdldFJ1bnRpbWVFbmFibGVk
U3RhdGljUHJvcGVydGllcyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0
aG9kcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9i
amVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rv
cjo6aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFs
T2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0Jv
ZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5j
dGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0
T2JqQ29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY0dldHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRp
bWVBdHRyaWJ1dGVTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3Ry
dWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljU2V0dGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OnNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0
YXRpYyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbDoK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKIDIwMTgtMDkt
MTkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVu
dCBzZW5kZXIvcmVjZWl2ZXIgZ2V0U3RhdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggN2Y0YWMxMGM5ZThhZjhiZGM2ZGJj
ODY1Y2M3YmJmZTRhNjQyZjNkYy4uN2IyMDVmMmQyOTI2ZmMwZjZlNGM3ZjU0MTUzMWMxMjVhZmNm
NWIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KQEAgLTM2NDEsNyArMzY0MSw3IEBAIHN1YiBUb01ldGhvZE5hbWUKIAogc3Vi
IEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogewotICAg
IG15ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGNvbmp1bmN0cykgPSBAXzsKKyAgICBteSAoJGlu
dGVyZmFjZSwgJGNvbnRleHQsICRjb25qdW5jdHMsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBf
OwogCiAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEV4cG9zZWQuIikgaWYgJGNv
bnRleHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9IGVxICJWQUxVRV9JU19NSVNTSU5H
IjsKIApAQCAtMzY1NSwxMCArMzY1NSwxMiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkCiAgICAgICAgICRleHBvc2VkID0gQCRleHBvc2VkWzBd
OwogICAgIH0KIAorICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAkZ2xvYmFsT2JqZWN0SXNQYXJh
bSA/ICImZ2xvYmFsT2JqZWN0IiA6ICJnbG9iYWxPYmplY3QoKSI7CisKICAgICBpZiAoJGV4cG9z
ZWQgZXEgIldpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
LT5pc0RvY3VtZW50KCkiKTsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNEb2N1bWVudCgpIik7CiAgICAgfSBlbHNpZiAoJGV4cG9zZWQgZXEgIldv
cmtlciIpIHsKLSAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtl
ckdsb2JhbFNjb3BlKCkiKTsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RP
TUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpIik7CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgYXNzZXJ0KCJVbnJlY29nbml6ZWQgdmFsdWUgJyIgLiBEdW1wZXIoJGNvbnRleHQtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9KSAuICInIGZvciB0aGUgRXhwb3NlZCBleHRlbmRlZCBh
dHRyaWJ1dGUgb24gJyIgLiByZWYoJGNvbnRleHQpIC4gIicuIik7CiAgICAgfQpAQCAtMzY3MSwx
NSArMzY3MywxNyBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdG
b3JFeHBvc2VkCiAjIChlLmcuIElETEludGVyZmFjZSwgSURMQXR0cmlidXRlLCBJRExPcGVyYXRp
b24sIElETEl0ZXJhYmxlLCBldGMuKQogc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlv
bmFsU3RyaW5nCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjb250ZXh0KSA9IEBfOworICAgIG15
ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdElzUGFyYW0pID0gQF87CiAKICAg
ICBteSBAY29uanVuY3RzOworICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAkZ2xvYmFsT2JqZWN0
SXNQYXJhbSA/ICImZ2xvYmFsT2JqZWN0IiA6ICJnbG9iYWxPYmplY3QoKSI7CiAgICAgCiAgICAg
aWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZWN1cmVDb250ZXh0fSkgewogICAg
ICAgICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CiAKICAg
ICAgICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb250ZXh0SGFzU2Vydmlj
ZVdvcmtlclNjaGVtZX0pIHsKLSAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgIihqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKS0+aXNTZWN1cmVDb250ZXh0KCkgfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xv
YmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJT
Y2hlbWUoKSkiKTsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgIihqc0Nhc3Q8SlNET01H
bG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25D
b250ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpIgorICAgICAgICAgICAgICAgIC4gInx8IGpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKS0+aGFzU2VydmljZVdvcmtlclNjaGVtZSgpKSIpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFs
T2JqZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2Vj
dXJlQ29udGV4dCgpIik7CiAgICAgICAgIH0KQEAgLTM2ODcsNyArMzY5MSw3IEBAIHN1YiBHZW5l
cmF0ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZwogICAgICAgICBpZiAoJGNvbnRleHQt
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NvbnRleHRIYXNTZXJ2aWNlV29ya2VyU2NoZW1lfSkgewog
ICAgICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIp
OwogCi0gICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmpl
Y3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aGFzU2Vydmlj
ZVdvcmtlclNjaGVtZSgpIik7CisgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVj
dXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hlbWUoKSIpOwogICAgICAgICB9CiAg
ICAgfQogCkBAIC0zNzEzLDcgKzM3MTcsNyBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29u
ZGl0aW9uYWxTdHJpbmcKIAogICAgICAgICBteSBAZmxhZ3MgPSBzcGxpdCgvJi8sICRjb250ZXh0
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSk7CiAgICAgICAgIGZvcmVh
Y2ggbXkgJGZsYWcgKEBmbGFncykgewotICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiZG93
bmNhc3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgp
KS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4gVG9NZXRob2ROYW1l
KCRmbGFnKSAuICJFbmFibGVkKCkiKTsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImRv
d25jYXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9i
amVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLiIgLiBU
b01ldGhvZE5hbWUoJGZsYWcpIC4gIkVuYWJsZWQoKSIpOwogICAgICAgICB9CiAgICAgfQogCkBA
IC03MTg1LDYgKzcxODksNDMgQEAgc3ViIENvbnN0cnVjdG9ySGFzUHJvcGVydGllcwogICAgIHJl
dHVybiAwOwogfQogCitzdWIgR2V0UnVudGltZUVuYWJsZWRTdGF0aWNQcm9wZXJ0aWVzCit7Cisg
ICAgbXkgKCRpbnRlcmZhY2UpID0gQF87CisKKyAgICBteSBAcnVudGltZUVuYWJsZWRQcm9wZXJ0
aWVzID0gKCk7CisKKyAgICBteSBAYXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0cmlidXRl
c307CisgICAgcHVzaChAYXR0cmlidXRlcywgQHskaW50ZXJmYWNlLT5tYXBMaWtlLT5hdHRyaWJ1
dGVzfSkgaWYgJGludGVyZmFjZS0+bWFwTGlrZTsKKworICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0
ZSAoQGF0dHJpYnV0ZXMpIHsKKyAgICAgICAgbmV4dCBpZiBBdHRyaWJ1dGVTaG91bGRCZU9uSW5z
dGFuY2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgIT0gMDsKKyAgICAgICAgbmV4dCBpZiBub3Qg
JGF0dHJpYnV0ZS0+aXNTdGF0aWM7CisKKyAgICAgICAgaWYgKE5lZWRzUnVudGltZUNoZWNrKCRp
bnRlcmZhY2UsICRhdHRyaWJ1dGUpKSB7CisgICAgICAgICAgICBwdXNoKEBydW50aW1lRW5hYmxl
ZFByb3BlcnRpZXMsICRhdHRyaWJ1dGUpOworICAgICAgICB9CisgICAgfQorCisgICAgbXkgQG9w
ZXJhdGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9OworICAgIHB1c2goQG9wZXJhdGlv
bnMsIEB7JGludGVyZmFjZS0+aXRlcmFibGUtPm9wZXJhdGlvbnN9KSBpZiBJc0tleVZhbHVlSXRl
cmFibGVJbnRlcmZhY2UoJGludGVyZmFjZSk7CisgICAgcHVzaChAb3BlcmF0aW9ucywgQHskaW50
ZXJmYWNlLT5tYXBMaWtlLT5vcGVyYXRpb25zfSkgaWYgJGludGVyZmFjZS0+bWFwTGlrZTsKKyAg
ICBwdXNoKEBvcGVyYXRpb25zLCBAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+b3BlcmF0aW9u
c30pIGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRp
b24gKEBvcGVyYXRpb25zKSB7CisgICAgICAgIG5leHQgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRvcGVyYXRpb24tPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKKyAgICAgICAgbmV4dCBpZiAkb3Bl
cmF0aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4g
MTsKKyAgICAgICAgbmV4dCBpZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFj
ZSwgJG9wZXJhdGlvbikgIT0gMDsKKyAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5uYW1lIGVx
ICJbU3ltYm9sLkl0ZXJhdG9yXSI7CisgICAgICAgIG5leHQgaWYgbm90ICRvcGVyYXRpb24tPmlz
U3RhdGljOworCisgICAgICAgIGlmIChOZWVkc1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAkb3Bl
cmF0aW9uKSkgeworICAgICAgICAgICAgcHVzaChAcnVudGltZUVuYWJsZWRQcm9wZXJ0aWVzLCAk
b3BlcmF0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBAcnVudGltZUVuYWJs
ZWRQcm9wZXJ0aWVzOworfQorCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMK
IHsKICAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2
aXNpYmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVj
dG9yKSA9IEBfOwpAQCAtNzI0NCw2ICs3Mjg1LDIxIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9y
SGVscGVyTWV0aG9kcwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVpZnlT
dGF0aWNQcm9wZXJ0aWVzKHZtLCAke2NsYXNzRm9yVGhpc30sICR7Y2xhc3NOYW1lfUNvbnN0cnVj
dG9yVGFibGVWYWx1ZXMsICp0aGlzKTtcbiIpIGlmIENvbnN0cnVjdG9ySGFzUHJvcGVydGllcygk
aW50ZXJmYWNlKTsKIAorICAgIG15IEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMgPSBHZXRSdW50
aW1lRW5hYmxlZFN0YXRpY1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CisKKyAgICBmb3JlYWNoIG15
ICRvcGVyYXRpb25PckF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcykgeworICAg
ICAgICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25k
aXRpb25hbFN0cmluZygkb3BlcmF0aW9uT3JBdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKKyAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVy
YXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVyYXRpb25P
ckF0dHJpYnV0ZSwgInRydWUiKTsKKyAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JBdHRy
aWJ1dGUtPm5hbWU7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVu
dGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CisgICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxl
bihcIiRuYW1lXCIpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAg
IFZNOjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5
TW9kZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJy
YXksICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qu
Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICB9XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4i
KSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgfQorCiAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAifVxuXG4iKTsKIAogICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2Up
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IGJkYTMyYzM3YjA0NGJmYmQ3MzQ2
YjcyNzBhNmNhYjQ0ODhjODRlYTUuLjcxYjhiZGRmNjhkYWVjYzczZTIyMWNlODNkNjYwNzNjNzM4
YjRlYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9K
Uy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC01Niw2ICs1Niw5IEBAIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uUmVndWxhck9wZXJhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEpTQzo6RW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCisj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvblN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSopOworI2VuZGlmCiBKU0M6OkVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJs
ZWRJblNwZWNpZmljV29ybGQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZElu
U3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsK
IEpTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0
YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFi
bGVkKEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xMjIsNiArMTI1LDE3IEBAIHN0YXRpYyBjb25zdCBI
YXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0
YXRpYyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7IDQsIDE1LCB0
cnVlLCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVW
YWx1ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsKKy8qIEhhc2ggdGFibGUgZm9y
IGNvbnN0cnVjdG9yICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9i
YWxPYmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCisgICAgeyAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIsIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmlu
c2ljLCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0R2xv
YmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0
aWMpLCAoaW50cHRyX3QpICgxKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMs
IHsgMCwgMCB9IH0sCisjZW5kaWYKK307CisKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHbG9i
YWxPYmplY3RDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBj
b25zdCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJB
TSh2bSk7CkBAIC0xMzMsNiArMTQ3LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9i
amVjdENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE8KICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0Lmdl
dFByb3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUg
fCBKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUs
IGpzTm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZygiVGVzdEdsb2JhbE9iamVjdCJfcykpLCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwg
anNOdW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwg
SlNUZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9y
VGFibGVWYWx1ZXMsICp0aGlzKTsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNU
ZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RHbG9iYWxPYmplY3Qi
LCAmQmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpT
VGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSB9OwpAQCAtMTc2LDYgKzE5MSwxMCBAQCB2b2lk
IEpTVGVzdEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1
cmVzKCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0
aW9uKHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEp
LT5idWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uUHVibGljTmFtZSgpLCAx
LCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvbiwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOworI2VuZGlmCisjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0TmF0
aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xp
ZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNQ
dWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0
cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVu
Y3Rpb24pKSk7CiAjZW5kaWYKICAgICBpZiAod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNwZWNp
ZmljV29ybGQoKSkKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0
YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygp
LmVuYWJsZWRJblNwZWNpZmljV29ybGRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVj
dEluc3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkLCBOb0ludHJpbnNpYywgYXR0
cmlidXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0
dHJpYnV0ZTo6RnVuY3Rpb24pKSk7CkBAIC00NTYsNiArNDc1LDI2IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRB
dFJ1bnRpbWVPCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBp
bmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1
bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHkoSlNDOjpFeGVjU3RhdGUq
IHN0YXRlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFN
KHN0YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgaWYgKFVOTElLRUxZ
KHN0YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJv
cihzdGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUp
KTsKKyAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgVGVzdEdsb2JhbE9iamVjdDo6ZW5hYmxlZEF0UnVu
dGltZU9wZXJhdGlvblN0YXRpYyhXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb25TdGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3Bl
cmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGxTdGF0aWM8anNUZXN0R2xvYmFsT2JqZWN0
Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigq
c3RhdGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIik7Cit9CisKKyNlbmRpZgor
CiBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5z
dGFuY2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRCb2R5KEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OkNsYXNzUGFy
YW1ldGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBV
TlVTRURfUEFSQU0oc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBlNGQ5ODg1OTdhY2Y5MmQ0ZmQ1NTVh
ZDJmYmRmODdlMDRhNjZkNThmLi4wY2E1ZGJkZTBjOTczNGUzOTgxZWMxMWMxZTc1ZTc4ODlhYmI3
YmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcApAQCAtMTQxOSw2ICsxNDE5LDkgQEAgdGVtcGxhdGU8PiBUZXN0T2Jq
OjpDb25kaXRpb25hbERpY3Rpb25hcnlDIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRp
dGlvbmEKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkK
K0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1
bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSopOwor
I2VuZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90
eXBlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxl
ZChKU0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpz
VGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZChKU0M6OkV4ZWNTdGF0
ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlw
ZUZ1bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xNjg1
LDYgKzE2ODgsMTAgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEpT
Qzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlMKIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpT
Qzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2Jq
RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JFbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlU3RhdGljKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1
ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJs
ZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRK
U1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKyNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1
ZSBqc1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpT
VmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0
dHIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1Zh
bHVlKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTE4Nzks
NiArMTg4NiwxNiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uc3Ry
dWN0b3JUYWJsZVZhbHVlc1tdID0KICAgICB7ICJzdGF0aWNSZWFkT25seUxvbmdBdHRyIiwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9J
bnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVG
dW5jPihqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIpLCAoaW50cHRy
X3QpIHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAg
ICAgeyAic3RhdGljU3RyaW5nQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRp
Y19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25zdHJ1
Y3RvclN0YXRpY1N0cmluZ0F0dHIpIH0gfSwKICAgICB7ICJUZXN0U3ViT2JqIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1
dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisjaWYgRU5BQkxFKFRFU1RfRkVB
VFVSRSkKKyAgICB7ICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiwgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KDApLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJv
cGVydHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVu
dGltZUF0dHJpYnV0ZVN0YXRpYyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlT
bG90OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZVN0YXRpYykgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7
IDAsIDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICB7ICJlbmFi
bGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyNl
bHNlCisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgogICAgIHsg
Im51bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0
YXRpY19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9u
TnVsbGFibGVTdHJpbmdTdGF0aWNNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAi
c3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAo
aW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVj
dG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyksIChpbnRw
dHJfdCkgKDApIH0gfSwKICAgICB7ICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciLCBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0lu
dHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVz
dE9iakNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcpLCAoaW50
cHRyX3QpICgxKSB9IH0sCkBAIC0xOTQ1LDYgKzE5NjIsMjAgQEAgdGVtcGxhdGU8PiB2b2lkIEpT
VGVzdE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xv
YmFsT2IKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJp
dmlhbFN0cmluZygmdm0sIFN0cmluZygiVGVzdE9iamVjdCJfcykpLCBKU0M6OlByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAg
ICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIEpT
Qzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T2JqOjppbmZv
KCksIEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKKyNpZiBFTkFCTEUo
VEVTVF9GRUFUVVJFKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVh
dHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgeworICAgICAgICBhdXRvIHByb3BlcnR5TmFt
ZSA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExD
aGFyKj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlU3RhdGljIikpOworICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlN
b2RlU2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3Vy
YWJsZSk7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmpl
Y3QuZ2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJM
RShURVNUX0ZFQVRVUkUpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRG
ZWF0dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8gcHJvcGVydHlO
YW1lID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
TENoYXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpLCBzdHJsZW4oImVuYWJs
ZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0
eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmln
dXJhYmxlKTsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9i
amVjdC5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHRl
bXBsYXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpzX2luZm8gPSB7
ICJUZXN0T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01F
VEhPRF9UQUJMRShKU1Rlc3RPYmpDb25zdHJ1Y3RvcikgfTsKQEAgLTM5NDYsNiArMzk3Nyw0MSBA
QCBib29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBz
dGF0ZSwgRW5jb2RlZEpTVmFsdWUgdGhpcwogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JFbmFibGVk
QXRSdW50aW1lQXR0cmlidXRlU3RhdGljR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIFRocm93U2Nv
cGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmlu
Zz4oc3RhdGUsIHRocm93U2NvcGUsIFRlc3RPYmo6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVT
dGF0aWMoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0
T2JqQ29uc3RydWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljKEV4ZWNTdGF0ZSog
c3RhdGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJl
dHVybiBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0U3RhdGljPGpzVGVzdE9iakNvbnN0cnVj
dG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY0dldHRlcj4oKnN0YXRlLCB0aGlzVmFs
dWUsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIik7Cit9CisKKyNlbmRpZgorCisj
aWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpD
b25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWNTZXR0ZXIoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBV
TlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8
SURMRE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhy
b3dTY29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChzdGF0ZSwgdGhyb3dT
Y29wZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OnNldEVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGVTdGF0aWMoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZVN0YXRpYyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFs
dWUsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmli
dXRlPEpTVGVzdE9iaj46OnNldFN0YXRpYzxzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWNTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVk
VmFsdWUsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIik7Cit9CisKKyNlbmRpZgor
CiBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHJHZXR0ZXIoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Nj
b3BlKQogewogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTUyNjMsNiArNTMyOSwy
NiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbgogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29u
c3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5KEpTQzo6
RXhlY1N0YXRlKiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVO
VVNFRF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGlm
IChVTkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vy
cm9yKHN0YXRlKSk7CisgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0
ZSwgc3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFRlc3RPYmo6OmVuYWJsZWRBdFJ1
bnRpbWVPcGVyYXRpb25TdGF0aWMoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uU3RhdGljKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxK
U1Rlc3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljQm9keT4oKnN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvblN0YXRpYyIpOworfQorCisjZW5kaWYKKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3Js
ZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlw
ZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMs
IEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RH
bG9iYWxPYmplY3QuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rl
c3RHbG9iYWxPYmplY3QuaWRsCmluZGV4IDUxMDBlOGEyYjhlODE2MGYzZjRmNGYyMjJhOGNiMDhm
Nzg3MDA2ODYuLmZkNGZiMzhlNzdhZTI3OWJjYTJhYzgzMGE1MzE3ODY2MWM5Y2FlMjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2Jq
ZWN0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEds
b2JhbE9iamVjdC5pZGwKQEAgLTM0LDYgKzM0LDcgQEAKICAgICB2b2lkIHJlZ3VsYXJPcGVyYXRp
b24oRE9NU3RyaW5nIHRlc3RQYXJhbSk7CiAgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwg
RW5hYmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0
aW9uKERPTVN0cmluZyB0ZXN0UGFyYW0pOwogICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUs
IEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvbihsb25nIHRlc3RQYXJhbSk7CisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5h
YmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZU9w
ZXJhdGlvblN0YXRpYyhsb25nIHRlc3RQYXJhbSk7CiAKICAgICBbRW5hYmxlZEZvcldvcmxkPXNw
ZWNpZmljV29ybGRdIHZvaWQgZW5hYmxlZEluU3BlY2lmaWNXb3JsZChsb25nIHRlc3RQYXJhbSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0
T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlk
bAppbmRleCA3MWRkZmM0ODllZDJkNWRhMjU2ZmI1YzQzMGI5MzJlYmRjNGY4NzBiLi5iZTA5MGE0
MzhmMzRkY2QzNjYzZTg3ZmZiMDY3Njc2MjdhNTJmMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0xMTAsNiArMTEwLDggQEAg
ZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKICAgICBbQ29uZGl0
aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlJlRlc3RGZWF0
dXJlMV0gYXR0cmlidXRlIERPTVN0cmluZyBlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlOwogICAg
IFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVd
IHZvaWQgZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFtKTsKICAg
ICBbQ29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJl
XSB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24obG9uZyB0ZXN0UGFyYW0pOworICAgIFtD
b25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHN0
YXRpYyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMobG9uZyB0ZXN0UGFyYW0p
OworICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZl
YXR1cmVdIHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1
dGVTdGF0aWM7CiAKICAgICBbRW5hYmxlZEZvcldvcmxkPXNvbWVXb3JsZCwgRW5hYmxlZEF0UnVu
dGltZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVG
ZWF0dXJlRW5hYmxlZChsb25nIHRlc3RQYXJhbSk7CiAgICAgW0VuYWJsZWRGb3JXb3JsZD1zb21l
V29ybGRdIHZvaWQgd29ybGRTcGVjaWZpY01ldGhvZChsb25nIHRlc3RQYXJhbSk7CkBAIC0yNzMs
NyArMjc1LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsK
IAogICAgIFtDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgY2FjaGVkQXR0
cmlidXRlMTsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IGNh
Y2hlZEF0dHJpYnV0ZTI7Ci0gICAgCisKICAgICBhdHRyaWJ1dGUgYW55IGFueUF0dHJpYnV0ZTsK
ICAgICBhdHRyaWJ1dGUgb2JqZWN0IG9iamVjdEF0dHJpYnV0ZTsKIApAQCAtMzk3LDcgKzM5OSw3
IEBAIGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTx2b2lkPiB0ZXN0UmVhZE9ubHlWb2lkUHJvbWlzZUF0
dHJpYnV0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxUZXN0Tm9kZT4gdGVzdFJl
YWRPbmx5UHJvbWlzZUF0dHJpYnV0ZTsKLSAgICAKKwogICAgIC8vIFByb21pc2UgZnVuY3Rpb24K
ICAgICBQcm9taXNlPHZvaWQ+IHRlc3RQcm9taXNlRnVuY3Rpb24oKTsKICAgICBQcm9taXNlPHZv
aWQ+IHRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChmbG9hdCBhKTsKQEAgLTQz
MSw3ICs0MzMsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9
OwogICAgIHNlcmlhbGl6ZXIgPSB7Y3JlYXRlLCByZWFkT25seVN0cmluZ0F0dHIsIGVudW1BdHRy
LCBsb25nQXR0cn07CiAKICAgICB2b2lkIGJ1ZmZlclNvdXJjZVBhcmFtZXRlcihCdWZmZXJTb3Vy
Y2UgZGF0YSk7Ci0gICAgCisKICAgICBsZWdhY3ljYWxsZXIgdm9pZCBsZWdhY3lDYWxsZXJOYW1l
ZChsb25nIHBhcmFtKTsKICAgICBsZWdhY3ljYWxsZXIgbG9uZyAoRE9NU3RyaW5nIHBhcmFtKTsK
ICAgICBsZWdhY3ljYWxsZXIgdm9pZCAoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350219</attachid>
            <date>2018-09-20 09:53:04 -0700</date>
            <delta_ts>2018-09-20 10:31:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-189729-20180920095303.patch</filename>
            <type>text/plain</type>
            <size>26244</size>
            <attacher name="Justin Michaud">justin_michaud</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWZiY2MzMDE5MWYzNzg4
YzVmMzAyYzUwMGQ2NjMzYzljZTc2OGNkNi4uNjMyYTg1Yzg3MjM5ZTYyM2Y1YTRjZGU4NzVjYTAw
OGE0NDczYTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDE4LTA5LTE5ICBKdXN0
aW4gTWljaGF1ZCAgPGp1c3Rpbl9taWNoYXVkQGFwcGxlLmNvbT4KKworICAgICAgICBKUyBiaW5k
aW5ncyBnZW5lcmF0b3Igc2hvdWxkIHN1cHBvcnQgRW5hYmxlZEF0UnVudGltZSBmb3Igc3RhdGlj
IG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE4OTcyOQorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBFbmFibGVkQXRSdW50aW1lIHRvIHN0YXRpYyBtZXRob2RzIGluIHRoZSBK
UyBiaW5kaW5ncworICAgICAgICBjb2RlIGdlbmVyYXRvci4KKworICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVSdW50aW1lRW5h
YmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JFeHBvc2VkKToKKyAgICAgICAgKEdlbmVyYXRlUnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKToKKyAgICAgICAgKEdldFJ1bnRpbWVFbmFibGVkU3Rh
dGljUHJvcGVydGllcyk6CisgICAgICAgIChHZW5lcmF0ZUNvbnN0cnVjdG9ySGVscGVyTWV0aG9k
cyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEdsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3Rvcjo6
aW5pdGlhbGl6ZVByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0R2xvYmFsT2Jq
ZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RHbG9iYWxPYmpl
Y3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHkp
OgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlv
bkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0T2Jq
Q29uc3RydWN0b3I6OmluaXRpYWxpemVQcm9wZXJ0aWVzKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY0dldHRlcik6
CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRBdFJ1bnRpbWVB
dHRyaWJ1dGVTdGF0aWMpOgorICAgICAgICAoV2ViQ29yZTo6c2V0SlNUZXN0T2JqQ29uc3RydWN0
b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OnNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRp
Yyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxl
ZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHkpOgorICAgICAgICAoV2ViQ29yZTo6anNUZXN0
T2JqQ29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0LmlkbDoKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGw6CisKIDIwMTgtMDktMTkg
IFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIEltcGxlbWVudCBz
ZW5kZXIvcmVjZWl2ZXIgZ2V0U3RhdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KaW5kZXggN2Y0YWMxMGM5ZThhZjhiZGM2ZGJjODY1
Y2M3YmJmZTRhNjQyZjNkYy4uN2IyMDVmMmQyOTI2ZmMwZjZlNGM3ZjU0MTUzMWMxMjVhZmNmNWIw
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJh
dG9ySlMucG0KQEAgLTM2NDEsNyArMzY0MSw3IEBAIHN1YiBUb01ldGhvZE5hbWUKIAogc3ViIEdl
bmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nRm9yRXhwb3NlZAogewotICAgIG15
ICgkaW50ZXJmYWNlLCAkY29udGV4dCwgJGNvbmp1bmN0cykgPSBAXzsKKyAgICBteSAoJGludGVy
ZmFjZSwgJGNvbnRleHQsICRjb25qdW5jdHMsICRnbG9iYWxPYmplY3RJc1BhcmFtKSA9IEBfOwog
CiAgICAgYXNzZXJ0KCJNdXN0IHNwZWNpZnkgdmFsdWUgZm9yIEV4cG9zZWQuIikgaWYgJGNvbnRl
eHQtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0V4cG9zZWR9IGVxICJWQUxVRV9JU19NSVNTSU5HIjsK
IApAQCAtMzY1NSwxMCArMzY1NSwxMiBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0
aW9uYWxTdHJpbmdGb3JFeHBvc2VkCiAgICAgICAgICRleHBvc2VkID0gQCRleHBvc2VkWzBdOwog
ICAgIH0KIAorICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAkZ2xvYmFsT2JqZWN0SXNQYXJhbSA/
ICImZ2xvYmFsT2JqZWN0IiA6ICJnbG9iYWxPYmplY3QoKSI7CisKICAgICBpZiAoJGV4cG9zZWQg
ZXEgIldpbmRvdyIpIHsKLSAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5p
c0RvY3VtZW50KCkiKTsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNEb2N1bWVudCgpIik7CiAgICAgfSBlbHNpZiAoJGV4cG9zZWQgZXEgIldvcmtl
ciIpIHsKLSAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUdsb2JhbE9iamVj
dCo+KGdsb2JhbE9iamVjdCgpKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5pc1dvcmtlckds
b2JhbFNjb3BlKCkiKTsKKyAgICAgICAgcHVzaChAJGNvbmp1bmN0cywgImpzQ2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKS0+aXNXb3JrZXJHbG9iYWxTY29wZSgpIik7CiAgICAgfSBlbHNlIHsKICAgICAgICAg
YXNzZXJ0KCJVbnJlY29nbml6ZWQgdmFsdWUgJyIgLiBEdW1wZXIoJGNvbnRleHQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0V4cG9zZWR9KSAuICInIGZvciB0aGUgRXhwb3NlZCBleHRlbmRlZCBhdHRy
aWJ1dGUgb24gJyIgLiByZWYoJGNvbnRleHQpIC4gIicuIik7CiAgICAgfQpAQCAtMzY3MSwxNSAr
MzY3MywxNyBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0aW9uYWxTdHJpbmdGb3JF
eHBvc2VkCiAjIChlLmcuIElETEludGVyZmFjZSwgSURMQXR0cmlidXRlLCBJRExPcGVyYXRpb24s
IElETEl0ZXJhYmxlLCBldGMuKQogc3ViIEdlbmVyYXRlUnVudGltZUVuYWJsZUNvbmRpdGlvbmFs
U3RyaW5nCiB7Ci0gICAgbXkgKCRpbnRlcmZhY2UsICRjb250ZXh0KSA9IEBfOworICAgIG15ICgk
aW50ZXJmYWNlLCAkY29udGV4dCwgJGdsb2JhbE9iamVjdElzUGFyYW0pID0gQF87CiAKICAgICBt
eSBAY29uanVuY3RzOworICAgIG15ICRnbG9iYWxPYmplY3RQdHIgPSAkZ2xvYmFsT2JqZWN0SXNQ
YXJhbSA/ICImZ2xvYmFsT2JqZWN0IiA6ICJnbG9iYWxPYmplY3QoKSI7CiAgICAgCiAgICAgaWYg
KCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntTZWN1cmVDb250ZXh0fSkgewogICAgICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIik7CiAKICAgICAg
ICAgaWYgKCRjb250ZXh0LT5leHRlbmRlZEF0dHJpYnV0ZXMtPntDb250ZXh0SGFzU2VydmljZVdv
cmtlclNjaGVtZX0pIHsKLSAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgIihqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+aXNTZWN1cmVDb250ZXh0KCkgfHwganNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZ2xvYmFs
T2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hl
bWUoKSkiKTsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgIihqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250
ZXh0KCktPmlzU2VjdXJlQ29udGV4dCgpIgorICAgICAgICAgICAgICAgIC4gInx8IGpzQ2FzdDxK
U0RPTUdsb2JhbE9iamVjdCo+KCIgLiAkZ2xvYmFsT2JqZWN0UHRyIC4gIiktPnNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKS0+aGFzU2VydmljZVdvcmtlclNjaGVtZSgpKSIpOwogICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAianNDYXN0PEpTRE9NR2xvYmFsT2Jq
ZWN0Kj4oZ2xvYmFsT2JqZWN0KCkpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmlzU2VjdXJl
Q29udGV4dCgpIik7CiAgICAgICAgIH0KQEAgLTM2ODcsNyArMzY5MSw3IEBAIHN1YiBHZW5lcmF0
ZVJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZwogICAgICAgICBpZiAoJGNvbnRleHQtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NvbnRleHRIYXNTZXJ2aWNlV29ya2VyU2NoZW1lfSkgewogICAg
ICAgICAgICAgQWRkVG9JbXBsSW5jbHVkZXMoIlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQuaCIpOwog
Ci0gICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3Qq
PihnbG9iYWxPYmplY3QoKSktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+aGFzU2VydmljZVdv
cmtlclNjaGVtZSgpIik7CisgICAgICAgICAgICBwdXNoKEBjb25qdW5jdHMsICJqc0Nhc3Q8SlNE
T01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVjdFB0ciAuICIpLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCktPmhhc1NlcnZpY2VXb3JrZXJTY2hlbWUoKSIpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0zNzEzLDcgKzM3MTcsNyBAQCBzdWIgR2VuZXJhdGVSdW50aW1lRW5hYmxlQ29uZGl0
aW9uYWxTdHJpbmcKIAogICAgICAgICBteSBAZmxhZ3MgPSBzcGxpdCgvJi8sICRjb250ZXh0LT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPntFbmFibGVkQnlTZXR0aW5nfSk7CiAgICAgICAgIGZvcmVhY2gg
bXkgJGZsYWcgKEBmbGFncykgewotICAgICAgICAgICAgcHVzaChAY29uanVuY3RzLCAiZG93bmNh
c3Q8RG9jdW1lbnQ+KGpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGdsb2JhbE9iamVjdCgpKS0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKS0+c2V0dGluZ3MoKS4iIC4gVG9NZXRob2ROYW1lKCRm
bGFnKSAuICJFbmFibGVkKCkiKTsKKyAgICAgICAgICAgIHB1c2goQGNvbmp1bmN0cywgImRvd25j
YXN0PERvY3VtZW50Pihqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPigiIC4gJGdsb2JhbE9iamVj
dFB0ciAuICIpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpLT5zZXR0aW5ncygpLiIgLiBUb01l
dGhvZE5hbWUoJGZsYWcpIC4gIkVuYWJsZWQoKSIpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03
MTg1LDYgKzcxODksNDMgQEAgc3ViIENvbnN0cnVjdG9ySGFzUHJvcGVydGllcwogICAgIHJldHVy
biAwOwogfQogCitzdWIgR2V0UnVudGltZUVuYWJsZWRTdGF0aWNQcm9wZXJ0aWVzCit7CisgICAg
bXkgKCRpbnRlcmZhY2UpID0gQF87CisKKyAgICBteSBAcnVudGltZUVuYWJsZWRQcm9wZXJ0aWVz
ID0gKCk7CisKKyAgICBteSBAYXR0cmlidXRlcyA9IEB7JGludGVyZmFjZS0+YXR0cmlidXRlc307
CisgICAgcHVzaChAYXR0cmlidXRlcywgQHskaW50ZXJmYWNlLT5tYXBMaWtlLT5hdHRyaWJ1dGVz
fSkgaWYgJGludGVyZmFjZS0+bWFwTGlrZTsKKworICAgIGZvcmVhY2ggbXkgJGF0dHJpYnV0ZSAo
QGF0dHJpYnV0ZXMpIHsKKyAgICAgICAgbmV4dCBpZiBBdHRyaWJ1dGVTaG91bGRCZU9uSW5zdGFu
Y2UoJGludGVyZmFjZSwgJGF0dHJpYnV0ZSkgIT0gMDsKKyAgICAgICAgbmV4dCBpZiBub3QgJGF0
dHJpYnV0ZS0+aXNTdGF0aWM7CisKKyAgICAgICAgaWYgKE5lZWRzUnVudGltZUNoZWNrKCRpbnRl
cmZhY2UsICRhdHRyaWJ1dGUpKSB7CisgICAgICAgICAgICBwdXNoKEBydW50aW1lRW5hYmxlZFBy
b3BlcnRpZXMsICRhdHRyaWJ1dGUpOworICAgICAgICB9CisgICAgfQorCisgICAgbXkgQG9wZXJh
dGlvbnMgPSBAeyRpbnRlcmZhY2UtPm9wZXJhdGlvbnN9OworICAgIHB1c2goQG9wZXJhdGlvbnMs
IEB7JGludGVyZmFjZS0+aXRlcmFibGUtPm9wZXJhdGlvbnN9KSBpZiBJc0tleVZhbHVlSXRlcmFi
bGVJbnRlcmZhY2UoJGludGVyZmFjZSk7CisgICAgcHVzaChAb3BlcmF0aW9ucywgQHskaW50ZXJm
YWNlLT5tYXBMaWtlLT5vcGVyYXRpb25zfSkgaWYgJGludGVyZmFjZS0+bWFwTGlrZTsKKyAgICBw
dXNoKEBvcGVyYXRpb25zLCBAeyRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZS0+b3BlcmF0aW9uc30p
IGlmICRpbnRlcmZhY2UtPnNlcmlhbGl6YWJsZTsKKyAgICBmb3JlYWNoIG15ICRvcGVyYXRpb24g
KEBvcGVyYXRpb25zKSB7CisgICAgICAgIG5leHQgaWYgKCRvcGVyYXRpb24tPmV4dGVuZGVkQXR0
cmlidXRlcy0+e1ByaXZhdGVJZGVudGlmaWVyfSBhbmQgbm90ICRvcGVyYXRpb24tPmV4dGVuZGVk
QXR0cmlidXRlcy0+e1B1YmxpY0lkZW50aWZpZXJ9KTsKKyAgICAgICAgbmV4dCBpZiAkb3BlcmF0
aW9uLT57b3ZlcmxvYWRJbmRleH0gJiYgJG9wZXJhdGlvbi0+e292ZXJsb2FkSW5kZXh9ID4gMTsK
KyAgICAgICAgbmV4dCBpZiBPcGVyYXRpb25TaG91bGRCZU9uSW5zdGFuY2UoJGludGVyZmFjZSwg
JG9wZXJhdGlvbikgIT0gMDsKKyAgICAgICAgbmV4dCBpZiAkb3BlcmF0aW9uLT5uYW1lIGVxICJb
U3ltYm9sLkl0ZXJhdG9yXSI7CisgICAgICAgIG5leHQgaWYgbm90ICRvcGVyYXRpb24tPmlzU3Rh
dGljOworCisgICAgICAgIGlmIChOZWVkc1J1bnRpbWVDaGVjaygkaW50ZXJmYWNlLCAkb3BlcmF0
aW9uKSkgeworICAgICAgICAgICAgcHVzaChAcnVudGltZUVuYWJsZWRQcm9wZXJ0aWVzLCAkb3Bl
cmF0aW9uKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBAcnVudGltZUVuYWJsZWRQ
cm9wZXJ0aWVzOworfQorCiBzdWIgR2VuZXJhdGVDb25zdHJ1Y3RvckhlbHBlck1ldGhvZHMKIHsK
ICAgICBteSAoJG91dHB1dEFycmF5LCAkY2xhc3NOYW1lLCAkcHJvdG9DbGFzc05hbWUsICR2aXNp
YmxlSW50ZXJmYWNlTmFtZSwgJGludGVyZmFjZSwgJGdlbmVyYXRpbmdOYW1lZENvbnN0cnVjdG9y
KSA9IEBfOwpAQCAtNzI0NCw2ICs3Mjg1LDIxIEBAIHN1YiBHZW5lcmF0ZUNvbnN0cnVjdG9ySGVs
cGVyTWV0aG9kcwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgcmVpZnlTdGF0
aWNQcm9wZXJ0aWVzKHZtLCAke2NsYXNzRm9yVGhpc30sICR7Y2xhc3NOYW1lfUNvbnN0cnVjdG9y
VGFibGVWYWx1ZXMsICp0aGlzKTtcbiIpIGlmIENvbnN0cnVjdG9ySGFzUHJvcGVydGllcygkaW50
ZXJmYWNlKTsKIAorICAgIG15IEBydW50aW1lRW5hYmxlZFByb3BlcnRpZXMgPSBHZXRSdW50aW1l
RW5hYmxlZFN0YXRpY1Byb3BlcnRpZXMoJGludGVyZmFjZSk7CisKKyAgICBmb3JlYWNoIG15ICRv
cGVyYXRpb25PckF0dHJpYnV0ZSAoQHJ1bnRpbWVFbmFibGVkUHJvcGVydGllcykgeworICAgICAg
ICBteSAkY29uZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRp
b25hbFN0cmluZygkb3BlcmF0aW9uT3JBdHRyaWJ1dGUpOworICAgICAgICBwdXNoKEAkb3V0cHV0
QXJyYXksICIjaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKKyAgICAgICAgbXkgJHJ1bnRpbWVFbmFibGVDb25kaXRpb25hbFN0cmluZyA9IEdlbmVyYXRl
UnVudGltZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nKCRpbnRlcmZhY2UsICRvcGVyYXRpb25PckF0
dHJpYnV0ZSwgInRydWUiKTsKKyAgICAgICAgbXkgJG5hbWUgPSAkb3BlcmF0aW9uT3JBdHRyaWJ1
dGUtPm5hbWU7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBpZiAoISR7cnVudGlt
ZUVuYWJsZUNvbmRpdGlvbmFsU3RyaW5nfSkge1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5n
KCZ2bSwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBMQ2hhcio+KFwiJG5hbWVcIiksIHN0cmxlbihc
IiRuYW1lXCIpKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIFZN
OjpEZWxldGVQcm9wZXJ0eU1vZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9k
ZTo6SWdub3JlQ29uZmlndXJhYmxlKTtcbiIpOworICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXks
ICIgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3QuZ2xv
YmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpO1xuIik7CisgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICB9XG4iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiI2VuZGlmXG4iKSBp
ZiAkY29uZGl0aW9uYWxTdHJpbmc7CisgICAgfQorCiAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
fVxuXG4iKTsKIAogICAgIGlmIChJc0pTQnVpbHRpbkNvbnN0cnVjdG9yKCRpbnRlcmZhY2UpKSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCmluZGV4IGJkYTMyYzM3YjA0NGJmYmQ3MzQ2Yjcy
NzBhNmNhYjQ0ODhjODRlYTUuLjcxYjhiZGRmNjhkYWVjYzczZTIyMWNlODNkNjYwNzNjNzM4YjRl
YzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RHbG9iYWxPYmplY3QuY3BwCkBAIC01Niw2ICs1Niw5IEBAIEpTQzo6
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1
bmN0aW9uUmVndWxhck9wZXJhCiAjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCisjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBq
c1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSopOworI2VuZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRJ
blNwZWNpZmljV29ybGQoSlNDOjpFeGVjU3RhdGUqKTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEluU3Bl
Y2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZUVuYWJsZWQoSlNDOjpFeGVjU3RhdGUqKTsKIEpT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5j
ZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdoZW5SdW50aW1lRmVhdHVyZXNFbmFibGVk
KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xMjIsNiArMTI1LDE3IEBAIHN0YXRpYyBjb25zdCBIYXNo
VGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxPYmplY3RUYWJsZVZhbHVlc1tdID0KIH07CiAKIHN0YXRp
YyBjb25zdCBIYXNoVGFibGUgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGUgPSB7IDQsIDE1LCB0cnVl
LCBKU1Rlc3RHbG9iYWxPYmplY3Q6OmluZm8oKSwgSlNUZXN0R2xvYmFsT2JqZWN0VGFibGVWYWx1
ZXMsIEpTVGVzdEdsb2JhbE9iamVjdFRhYmxlSW5kZXggfTsKKy8qIEhhc2ggdGFibGUgZm9yIGNv
bnN0cnVjdG9yICovCisKK3N0YXRpYyBjb25zdCBIYXNoVGFibGVWYWx1ZSBKU1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3RvclRhYmxlVmFsdWVzW10gPQoreworI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCisgICAgeyAiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIsIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihKU0M6OlByb3BlcnR5QXR0cmlidXRlOjpGdW5jdGlvbiksIE5vSW50cmluc2lj
LCB7IChpbnRwdHJfdClzdGF0aWNfY2FzdDxSYXdOYXRpdmVGdW5jdGlvbj4oanNUZXN0R2xvYmFs
T2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMp
LCAoaW50cHRyX3QpICgxKSB9IH0sCisjZWxzZQorICAgIHsgMCwgMCwgTm9JbnRyaW5zaWMsIHsg
MCwgMCB9IH0sCisjZW5kaWYKK307CisKIHRlbXBsYXRlPD4gSlNWYWx1ZSBKU1Rlc3RHbG9iYWxP
YmplY3RDb25zdHJ1Y3Rvcjo6cHJvdG90eXBlRm9yU3RydWN0dXJlKEpTQzo6Vk0mIHZtLCBjb25z
dCBKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQogewogICAgIFVOVVNFRF9QQVJBTSh2
bSk7CkBAIC0xMzMsNiArMTQ3LDcgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVzdEdsb2JhbE9iamVj
dENvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE8KICAgICBwdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgZ2xvYmFsT2JqZWN0LmdldFBy
b3RvdHlwZURpcmVjdCh2bSksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBK
U0M6OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpz
Tm9udHJpdmlhbFN0cmluZygmdm0sIFN0cmluZygiVGVzdEdsb2JhbE9iamVjdCJfcykpLCBKU0M6
OlByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRv
bnRFbnVtKTsKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNO
dW1iZXIoMCksIEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udEVudW0pOworICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNU
ZXN0R2xvYmFsT2JqZWN0OjppbmZvKCksIEpTVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yVGFi
bGVWYWx1ZXMsICp0aGlzKTsKIH0KIAogdGVtcGxhdGU8PiBjb25zdCBDbGFzc0luZm8gSlNUZXN0
R2xvYmFsT2JqZWN0Q29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIlRlc3RHbG9iYWxPYmplY3QiLCAm
QmFzZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKEpTVGVz
dEdsb2JhbE9iamVjdENvbnN0cnVjdG9yKSB9OwpAQCAtMTc2LDYgKzE5MSwxMCBAQCB2b2lkIEpT
VGVzdEdsb2JhbE9iamVjdDo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtKQogI2lmIEVOQUJMRShURVNU
X0ZFQVRVUkUpCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVz
KCkudGVzdEZlYXR1cmVFbmFibGVkKCkpCiAgICAgICAgIHB1dERpcmVjdE5hdGl2ZUZ1bmN0aW9u
KHZtLCB0aGlzLCBzdGF0aWNfY2FzdDxKU1ZNQ2xpZW50RGF0YSo+KHZtLmNsaWVudERhdGEpLT5i
dWlsdGluTmFtZXMoKS5lbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uUHVibGljTmFtZSgpLCAxLCBq
c1Rlc3RHbG9iYWxPYmplY3RJbnN0YW5jZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
biwgTm9JbnRyaW5zaWMsIGF0dHJpYnV0ZXNGb3JTdHJ1Y3R1cmUoc3RhdGljX2Nhc3Q8dW5zaWdu
ZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSkpOworI2VuZGlmCisjaWYgRU5B
QkxFKFRFU1RfRkVBVFVSRSkKKyAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVk
RmVhdHVyZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkKKyAgICAgICAgcHV0RGlyZWN0TmF0aXZl
RnVuY3Rpb24odm0sIHRoaXMsIHN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50
RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNQdWJs
aWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdENvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljLCBOb0ludHJpbnNpYywgYXR0cmlidXRlc0ZvclN0cnVj
dHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rp
b24pKSk7CiAjZW5kaWYKICAgICBpZiAod29ybGRGb3JET01PYmplY3QoKnRoaXMpLnNwZWNpZmlj
V29ybGQoKSkKICAgICAgICAgcHV0RGlyZWN0TmF0aXZlRnVuY3Rpb24odm0sIHRoaXMsIHN0YXRp
Y19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSktPmJ1aWx0aW5OYW1lcygpLmVu
YWJsZWRJblNwZWNpZmljV29ybGRQdWJsaWNOYW1lKCksIDEsIGpzVGVzdEdsb2JhbE9iamVjdElu
c3RhbmNlRnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkLCBOb0ludHJpbnNpYywgYXR0cmli
dXRlc0ZvclN0cnVjdHVyZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJp
YnV0ZTo6RnVuY3Rpb24pKSk7CkBAIC00NTYsNiArNDc1LDI2IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFuY2VGdW5jdGlvbkVuYWJsZWRBdFJ1
bnRpbWVPCiAKICNlbmRpZgogCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxp
bmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RHbG9iYWxPYmplY3RDb25zdHJ1Y3RvckZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpY0JvZHkoSlNDOjpFeGVjU3RhdGUqIHN0
YXRlLCBKU0M6OlRocm93U2NvcGUmIHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHN0
YXRlKTsKKyAgICBVTlVTRURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgaWYgKFVOTElLRUxZKHN0
YXRlLT5hcmd1bWVudENvdW50KCkgPCAxKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihz
dGF0ZSwgdGhyb3dTY29wZSwgY3JlYXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3Ioc3RhdGUpKTsK
KyAgICBhdXRvIHRlc3RQYXJhbSA9IGNvbnZlcnQ8SURMTG9uZz4oKnN0YXRlLCBzdGF0ZS0+dW5j
aGVja2VkQXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgVGVzdEdsb2JhbE9iamVjdDo6ZW5hYmxlZEF0UnVudGlt
ZU9wZXJhdGlvblN0YXRpYyhXVEZNb3ZlKHRlc3RQYXJhbSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Cit9CisKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwganNUZXN0R2xvYmFsT2JqZWN0Q29uc3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVP
cGVyYXRpb25TdGF0aWMoRXhlY1N0YXRlKiBzdGF0ZSkKK3sKKyAgICByZXR1cm4gSURMT3BlcmF0
aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OmNhbGxTdGF0aWM8anNUZXN0R2xvYmFsT2JqZWN0Q29u
c3RydWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5Pigqc3Rh
dGUsICJlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIik7Cit9CisKKyNlbmRpZgorCiBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0R2xvYmFsT2JqZWN0SW5zdGFu
Y2VGdW5jdGlvbkVuYWJsZWRJblNwZWNpZmljV29ybGRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0
ZSwgdHlwZW5hbWUgSURMT3BlcmF0aW9uPEpTVGVzdEdsb2JhbE9iamVjdD46OkNsYXNzUGFyYW1l
dGVyIGNhc3RlZFRoaXMsIEpTQzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVT
RURfUEFSQU0oc3RhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAppbmRleCBlNGQ5ODg1OTdhY2Y5MmQ0ZmQ1NTVhZDJm
YmRmODdlMDRhNjZkNThmLi4wY2E1ZGJkZTBjOTczNGUzOTgxZWMxMWMxZTc1ZTc4ODlhYmI3YmJm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T2JqLmNwcApAQCAtMTQxOSw2ICsxNDE5LDkgQEAgdGVtcGxhdGU8PiBUZXN0T2JqOjpD
b25kaXRpb25hbERpY3Rpb25hcnlDIGNvbnZlcnREaWN0aW9uYXJ5PFRlc3RPYmo6OkNvbmRpdGlv
bmEKICNpZiBFTkFCTEUoVEVTVF9GRUFUVVJFKQogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bihKU0M6OkV4ZWNTdGF0ZSopOwogI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKK0pT
Qzo6RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0
aW9uRW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyhKU0M6OkV4ZWNTdGF0ZSopOworI2Vu
ZGlmCiBKU0M6OkVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBl
RnVuY3Rpb25FbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0dXJlRW5hYmxlZChK
U0M6OkV4ZWNTdGF0ZSopOwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uV29ybGRTcGVjaWZpY01ldGhvZChKU0M6OkV4ZWNTdGF0ZSop
OwogSlNDOjpFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1
bmN0aW9uQ2FsY3VsYXRlU2VjcmV0UmVzdWx0KEpTQzo6RXhlY1N0YXRlKik7CkBAIC0xNjg1LDYg
KzE2ODgsMTAgQEAgYm9vbCBzZXRKU1Rlc3RPYmpSZWZsZWN0ZWRDdXN0b21VUkxBdHRyKEpTQzo6
RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlMKIEpTQzo6RW5jb2RlZEpTVmFsdWUg
anNUZXN0T2JqRW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6
RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqRW5h
YmxlZEF0UnVudGltZUF0dHJpYnV0ZShKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6RW5jb2RlZEpTVmFsdWUpOwogI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKK0pTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JFbmFibGVkQXRSdW50
aW1lQXR0cmlidXRlU3RhdGljKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwg
SlNDOjpQcm9wZXJ0eU5hbWUpOworYm9vbCBzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRB
dFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1Zh
bHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVlKTsKKyNlbmRpZgogSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RPYmpUeXBlZEFycmF5QXR0cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6RW5jb2RlZEpTVmFs
dWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKIGJvb2wgc2V0SlNUZXN0T2JqVHlwZWRBcnJheUF0dHIo
SlNDOjpFeGVjU3RhdGUqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OkVuY29kZWRKU1ZhbHVl
KTsKIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ3VzdG9tQXR0cihKU0M6OkV4ZWNTdGF0
ZSosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKQEAgLTE4NzksNiAr
MTg4NiwxNiBAQCBzdGF0aWMgY29uc3QgSGFzaFRhYmxlVmFsdWUgSlNUZXN0T2JqQ29uc3RydWN0
b3JUYWJsZVZhbHVlc1tdID0KICAgICB7ICJzdGF0aWNSZWFkT25seUxvbmdBdHRyIiwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9JbnRy
aW5zaWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5j
Pihqc1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1JlYWRPbmx5TG9uZ0F0dHIpLCAoaW50cHRyX3Qp
IHN0YXRpY19jYXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCiAgICAg
eyAic3RhdGljU3RyaW5nQXR0ciIsIHN0YXRpY19jYXN0PHVuc2lnbmVkPigwKSwgTm9JbnRyaW5z
aWMsIHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihq
c1Rlc3RPYmpDb25zdHJ1Y3RvclN0YXRpY1N0cmluZ0F0dHIpLCAoaW50cHRyX3QpIHN0YXRpY19j
YXN0PFB1dFByb3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPihzZXRKU1Rlc3RPYmpDb25zdHJ1Y3Rv
clN0YXRpY1N0cmluZ0F0dHIpIH0gfSwKICAgICB7ICJUZXN0U3ViT2JqIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwgTm9JbnRyaW5zaWMs
IHsgKGludHB0cl90KXN0YXRpY19jYXN0PFByb3BlcnR5U2xvdDo6R2V0VmFsdWVGdW5jPihqc1Rl
c3RPYmpDb25zdHJ1Y3RvclRlc3RTdWJPYmopLCAoaW50cHRyX3QpIHN0YXRpY19jYXN0PFB1dFBy
b3BlcnR5U2xvdDo6UHV0VmFsdWVGdW5jPigwKSB9IH0sCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVS
RSkKKyAgICB7ICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIiwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KDApLCBOb0ludHJpbnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UHJvcGVy
dHlTbG90OjpHZXRWYWx1ZUZ1bmM+KGpzVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGlt
ZUF0dHJpYnV0ZVN0YXRpYyksIChpbnRwdHJfdCkgc3RhdGljX2Nhc3Q8UHV0UHJvcGVydHlTbG90
OjpQdXRWYWx1ZUZ1bmM+KHNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZVN0YXRpYykgfSB9LAorI2Vsc2UKKyAgICB7IDAsIDAsIE5vSW50cmluc2ljLCB7IDAs
IDAgfSB9LAorI2VuZGlmCisjaWYgRU5BQkxFKFRFU1RfRkVBVFVSRSkKKyAgICB7ICJlbmFibGVk
QXRSdW50aW1lT3BlcmF0aW9uU3RhdGljIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uRW5h
YmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyksIChpbnRwdHJfdCkgKDEpIH0gfSwKKyNlbHNl
CisgICAgeyAwLCAwLCBOb0ludHJpbnNpYywgeyAwLCAwIH0gfSwKKyNlbmRpZgogICAgIHsgIm51
bGxhYmxlU3RyaW5nU3RhdGljTWV0aG9kIiwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KEpTQzo6UHJv
cGVydHlBdHRyaWJ1dGU6OkZ1bmN0aW9uKSwgTm9JbnRyaW5zaWMsIHsgKGludHB0cl90KXN0YXRp
Y19jYXN0PFJhd05hdGl2ZUZ1bmN0aW9uPihqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uTnVs
bGFibGVTdHJpbmdTdGF0aWNNZXRob2QpLCAoaW50cHRyX3QpICgwKSB9IH0sCiAgICAgeyAic3Rh
dGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmciLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJpbnNpYywgeyAoaW50
cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9iakNvbnN0cnVjdG9y
RnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyksIChpbnRwdHJf
dCkgKDApIH0gfSwKICAgICB7ICJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmciLCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RnVuY3Rpb24pLCBOb0ludHJp
bnNpYywgeyAoaW50cHRyX3Qpc3RhdGljX2Nhc3Q8UmF3TmF0aXZlRnVuY3Rpb24+KGpzVGVzdE9i
akNvbnN0cnVjdG9yRnVuY3Rpb25TdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcpLCAoaW50cHRy
X3QpICgxKSB9IH0sCkBAIC0xOTQ1LDYgKzE5NjIsMjAgQEAgdGVtcGxhdGU8PiB2b2lkIEpTVGVz
dE9iakNvbnN0cnVjdG9yOjppbml0aWFsaXplUHJvcGVydGllcyhWTSYgdm0sIEpTRE9NR2xvYmFs
T2IKICAgICBwdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPm5hbWUsIGpzTm9udHJpdmlh
bFN0cmluZygmdm0sIFN0cmluZygiVGVzdE9iamVjdCJfcykpLCBKU0M6OlByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSB8IEpTQzo6UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKTsKICAgICBw
dXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmxlbmd0aCwganNOdW1iZXIoMiksIEpTQzo6
UHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5IHwgSlNDOjpQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pOwogICAgIHJlaWZ5U3RhdGljUHJvcGVydGllcyh2bSwgSlNUZXN0T2JqOjppbmZvKCks
IEpTVGVzdE9iakNvbnN0cnVjdG9yVGFibGVWYWx1ZXMsICp0aGlzKTsKKyNpZiBFTkFCTEUoVEVT
VF9GRUFUVVJFKQorICAgIGlmICghUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVy
ZXMoKS50ZXN0RmVhdHVyZUVuYWJsZWQoKSkgeworICAgICAgICBhdXRvIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnZtLCByZWludGVycHJldF9jYXN0PGNvbnN0IExDaGFy
Kj4oImVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWMiKSwgc3RybGVuKCJlbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlU3RhdGljIikpOworICAgICAgICBWTTo6RGVsZXRlUHJvcGVydHlNb2Rl
U2NvcGUgc2NvcGUodm0sIFZNOjpEZWxldGVQcm9wZXJ0eU1vZGU6Oklnbm9yZUNvbmZpZ3VyYWJs
ZSk7CisgICAgICAgIEpTT2JqZWN0OjpkZWxldGVQcm9wZXJ0eSh0aGlzLCBnbG9iYWxPYmplY3Qu
Z2xvYmFsRXhlYygpLCBwcm9wZXJ0eU5hbWUpOworICAgIH0KKyNlbmRpZgorI2lmIEVOQUJMRShU
RVNUX0ZFQVRVUkUpCisgICAgaWYgKCFSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0
dXJlcygpLnRlc3RGZWF0dXJlRW5hYmxlZCgpKSB7CisgICAgICAgIGF1dG8gcHJvcGVydHlOYW1l
ID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmdm0sIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgTENo
YXIqPigiZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvblN0YXRpYyIpLCBzdHJsZW4oImVuYWJsZWRB
dFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMiKSk7CisgICAgICAgIFZNOjpEZWxldGVQcm9wZXJ0eU1v
ZGVTY29wZSBzY29wZSh2bSwgVk06OkRlbGV0ZVByb3BlcnR5TW9kZTo6SWdub3JlQ29uZmlndXJh
YmxlKTsKKyAgICAgICAgSlNPYmplY3Q6OmRlbGV0ZVByb3BlcnR5KHRoaXMsIGdsb2JhbE9iamVj
dC5nbG9iYWxFeGVjKCksIHByb3BlcnR5TmFtZSk7CisgICAgfQorI2VuZGlmCiB9CiAKIHRlbXBs
YXRlPD4gY29uc3QgQ2xhc3NJbmZvIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJU
ZXN0T2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhP
RF9UQUJMRShKU1Rlc3RPYmpDb25zdHJ1Y3RvcikgfTsKQEAgLTM5NDYsNiArMzk3Nyw0MSBAQCBi
b29sIHNldEpTVGVzdE9iakVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGUoRXhlY1N0YXRlKiBzdGF0
ZSwgRW5jb2RlZEpTVmFsdWUgdGhpcwogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShURVNUX0ZFQVRV
UkUpCitzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqQ29uc3RydWN0b3JFbmFibGVkQXRS
dW50aW1lQXR0cmlidXRlU3RhdGljR2V0dGVyKEV4ZWNTdGF0ZSYgc3RhdGUsIFRocm93U2NvcGUm
IHRocm93U2NvcGUpCit7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSB0b0pTPElETERPTVN0cmluZz4o
c3RhdGUsIHRocm93U2NvcGUsIFRlc3RPYmo6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0
aWMoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworRW5jb2RlZEpTVmFsdWUganNUZXN0T2Jq
Q29uc3RydWN0b3JFbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljKEV4ZWNTdGF0ZSogc3Rh
dGUsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKQoreworICAgIHJldHVy
biBJRExBdHRyaWJ1dGU8SlNUZXN0T2JqPjo6Z2V0U3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9y
RW5hYmxlZEF0UnVudGltZUF0dHJpYnV0ZVN0YXRpY0dldHRlcj4oKnN0YXRlLCB0aGlzVmFsdWUs
ICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIik7Cit9CisKKyNlbmRpZgorCisjaWYg
RU5BQkxFKFRFU1RfRkVBVFVSRSkKK3N0YXRpYyBpbmxpbmUgYm9vbCBzZXRKU1Rlc3RPYmpDb25z
dHJ1Y3RvckVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVTdGF0aWNTZXR0ZXIoRXhlY1N0YXRlJiBz
dGF0ZSwgSlNWYWx1ZSB2YWx1ZSwgVGhyb3dTY29wZSYgdGhyb3dTY29wZSkKK3sKKyAgICBVTlVT
RURfUEFSQU0odGhyb3dTY29wZSk7CisgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
RE9NU3RyaW5nPihzdGF0ZSwgdmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZmFsc2UpOworICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChzdGF0ZSwgdGhyb3dTY29w
ZSwgWyZdIHsKKyAgICAgICAgcmV0dXJuIFRlc3RPYmo6OnNldEVuYWJsZWRBdFJ1bnRpbWVBdHRy
aWJ1dGVTdGF0aWMoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOworICAgIH0pOworICAgIHJldHVybiB0
cnVlOworfQorCitib29sIHNldEpTVGVzdE9iakNvbnN0cnVjdG9yRW5hYmxlZEF0UnVudGltZUF0
dHJpYnV0ZVN0YXRpYyhFeGVjU3RhdGUqIHN0YXRlLCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWRWYWx1ZSkKK3sKKyAgICByZXR1cm4gSURMQXR0cmlidXRl
PEpTVGVzdE9iaj46OnNldFN0YXRpYzxzZXRKU1Rlc3RPYmpDb25zdHJ1Y3RvckVuYWJsZWRBdFJ1
bnRpbWVBdHRyaWJ1dGVTdGF0aWNTZXR0ZXI+KCpzdGF0ZSwgdGhpc1ZhbHVlLCBlbmNvZGVkVmFs
dWUsICJlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlU3RhdGljIik7Cit9CisKKyNlbmRpZgorCiBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0T2JqVHlwZWRBcnJheUF0dHJHZXR0ZXIoRXhlY1N0
YXRlJiBzdGF0ZSwgSlNUZXN0T2JqJiB0aGlzT2JqZWN0LCBUaHJvd1Njb3BlJiB0aHJvd1Njb3Bl
KQogewogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKQEAgLTUyNjMsNiArNTMyOSwyNiBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9u
RW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbgogCiAjZW5kaWYKIAorI2lmIEVOQUJMRShURVNUX0ZF
QVRVUkUpCitzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0T2JqQ29uc3Ry
dWN0b3JGdW5jdGlvbkVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWNCb2R5KEpTQzo6RXhl
Y1N0YXRlKiBzdGF0ZSwgSlNDOjpUaHJvd1Njb3BlJiB0aHJvd1Njb3BlKQoreworICAgIFVOVVNF
RF9QQVJBTShzdGF0ZSk7CisgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOworICAgIGlmIChV
TkxJS0VMWShzdGF0ZS0+YXJndW1lbnRDb3VudCgpIDwgMSkpCisgICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3Ioc3RhdGUsIHRocm93U2NvcGUsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9y
KHN0YXRlKSk7CisgICAgYXV0byB0ZXN0UGFyYW0gPSBjb252ZXJ0PElETExvbmc+KCpzdGF0ZSwg
c3RhdGUtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRo
cm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFRlc3RPYmo6OmVuYWJsZWRBdFJ1bnRp
bWVPcGVyYXRpb25TdGF0aWMoV1RGTW92ZSh0ZXN0UGFyYW0pKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworfQorCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
U3RhdGljKEV4ZWNTdGF0ZSogc3RhdGUpCit7CisgICAgcmV0dXJuIElETE9wZXJhdGlvbjxKU1Rl
c3RPYmo+OjpjYWxsU3RhdGljPGpzVGVzdE9iakNvbnN0cnVjdG9yRnVuY3Rpb25FbmFibGVkQXRS
dW50aW1lT3BlcmF0aW9uU3RhdGljQm9keT4oKnN0YXRlLCAiZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpYyIpOworfQorCisjZW5kaWYKKwogc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRK
U1ZhbHVlIGpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uRW5hYmxlZEluU3BlY2lmaWNXb3JsZFdo
ZW5SdW50aW1lRmVhdHVyZUVuYWJsZWRCb2R5KEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgdHlwZW5h
bWUgSURMT3BlcmF0aW9uPEpTVGVzdE9iaj46OkNsYXNzUGFyYW1ldGVyIGNhc3RlZFRoaXMsIEpT
Qzo6VGhyb3dTY29wZSYgdGhyb3dTY29wZSkKIHsKICAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RHbG9i
YWxPYmplY3QuaWRsIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RH
bG9iYWxPYmplY3QuaWRsCmluZGV4IDUxMDBlOGEyYjhlODE2MGYzZjRmNGYyMjJhOGNiMDhmNzg3
MDA2ODYuLmZkNGZiMzhlNzdhZTI3OWJjYTJhYzgzMGE1MzE3ODY2MWM5Y2FlMjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0R2xvYmFsT2JqZWN0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdEdsb2Jh
bE9iamVjdC5pZGwKQEAgLTM0LDYgKzM0LDcgQEAKICAgICB2b2lkIHJlZ3VsYXJPcGVyYXRpb24o
RE9NU3RyaW5nIHRlc3RQYXJhbSk7CiAgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5h
YmxlZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkQXRSdW50aW1lT3BlcmF0aW9u
KERPTVN0cmluZyB0ZXN0UGFyYW0pOwogICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVu
YWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZvaWQgZW5hYmxlZEF0UnVudGltZU9wZXJhdGlv
bihsb25nIHRlc3RQYXJhbSk7CisgICAgW0NvbmRpdGlvbmFsPVRFU1RfRkVBVFVSRSwgRW5hYmxl
ZEF0UnVudGltZT1UZXN0RmVhdHVyZV0gc3RhdGljIHZvaWQgZW5hYmxlZEF0UnVudGltZU9wZXJh
dGlvblN0YXRpYyhsb25nIHRlc3RQYXJhbSk7CiAKICAgICBbRW5hYmxlZEZvcldvcmxkPXNwZWNp
ZmljV29ybGRdIHZvaWQgZW5hYmxlZEluU3BlY2lmaWNXb3JsZChsb25nIHRlc3RQYXJhbSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2Jq
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbApp
bmRleCA3MWRkZmM0ODllZDJkNWRhMjU2ZmI1YzQzMGI5MzJlYmRjNGY4NzBiLi5iZTA5MGE0Mzhm
MzRkY2QzNjYzZTg3ZmZiMDY3Njc2MjdhNTJmMTFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0xMTAsNiArMTEwLDggQEAgZW51
bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKICAgICBbQ29uZGl0aW9u
YWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlJlRlc3RGZWF0dXJl
MV0gYXR0cmlidXRlIERPTVN0cmluZyBlbmFibGVkQXRSdW50aW1lQXR0cmlidXRlOwogICAgIFtD
b25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHZv
aWQgZW5hYmxlZEF0UnVudGltZU9wZXJhdGlvbihET01TdHJpbmcgdGVzdFBhcmFtKTsKICAgICBb
Q29uZGl0aW9uYWw9VEVTVF9GRUFUVVJFLCBFbmFibGVkQXRSdW50aW1lPVRlc3RGZWF0dXJlXSB2
b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb24obG9uZyB0ZXN0UGFyYW0pOworICAgIFtDb25k
aXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1cmVdIHN0YXRp
YyB2b2lkIGVuYWJsZWRBdFJ1bnRpbWVPcGVyYXRpb25TdGF0aWMobG9uZyB0ZXN0UGFyYW0pOwor
ICAgIFtDb25kaXRpb25hbD1URVNUX0ZFQVRVUkUsIEVuYWJsZWRBdFJ1bnRpbWU9VGVzdEZlYXR1
cmVdIHN0YXRpYyBhdHRyaWJ1dGUgRE9NU3RyaW5nIGVuYWJsZWRBdFJ1bnRpbWVBdHRyaWJ1dGVT
dGF0aWM7CiAKICAgICBbRW5hYmxlZEZvcldvcmxkPXNvbWVXb3JsZCwgRW5hYmxlZEF0UnVudGlt
ZT1UZXN0RmVhdHVyZV0gdm9pZCBlbmFibGVkSW5TcGVjaWZpY1dvcmxkV2hlblJ1bnRpbWVGZWF0
dXJlRW5hYmxlZChsb25nIHRlc3RQYXJhbSk7CiAgICAgW0VuYWJsZWRGb3JXb3JsZD1zb21lV29y
bGRdIHZvaWQgd29ybGRTcGVjaWZpY01ldGhvZChsb25nIHRlc3RQYXJhbSk7CkBAIC0yNzMsNyAr
Mjc1LDcgQEAgZW51bSBUZXN0Q29uZmlkZW5jZSB7ICJoaWdoIiwgImtpbmRhLWxvdyIgfTsKIAog
ICAgIFtDYWNoZWRBdHRyaWJ1dGVdIHJlYWRvbmx5IGF0dHJpYnV0ZSBhbnkgY2FjaGVkQXR0cmli
dXRlMTsKICAgICBbQ2FjaGVkQXR0cmlidXRlXSByZWFkb25seSBhdHRyaWJ1dGUgYW55IGNhY2hl
ZEF0dHJpYnV0ZTI7Ci0gICAgCisKICAgICBhdHRyaWJ1dGUgYW55IGFueUF0dHJpYnV0ZTsKICAg
ICBhdHRyaWJ1dGUgb2JqZWN0IG9iamVjdEF0dHJpYnV0ZTsKIApAQCAtMzk3LDcgKzM5OSw3IEBA
IGVudW0gVGVzdENvbmZpZGVuY2UgeyAiaGlnaCIsICJraW5kYS1sb3ciIH07CiAKICAgICByZWFk
b25seSBhdHRyaWJ1dGUgUHJvbWlzZTx2b2lkPiB0ZXN0UmVhZE9ubHlWb2lkUHJvbWlzZUF0dHJp
YnV0ZTsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgUHJvbWlzZTxUZXN0Tm9kZT4gdGVzdFJlYWRP
bmx5UHJvbWlzZUF0dHJpYnV0ZTsKLSAgICAKKwogICAgIC8vIFByb21pc2UgZnVuY3Rpb24KICAg
ICBQcm9taXNlPHZvaWQ+IHRlc3RQcm9taXNlRnVuY3Rpb24oKTsKICAgICBQcm9taXNlPHZvaWQ+
IHRlc3RQcm9taXNlRnVuY3Rpb25XaXRoRmxvYXRBcmd1bWVudChmbG9hdCBhKTsKQEAgLTQzMSw3
ICs0MzMsNyBAQCBlbnVtIFRlc3RDb25maWRlbmNlIHsgImhpZ2giLCAia2luZGEtbG93IiB9Owog
ICAgIHNlcmlhbGl6ZXIgPSB7Y3JlYXRlLCByZWFkT25seVN0cmluZ0F0dHIsIGVudW1BdHRyLCBs
b25nQXR0cn07CiAKICAgICB2b2lkIGJ1ZmZlclNvdXJjZVBhcmFtZXRlcihCdWZmZXJTb3VyY2Ug
ZGF0YSk7Ci0gICAgCisKICAgICBsZWdhY3ljYWxsZXIgdm9pZCBsZWdhY3lDYWxsZXJOYW1lZChs
b25nIHBhcmFtKTsKICAgICBsZWdhY3ljYWxsZXIgbG9uZyAoRE9NU3RyaW5nIHBhcmFtKTsKICAg
ICBsZWdhY3ljYWxsZXIgdm9pZCAoKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>