<?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>216224</bug_id>
          
          <creation_ts>2020-09-06 01:58:40 -0700</creation_ts>
          <short_desc>[JSC] Canonicalize &quot;true&quot; unicode extension type value to &quot;&quot;</short_desc>
          <delta_ts>2020-09-14 19:50:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>213425</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1686178</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-06 01:58:40 -0700</bug_when>
    <thetext>[JSC] Canonicalize &quot;true&quot; unicode extension type value to &quot;&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686179</commentid>
    <comment_count>1</comment_count>
      <attachid>408119</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-06 02:00:43 -0700</bug_when>
    <thetext>Created attachment 408119
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1686180</commentid>
    <comment_count>2</comment_count>
      <attachid>408120</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-06 02:04:31 -0700</bug_when>
    <thetext>Created attachment 408120
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687183</commentid>
    <comment_count>3</comment_count>
      <attachid>408120</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-09-09 16:04:25 -0700</bug_when>
    <thetext>Comment on attachment 408120
Patch

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

&gt; Source/JavaScriptCore/runtime/IntlLocalePrototype.cpp:188
&gt; +    if (caseFirst.isEmpty())
&gt; +        return JSValue::encode(jsUndefined());
&gt; +    // If caseFirst is &quot;true&quot;, then we should return &quot;&quot; since language tag canonicalization makes it &quot;&quot;.
&gt; +    if (caseFirst == &quot;true&quot;_s)
&gt; +        return JSValue::encode(jsEmptyString(vm));
&gt; +    return JSValue::encode(jsString(vm, caseFirst));

This shouldn&apos;t be correct -- kf isn&apos;t a boolean extension; it should only ever be &quot;upper&quot;/&quot;lower&quot;/&quot;false&quot;/undefined (though Intl.Locale will evidently let it be an arbitrary string).

This does highlight an interesting separate issue in Intl.Locale though -- if the locale string has a *non-boolean* Unicode extension with the value omitted, we&apos;re returning &quot;yes&quot; instead of &quot;true&quot;. For example:

    new Intl.Locale(&apos;en-us-u-co&apos;).collation
    &gt; yes

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:306
&gt; +        // In the following unicode extension keys, &quot;yes&quot; is alias of &quot;true&quot;. So we should not include value.
&gt; +        // See CLDR key name=&quot;kb&quot; entry for example.
&gt; +        switch (computeTwoCharacters16Code(key)) {
&gt; +        case computeTwoCharacters16Code(&quot;kb&quot;_s):
&gt; +        case computeTwoCharacters16Code(&quot;kc&quot;_s):
&gt; +        case computeTwoCharacters16Code(&quot;kh&quot;_s):
&gt; +        case computeTwoCharacters16Code(&quot;kk&quot;_s):
&gt; +        case computeTwoCharacters16Code(&quot;kn&quot;_s):

I don&apos;t think we should be maintaining an allowlist here? Most of these are unknown to ECMA-402 and V8 evidently accepts &quot;yes&quot; for arbitrary extensions.
Also, unless I&apos;m missing something, &quot;yes&quot; should never appear in the output of uloc_toLanguageTag, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687310</commentid>
    <comment_count>4</comment_count>
      <attachid>408120</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-10 02:15:47 -0700</bug_when>
    <thetext>Comment on attachment 408120
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlLocalePrototype.cpp:188
&gt;&gt; +    return JSValue::encode(jsString(vm, caseFirst));
&gt; 
&gt; This shouldn&apos;t be correct -- kf isn&apos;t a boolean extension; it should only ever be &quot;upper&quot;/&quot;lower&quot;/&quot;false&quot;/undefined (though Intl.Locale will evidently let it be an arbitrary string).
&gt; 
&gt; This does highlight an interesting separate issue in Intl.Locale though -- if the locale string has a *non-boolean* Unicode extension with the value omitted, we&apos;re returning &quot;yes&quot; instead of &quot;true&quot;. For example:
&gt; 
&gt;     new Intl.Locale(&apos;en-us-u-co&apos;).collation
&gt;     &gt; yes

However, if &quot;true&quot; is explicitly specified (`en-u-kf-true`), then, I think we should return &quot;&quot; since

&gt; Any type or tfield value &quot;true&quot; is removed.

rule can be applied regardless of whether this is a boolean extension. So, when &quot;true&quot; is specified, &quot;&quot; is better than returning &quot;true&quot;.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:306
&gt;&gt; +        case computeTwoCharacters16Code(&quot;kn&quot;_s):
&gt; 
&gt; I don&apos;t think we should be maintaining an allowlist here? Most of these are unknown to ECMA-402 and V8 evidently accepts &quot;yes&quot; for arbitrary extensions.
&gt; Also, unless I&apos;m missing something, &quot;yes&quot; should never appear in the output of uloc_toLanguageTag, right?

Right, &quot;yes&quot; will not appear from ICU except for the user explicitly set &quot;yes&quot;. And currently it is tested in test262/test/intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-yes-to-true.js
Currently, ICU does not handle this correctly, so we need to do that here. I think this list is small enough, so I&apos;m fine to keep it here. And we can remove it once ICU supports this correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687311</commentid>
    <comment_count>5</comment_count>
      <attachid>408425</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-10 02:22:12 -0700</bug_when>
    <thetext>Created attachment 408425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687505</commentid>
    <comment_count>6</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-09-10 12:47:26 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #4)
&gt; Comment on attachment 408120 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=408120&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/IntlLocalePrototype.cpp:188
&gt; &gt;&gt; +    return JSValue::encode(jsString(vm, caseFirst));
&gt; &gt; 
&gt; &gt; This shouldn&apos;t be correct -- kf isn&apos;t a boolean extension; it should only ever be &quot;upper&quot;/&quot;lower&quot;/&quot;false&quot;/undefined (though Intl.Locale will evidently let it be an arbitrary string).
&gt; &gt; 
&gt; &gt; This does highlight an interesting separate issue in Intl.Locale though -- if the locale string has a *non-boolean* Unicode extension with the value omitted, we&apos;re returning &quot;yes&quot; instead of &quot;true&quot;. For example:
&gt; &gt; 
&gt; &gt;     new Intl.Locale(&apos;en-us-u-co&apos;).collation
&gt; &gt;     &gt; yes
&gt; 
&gt; However, if &quot;true&quot; is explicitly specified (`en-u-kf-true`), then, I think
&gt; we should return &quot;&quot; since
&gt; 
&gt; &gt; Any type or tfield value &quot;true&quot; is removed.
&gt; 
&gt; rule can be applied regardless of whether this is a boolean extension. So,
&gt; when &quot;true&quot; is specified, &quot;&quot; is better than returning &quot;true&quot;.

Hmm, but this is purely a statement about locale string canonicalization and not about how Intl.Locale&apos;s getters should behave. You may still be right (since canonicalization happens in step 12 of https://tc39.es/ecma402/#sec-Intl.Locale), but there&apos;s absolutely nothing unique about caseFirst, so we&apos;d need to do it for the other non-boolean getters too. I guess this and the &quot;yes gets returned&quot; issue I mentioned should probably be handled together within IntlLocale.cpp.


&gt; &gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:306
&gt; &gt;&gt; +        case computeTwoCharacters16Code(&quot;kn&quot;_s):
&gt; &gt; 
&gt; &gt; I don&apos;t think we should be maintaining an allowlist here? Most of these are unknown to ECMA-402 and V8 evidently accepts &quot;yes&quot; for arbitrary extensions.
&gt; &gt; Also, unless I&apos;m missing something, &quot;yes&quot; should never appear in the output of uloc_toLanguageTag, right?
&gt; 
&gt; Right, &quot;yes&quot; will not appear from ICU except for the user explicitly set
&gt; &quot;yes&quot;. And currently it is tested in
&gt; test262/test/intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-yes-
&gt; to-true.js
&gt; Currently, ICU does not handle this correctly, so we need to do that here. I
&gt; think this list is small enough, so I&apos;m fine to keep it here. And we can
&gt; remove it once ICU supports this correctly.

That test makes sense, but my reason for confusion is because this is the existing behavior without your new canonicalization:

    new Intl.Locale(&apos;en-us-u-kb-yes&apos;)
    &gt; en-US-u-kb-true
    new Intl.Locale(&apos;en-us-u-co-yes&apos;)
    &gt; en-US-u-co-yes

...so it seems like we only see &quot;yes&quot; returned from uloc_toLanguageTag if the user provided &quot;yes&quot; *and* the extension is non-boolean, which would mean that we&apos;d never need to check for &quot;yes&quot; in particular.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687881</commentid>
    <comment_count>7</comment_count>
      <attachid>408120</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-11 19:49:59 -0700</bug_when>
    <thetext>Comment on attachment 408120
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlLocalePrototype.cpp:188
&gt;&gt;&gt;&gt; +    return JSValue::encode(jsString(vm, caseFirst));
&gt;&gt;&gt; 
&gt;&gt;&gt; This shouldn&apos;t be correct -- kf isn&apos;t a boolean extension; it should only ever be &quot;upper&quot;/&quot;lower&quot;/&quot;false&quot;/undefined (though Intl.Locale will evidently let it be an arbitrary string).
&gt;&gt;&gt; 
&gt;&gt;&gt; This does highlight an interesting separate issue in Intl.Locale though -- if the locale string has a *non-boolean* Unicode extension with the value omitted, we&apos;re returning &quot;yes&quot; instead of &quot;true&quot;. For example:
&gt;&gt;&gt; 
&gt;&gt;&gt;     new Intl.Locale(&apos;en-us-u-co&apos;).collation
&gt;&gt;&gt;     &gt; yes
&gt;&gt; 
&gt;&gt; However, if &quot;true&quot; is explicitly specified (`en-u-kf-true`), then, I think we should return &quot;&quot; since
&gt; 
&gt; Hmm, but this is purely a statement about locale string canonicalization and not about how Intl.Locale&apos;s getters should behave. You may still be right (since canonicalization happens in step 12 of https://tc39.es/ecma402/#sec-Intl.Locale), but there&apos;s absolutely nothing unique about caseFirst, so we&apos;d need to do it for the other non-boolean getters too. I guess this and the &quot;yes gets returned&quot; issue I mentioned should probably be handled together within IntlLocale.cpp.

OK, so we should move this logic to IntlLocale.cpp&apos;s getters. Changed.

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:306
&gt;&gt;&gt;&gt; +        case computeTwoCharacters16Code(&quot;kn&quot;_s):
&gt;&gt;&gt; 
&gt;&gt;&gt; I don&apos;t think we should be maintaining an allowlist here? Most of these are unknown to ECMA-402 and V8 evidently accepts &quot;yes&quot; for arbitrary extensions.
&gt;&gt;&gt; Also, unless I&apos;m missing something, &quot;yes&quot; should never appear in the output of uloc_toLanguageTag, right?
&gt;&gt; 
&gt;&gt; Right, &quot;yes&quot; will not appear from ICU except for the user explicitly set &quot;yes&quot;. And currently it is tested in test262/test/intl402/Intl/getCanonicalLocales/unicode-ext-canonicalize-yes-to-true.js
&gt;&gt; Currently, ICU does not handle this correctly, so we need to do that here. I think this list is small enough, so I&apos;m fine to keep it here. And we can remove it once ICU supports this correctly.
&gt; 
&gt; That test makes sense, but my reason for confusion is because this is the existing behavior without your new canonicalization:
&gt; 
&gt;     new Intl.Locale(&apos;en-us-u-kb-yes&apos;)
&gt;     &gt; en-US-u-kb-true
&gt;     new Intl.Locale(&apos;en-us-u-co-yes&apos;)
&gt;     &gt; en-US-u-co-yes
&gt; 
&gt; ...so it seems like we only see &quot;yes&quot; returned from uloc_toLanguageTag if the user provided &quot;yes&quot; *and* the extension is non-boolean, which would mean that we&apos;d never need to check for &quot;yes&quot; in particular.

Ah! Right, so this is not necessary. Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687882</commentid>
    <comment_count>8</comment_count>
      <attachid>408582</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-11 20:18:53 -0700</bug_when>
    <thetext>Created attachment 408582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687883</commentid>
    <comment_count>9</comment_count>
      <attachid>408583</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-11 20:24:17 -0700</bug_when>
    <thetext>Created attachment 408583
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687895</commentid>
    <comment_count>10</comment_count>
      <attachid>408582</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2020-09-11 21:03:26 -0700</bug_when>
    <thetext>Comment on attachment 408582
Patch

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

r=me

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:193
&gt; +static Vector&lt;StringView&gt; unicodeExtensionSubTags(StringView extension)

nit: Since we&apos;re moving this anyway, could we rename it unicodeExtensionSubtags with a lowercase t?

...or rather, maybe unicodeExtensionComponents, since that&apos;s what it&apos;s been renamed to:
https://tc39.es/ecma402/#sec-unicode-extension-components

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:293
&gt; +        if (subtag.length() != 2) {
&gt; +            ++index;
&gt; +            continue;
&gt; +        }

Is this just for the leading attribute case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687896</commentid>
    <comment_count>11</comment_count>
      <attachid>408582</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-11 21:15:13 -0700</bug_when>
    <thetext>Comment on attachment 408582
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:193
&gt;&gt; +static Vector&lt;StringView&gt; unicodeExtensionSubTags(StringView extension)
&gt; 
&gt; nit: Since we&apos;re moving this anyway, could we rename it unicodeExtensionSubtags with a lowercase t?
&gt; 
&gt; ...or rather, maybe unicodeExtensionComponents, since that&apos;s what it&apos;s been renamed to:
&gt; https://tc39.es/ecma402/#sec-unicode-extension-components

unicodeExtensionComponents sounds good. Changed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:293
&gt;&gt; +        }
&gt; 
&gt; Is this just for the leading attribute case?

Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687899</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-09-11 22:57:05 -0700</bug_when>
    <thetext>Committed r266973: &lt;https://trac.webkit.org/changeset/266973&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1687900</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-11 22:58:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/68751852&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408119</attachid>
            <date>2020-09-06 02:00:43 -0700</date>
            <delta_ts>2020-09-06 02:04:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216224-20200906020042.patch</filename>
            <type>text/plain</type>
            <size>21316</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YWVkYjlmYjgxNjgzOGY4ZTMxYjZlOGQyNWYwMjQ0MmFmNTRmOTExLi4wNDIxMDkwNjU2NTU3Njhk
MDY2NTA1MTI0MzRjYjI3MmY1OTkwOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24g
dHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1IGRlZmluZXMgdGhhdCB1bmlj
b2RlIGV4dGVuc2lvbiB0eXBlJ3MgInRydWUiIHNob3VsZCBiZSBjb252ZXJnZWQgdG8gIiIuCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSBleHRyYWN0aW5nIHVuaWNvZGUgZXh0
ZW5zaW9uIHN1YnRhZ3MgYW5kIHJlcGxhY2luZyAidHJ1ZSIgdG8gIiIuCisKKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjp1bmljb2RlRXh0ZW5zaW9uU3ViVGFncyk6CisgICAgICAgIChK
U0M6Omxhbmd1YWdlVGFnRm9yTG9jYWxlSUQpOgorICAgICAgICAoSlNDOjpyZXNvbHZlTG9jYWxl
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKTog
RGVsZXRlZC4KKwogMjAyMC0wOS0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHN1cHByZXNzIGV4Y2VwdGlvbiBjaGVja2luZyBhZnRl
ciB1bndyYXBGb3JPbGRGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZjc3ZWYzODAwOWNkZjMwYjVmNDZiYTJmNmUy
MDU4MGIyNmUwMzBmNC4uOTFiMDlkZDI5Mjc0NDk4MTM1NDY5ODQ3NTc4ZGE5MzRjYzZiMTgxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBl
eHRlbnNpb24gdHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6
OlN0cmluZ1ZpZXc6OmNoYXJhY3RlckF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nVmll
dzo6b3BlcmF0b3JbXSBjb25zdCk6CisKIDIwMjAtMDktMDUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVTRShQTEFURk9STV9TWVNU
RU1fRkFMTEJBQ0tfTElTVCkgaXMgdHJ1ZSBvbiBhbGwgQ29jb2EgcGxhdGZvcm1zLCBzbyB0aGVy
ZSdzIG5vIG5lZWQgdG8gY29uc3VsdCBpdCBpbiBDb2NvYS1zcGVjaWZpYyBmaWxlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cAppbmRleCA0YThiODQzOThlYjA4NWIxNjYwNGZlNDE0OWJlMTU2ODg2ZGQ3OThkLi5mNDQ0NmI0
NTEyYWFjYmE0NmYwZmJhZTQxZmE2ZWY0YWZjZDdkYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcApAQCAtMTgwLDcg
KzE4MCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJDYXNlRmlyc3QoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2Fz
ZUZpcnN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIExvY2FsZSJfcyk7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhc2VGaXJzdCA9IGxvY2FsZS0+
Y2FzZUZpcnN0KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY2FzZUZpcnN0LmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgY2Fz
ZUZpcnN0KSkpOworICAgIGlmIChjYXNlRmlyc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIC8vIElmIGNhc2VGaXJzdCBpcyAi
dHJ1ZSIsIHRoZW4gd2Ugc2hvdWxkIHJldHVybiAiIiBzaW5jZSBsYW5ndWFnZSB0YWcgY2Fub25p
Y2FsaXphdGlvbiBtYWtlcyBpdCAiIi4KKyAgICBpZiAoY2FzZUZpcnN0ID09ICJ0cnVlIl9zKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0pKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBjYXNlRmlyc3QpKTsKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4
IDMwMWJkZDEzZWI2NzAzYTM5OGRkZTY0ZDRjNDM4NWE0MTEwZTFmMDQuLmEwYmFhMWE4NzgxMzU2
NzNmM2E4MDQwZWFiYTQ0M2UyYmZjZjZkNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xOTAsNiArMTkwLDQ3IEBAIFN0cnVjdHVyZSogSW50
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogfQogCitzdGF0aWMgVmVjdG9yPFN0cmluZ1ZpZXc+IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdz
KFN0cmluZ1ZpZXcgZXh0ZW5zaW9uKQoreworICAgIC8vIFVuaWNvZGVFeHRlbnNpb25TdWJ0YWdz
IChleHRlbnNpb24pCisgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMt
dW5pY29kZWV4dGVuc2lvbnN1YnRhZ3MKKworICAgIGF1dG8gZXh0ZW5zaW9uTGVuZ3RoID0gZXh0
ZW5zaW9uLmxlbmd0aCgpOworICAgIGlmIChleHRlbnNpb25MZW5ndGggPCAzKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgVmVjdG9yPFN0cmluZ1ZpZXc+IHN1YnRhZ3M7CisgICAgc2l6ZV90
IHN1YnRhZ1N0YXJ0ID0gMzsgLy8gU2tpcCBpbml0aWFsIC11LS4KKyAgICBzaXplX3QgdmFsdWVT
dGFydCA9IDM7CisgICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gc3VidGFnU3RhcnQ7IGluZGV4IDwgZXh0ZW5zaW9uTGVuZ3RoOyArK2luZGV4KSB7Cisg
ICAgICAgIGlmIChleHRlbnNpb25baW5kZXhdID09ICctJykgeworICAgICAgICAgICAgaWYgKGlu
ZGV4IC0gc3VidGFnU3RhcnQgPT0gMikgeworICAgICAgICAgICAgICAgIC8vIFRhZyBpcyBhIGtl
eSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVlIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAg
ICAgICAgICAgICBpZiAoc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0ID4gMSkKKyAgICAgICAgICAg
ICAgICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBz
dWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgLSAxKSk7CisgICAgICAgICAgICAgICAgc3VidGFncy5h
cHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyhzdWJ0YWdTdGFydCwgaW5kZXggLSBzdWJ0YWdTdGFy
dCkpOworICAgICAgICAgICAgICAgIHZhbHVlU3RhcnQgPSBpbmRleCArIDE7CisgICAgICAgICAg
ICAgICAgaXNMZWFkaW5nID0gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGVhZGlu
ZykgeworICAgICAgICAgICAgICAgIC8vIExlYWRpbmcgc3VidGFncyBiZWZvcmUgZmlyc3Qga2V5
LgorICAgICAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcoc3Vi
dGFnU3RhcnQsIGluZGV4IC0gc3VidGFnU3RhcnQpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZVN0
YXJ0ID0gaW5kZXggKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3VidGFnU3RhcnQg
PSBpbmRleCArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbkxlbmd0aCAt
IHN1YnRhZ1N0YXJ0ID09IDIpIHsKKyAgICAgICAgLy8gVHJhaWxpbmcgYW4gZXh0ZW5zaW9uIGtl
eSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVlIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAg
ICAgaWYgKHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCA+IDEpCisgICAgICAgICAgICBzdWJ0YWdz
LmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVlU3RhcnQsIHN1YnRhZ1N0YXJ0IC0gdmFs
dWVTdGFydCAtIDEpKTsKKyAgICAgICAgdmFsdWVTdGFydCA9IHN1YnRhZ1N0YXJ0OworICAgIH0K
KyAgICAvLyBBcHBlbmQgZmluYWwga2V5J3MgdmFsdWUuCisgICAgc3VidGFncy5hcHBlbmQoZXh0
ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBleHRlbnNpb25MZW5ndGggLSB2YWx1ZVN0YXJ0
KSk7CisgICAgcmV0dXJuIHN1YnRhZ3M7Cit9CisKIFZlY3RvcjxjaGFyLCAzMj4gbG9jYWxlSURC
dWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5nJiB0YWcpCiB7CiAgICAgaWYgKCF0YWcu
bGVuZ3RoKCkpCkBAIC0yMTksMTIgKzI2MCw5NSBAQCBTdHJpbmcgbGFuZ3VhZ2VUYWdGb3JMb2Nh
bGVJRChjb25zdCBjaGFyKiBsb2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgLy8gVGhpcyBp
cyB1c2VkIHRvIHN0b3JlIGludG8gc3RhdGljIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBzaGFyZWQg
YWNyb3NzIEpTQyBleGVjdXRpb24gdGhyZWFkcy4KLSAgICAvLyBUaGlzIG11c3QgYmUgaW1tb3J0
YWwgdG8gbWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZlLgotICAgIGlmIChpc0ltbW9ydGFs
KQotICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IFsmXShW
ZWN0b3I8Y2hhciwgMzI+JiYgYnVmZmVyKSAtPiBTdHJpbmcgeworICAgICAgICAvLyBUaGlzIGlz
IHVzZWQgdG8gc3RvcmUgaW50byBzdGF0aWMgdmFyaWFibGVzIHRoYXQgbWF5IGJlIHNoYXJlZCBh
Y3Jvc3MgSlNDIGV4ZWN1dGlvbiB0aHJlYWRzLgorICAgICAgICAvLyBUaGlzIG11c3QgYmUgaW1t
b3J0YWwgdG8gbWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZlLgorICAgICAgICBpZiAoaXNJ
bW1vcnRhbCkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJp
bmdJbXBsKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3Ry
aW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIH07CisKKyAgICBTdHJpbmdW
aWV3IGxvY2FsZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBBU1NFUlQobG9j
YWxlLmlzOEJpdCgpKTsKKyAgICBzaXplX3QgZXh0ZW5zaW9uSW5kZXggPSBsb2NhbGUuZmluZCgi
LXUtIik7CisgICAgaWYgKGV4dGVuc2lvbkluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gY3JlYXRlUmVzdWx0KFdURk1vdmUoYnVmZmVyKSk7CisKKyAgICAvLyBTaW5jZSBJQ1UncyBj
YW5vbmljYWxpemF0aW9uIGlzIGluY29tcGxldGUsIHdlIG5lZWQgdG8gcGVyZm9ybSBzb21lIG9m
IGNhbm9uaWNhbGl6YXRpb24gaGVyZS4KKyAgICBzaXplX3QgZXh0ZW5zaW9uTGVuZ3RoID0gbG9j
YWxlLmxlbmd0aCgpIC0gZXh0ZW5zaW9uSW5kZXg7CisgICAgc2l6ZV90IGVuZCA9IGV4dGVuc2lv
bkluZGV4ICsgMzsKKyAgICB3aGlsZSAoZW5kIDwgbG9jYWxlLmxlbmd0aCgpKSB7CisgICAgICAg
IGVuZCA9IGxvY2FsZS5maW5kKCctJywgZW5kKTsKKyAgICAgICAgaWYgKGVuZCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGb3VuZCBhbm90aGVyIHNpbmdsZXRv
bi4KKyAgICAgICAgaWYgKGVuZCArIDIgPCBsb2NhbGUubGVuZ3RoKCkgJiYgbG9jYWxlW2VuZCAr
IDJdID09ICctJykgeworICAgICAgICAgICAgZXh0ZW5zaW9uTGVuZ3RoID0gZW5kIC0gZXh0ZW5z
aW9uSW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbmQrKzsK
KyAgICB9CisKKyAgICBhdXRvIHNob3VsZEluY2x1ZGUgPSBbXShTdHJpbmdWaWV3IGtleSwgU3Ry
aW5nVmlldyB2YWx1ZSkgeworICAgICAgICBBU1NFUlQoa2V5Lmxlbmd0aCgpID09IDIpOworICAg
ICAgICAvLyBJZiB2YWx1ZSBpcyAidHJ1ZSIsIHdlIHNob3VsZCBub3QgaW5jbHVkZSB2YWx1ZS4K
KyAgICAgICAgaWYgKHZhbHVlID09ICJ0cnVlIl9zKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAodmFsdWUgIT0gInllcyJfcykKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAvLyBJbiB0aGUgZm9sbG93aW5nIHVuaWNvZGUgZXh0ZW5zaW9uIGtleXMsICJ5
ZXMiIGlzIGFsaWFzIG9mICJ0cnVlIi4gU28gd2Ugc2hvdWxkIG5vdCBpbmNsdWRlIHZhbHVlLgor
ICAgICAgICAvLyBTZWUgQ0xEUiBrZXkgbmFtZT0ia2IiIGVudHJ5IGZvciBleGFtcGxlLgorICAg
ICAgICBzd2l0Y2ggKGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKGtleSkpIHsKKyAgICAgICAg
Y2FzZSBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZSgia2IiX3MpOgorICAgICAgICBjYXNlIGNv
bXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKCJrYyJfcyk6CisgICAgICAgIGNhc2UgY29tcHV0ZVR3
b0NoYXJhY3RlcnMxNkNvZGUoImtoIl9zKToKKyAgICAgICAgY2FzZSBjb21wdXRlVHdvQ2hhcmFj
dGVyczE2Q29kZSgia2siX3MpOgorICAgICAgICBjYXNlIGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZD
b2RlKCJrbiJfcyk6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBWZWN0
b3I8Y2hhciwgMzI+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGV4
dGVuc2lvbkluZGV4ICsgMik7IC8vICItdSIgaXMgaW5jbHVkZWQuCisgICAgU3RyaW5nVmlldyBl
eHRlbnNpb24gPSBsb2NhbGUuc3Vic3RyaW5nKGV4dGVuc2lvbkluZGV4LCBleHRlbnNpb25MZW5n
dGgpOworICAgIEFTU0VSVChleHRlbnNpb24uaXM4Qml0KCkpOworICAgIGF1dG8gc3VidGFncyA9
IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdzKGV4dGVuc2lvbik7CisgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgc3VidGFncy5zaXplKCk7KSB7CisgICAgICAgIGF1dG8gc3VidGFn
ID0gc3VidGFnc1tpbmRleF07CisgICAgICAgIEFTU0VSVChzdWJ0YWcuaXM4Qml0KCkpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKCctJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3VidGFnLmNo
YXJhY3RlcnM4KCksIHN1YnRhZy5sZW5ndGgoKSk7CisKKyAgICAgICAgaWYgKHN1YnRhZy5sZW5n
dGgoKSAhPSAyKSB7CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHN1YnRhZy5sZW5ndGgoKSA9PSAyKTsKKworICAg
ICAgICAvLyBUaGlzIGlzIHVuaWNvZGUgZXh0ZW5zaW9uIGtleS4KKyAgICAgICAgdW5zaWduZWQg
dmFsdWVJbmRleFN0YXJ0ID0gaW5kZXggKyAxOworICAgICAgICB1bnNpZ25lZCB2YWx1ZUluZGV4
RW5kID0gdmFsdWVJbmRleFN0YXJ0OworICAgICAgICBmb3IgKDsgdmFsdWVJbmRleEVuZCA8IHN1
YnRhZ3Muc2l6ZSgpOyArK3ZhbHVlSW5kZXhFbmQpIHsKKyAgICAgICAgICAgIGlmIChzdWJ0YWdz
W3ZhbHVlSW5kZXhFbmRdLmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gW3ZhbHVlSW5kZXhTdGFydCwgdmFsdWVJbmRleEVuZCkgaXMg
dmFsdWUgb2YgdGhpcyB1bmljb2RlIGV4dGVuc2lvbi4gSWYgdGhlcmUgaXMgbm8gdmFsdWUsIHZh
bHVlSW5kZXhTdGFydCA9PSB2YWx1ZUluZGV4RW5kLgorCisgICAgICAgIGZvciAodW5zaWduZWQg
dmFsdWVJbmRleCA9IHZhbHVlSW5kZXhTdGFydDsgdmFsdWVJbmRleCA8IHZhbHVlSW5kZXhFbmQ7
ICsrdmFsdWVJbmRleCkgeworICAgICAgICAgICAgaWYgKHNob3VsZEluY2x1ZGUoc3VidGFnLCBz
dWJ0YWdzW3ZhbHVlSW5kZXhdKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJy0n
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN1YnRhZ3NbdmFsdWVJbmRleF0uY2hh
cmFjdGVyczgoKSwgc3VidGFnc1t2YWx1ZUluZGV4XS5sZW5ndGgoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaW5kZXggPSB2YWx1ZUluZGV4RW5kOworICAgIH0KIAotICAg
IHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgdW5zaWdu
ZWQgcmVtYWluaW5nU3RhcnQgPSBleHRlbnNpb25JbmRleCArIGV4dGVuc2lvbkxlbmd0aDsKKyAg
ICB1bnNpZ25lZCByZW1haW5pbmdMZW5ndGggPSBidWZmZXIuc2l6ZSgpIC0gcmVtYWluaW5nU3Rh
cnQ7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIuZGF0YSgpICsgcmVtYWluaW5nU3RhcnQsIHJl
bWFpbmluZ0xlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdChXVEZNb3ZlKHJlc3VsdCkp
OwogfQogCiAvLyBFbnN1cmUgd2UgaGF2ZSB4eC1aWiB3aGVuZXZlciB3ZSBoYXZlIHh4LVl5eXkt
WlouCkBAIC02OTQsNDUgKzgxOCw2IEBAIHN0YXRpYyBNYXRjaGVyUmVzdWx0IGJlc3RGaXRNYXRj
aGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEhhc2hTZXQ8CiAgICAgcmV0
dXJuIGxvb2t1cE1hdGNoZXIoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzKTsKIH0KIAotc3RhdGljIHZvaWQgdW5pY29kZUV4dGVuc2lvblN1YlRhZ3MoY29u
c3QgU3RyaW5nJiBleHRlbnNpb24sIFZlY3RvcjxTdHJpbmc+JiBzdWJ0YWdzKQotewotICAgIC8v
IFVuaWNvZGVFeHRlbnNpb25TdWJ0YWdzIChleHRlbnNpb24pCi0gICAgLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtdW5pY29kZWV4dGVuc2lvbnN1YnRhZ3MKLQotICAgIGF1
dG8gZXh0ZW5zaW9uTGVuZ3RoID0gZXh0ZW5zaW9uLmxlbmd0aCgpOwotICAgIGlmIChleHRlbnNp
b25MZW5ndGggPCAzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc3VidGFnU3RhcnQg
PSAzOyAvLyBTa2lwIGluaXRpYWwgLXUtLgotICAgIHNpemVfdCB2YWx1ZVN0YXJ0ID0gMzsKLSAg
ICBib29sIGlzTGVhZGluZyA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSBzdWJ0YWdT
dGFydDsgaW5kZXggPCBleHRlbnNpb25MZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGV4
dGVuc2lvbltpbmRleF0gPT0gJy0nKSB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggLSBzdWJ0YWdT
dGFydCA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGFnIGlzIGEga2V5LCBmaXJzdCBhcHBl
bmQgcHJpb3Iga2V5J3MgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgotICAgICAgICAgICAgICAgIGlm
IChzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgPiAxKQotICAgICAgICAgICAgICAgICAgICBzdWJ0
YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVlU3RhcnQsIHN1YnRhZ1N0YXJ0IC0g
dmFsdWVTdGFydCAtIDEpKTsKLSAgICAgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNp
b24uc3Vic3RyaW5nKHN1YnRhZ1N0YXJ0LCBpbmRleCAtIHN1YnRhZ1N0YXJ0KSk7Ci0gICAgICAg
ICAgICAgICAgdmFsdWVTdGFydCA9IGluZGV4ICsgMTsKLSAgICAgICAgICAgICAgICBpc0xlYWRp
bmcgPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNMZWFkaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gTGVhZGluZyBzdWJ0YWdzIGJlZm9yZSBmaXJzdCBrZXkuCi0gICAgICAgICAg
ICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyhzdWJ0YWdTdGFydCwgaW5k
ZXggLSBzdWJ0YWdTdGFydCkpOwotICAgICAgICAgICAgICAgIHZhbHVlU3RhcnQgPSBpbmRleCAr
IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdWJ0YWdTdGFydCA9IGluZGV4ICsgMTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZXh0ZW5zaW9uTGVuZ3RoIC0gc3VidGFnU3RhcnQg
PT0gMikgewotICAgICAgICAvLyBUcmFpbGluZyBhbiBleHRlbnNpb24ga2V5LCBmaXJzdCBhcHBl
bmQgcHJpb3Iga2V5J3MgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgotICAgICAgICBpZiAoc3VidGFn
U3RhcnQgLSB2YWx1ZVN0YXJ0ID4gMSkKLSAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVu
c2lvbi5zdWJzdHJpbmcodmFsdWVTdGFydCwgc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0IC0gMSkp
OwotICAgICAgICB2YWx1ZVN0YXJ0ID0gc3VidGFnU3RhcnQ7Ci0gICAgfQotICAgIC8vIEFwcGVu
ZCBmaW5hbCBrZXkncyB2YWx1ZS4KLSAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3Ry
aW5nKHZhbHVlU3RhcnQsIGV4dGVuc2lvbkxlbmd0aCAtIHZhbHVlU3RhcnQpKTsKLX0KLQogY29u
c3RleHByIEFTQ0lJTGl0ZXJhbCByZWxldmFudEV4dGVuc2lvbktleVN0cmluZyhSZWxldmFudEV4
dGVuc2lvbktleSBrZXkpCiB7CiAgICAgc3dpdGNoIChrZXkpIHsKQEAgLTc1Niw5ICs4NDEsOSBA
QCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPgogCiAgICAgU3RyaW5nIGZvdW5kTG9jYWxlID0gbWF0
Y2hlclJlc3VsdC5sb2NhbGU7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25TdWJ0YWdz
OworICAgIFZlY3RvcjxTdHJpbmdWaWV3PiBleHRlbnNpb25TdWJ0YWdzOwogICAgIGlmICghbWF0
Y2hlclJlc3VsdC5leHRlbnNpb24uaXNOdWxsKCkpCi0gICAgICAgIHVuaWNvZGVFeHRlbnNpb25T
dWJUYWdzKG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uLCBleHRlbnNpb25TdWJ0YWdzKTsKKyAgICAg
ICAgZXh0ZW5zaW9uU3VidGFncyA9IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdzKG1hdGNoZXJSZXN1
bHQuZXh0ZW5zaW9uKTsKIAogICAgIFJlc29sdmVkTG9jYWxlIHJlc29sdmVkOwogICAgIHJlc29s
dmVkLmRhdGFMb2NhbGUgPSBmb3VuZExvY2FsZTsKQEAgLTc3Niw5ICs4NjEsOSBAQCBSZXNvbHZl
ZExvY2FsZSByZXNvbHZlTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEhhc2hTZXQ8U3RyaW5nPgogICAgICAgICAgICAgc2l6ZV90IGtleVBvcyA9IGV4dGVuc2lvblN1
YnRhZ3MuZmluZChrZXlTdHJpbmcpOwogICAgICAgICAgICAgaWYgKGtleVBvcyAhPSBub3RGb3Vu
ZCkgewogICAgICAgICAgICAgICAgIGlmIChrZXlQb3MgKyAxIDwgZXh0ZW5zaW9uU3VidGFncy5z
aXplKCkgJiYgZXh0ZW5zaW9uU3VidGFnc1trZXlQb3MgKyAxXS5sZW5ndGgoKSA+IDIpIHsKLSAg
ICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWYWx1ZSA9IGV4dGVuc2lv
blN1YnRhZ3Nba2V5UG9zICsgMV07CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcgcmVx
dWVzdGVkVmFsdWUgPSBleHRlbnNpb25TdWJ0YWdzW2tleVBvcyArIDFdOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoa2V5TG9jYWxlRGF0YS5jb250YWlucyhyZXF1ZXN0ZWRWYWx1ZSkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcmVxdWVzdGVkVmFsdWU7CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHJlcXVlc3RlZFZhbHVlLnRvU3RyaW5nKCk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9IG1ha2VTdHJpbmco
Jy0nLCBrZXlTdHJpbmcsICctJywgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlMb2NhbGVEYXRhLmNvbnRhaW5zKCJ0cnVlIl9zKSkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElu
bGluZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVz
LmgKaW5kZXggZThlM2Y5MTBiMDhmMTRjZjkzZDk3ZjYxNjJkMmNiYjRhMDcwZDY5ZS4uNDhlMzQw
ZDIyMTgzZDU2YWIxYjYxZDQ2MzFmZTFhZmZmOTNiYjFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC0zNCw2ICszNCwxMiBA
QAogCiBuYW1lc3BhY2UgSlNDIHsKIAordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3N0
YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoY29uc3Qg
U3RyaW5nVHlwZSYgc3RyaW5nKQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZfdD4o
c3RyaW5nLmNoYXJhY3RlckF0KDApKSB8IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nh
c3Q8dWludDE2X3Q+KHN0cmluZy5jaGFyYWN0ZXJBdCgxKSkpIDw8IDE2KTsKK30KKwogdGVtcGxh
dGU8dHlwZW5hbWUgUHJlZGljYXRlPiBTdHJpbmcgYmVzdEF2YWlsYWJsZUxvY2FsZShjb25zdCBT
dHJpbmcmIGxvY2FsZSwgUHJlZGljYXRlIHByZWRpY2F0ZSkKIHsKICAgICAvLyBCZXN0QXZhaWxh
YmxlTG9jYWxlIChhdmFpbGFibGVMb2NhbGVzLCBsb2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCAxZWYyY2IzMTVhNjA5
ZDg1NDM5MmIyNDUzZjVjNDZjMjU2Yzg0MjdkLi4xYTJkYzVmNThhMjkyMjQyNjAyYWYwMzMxYzRk
YjE0M2EzODYzYjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9T
dHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0
cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTE1NDEsMTIgKzE1NDEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbAogICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNv
bGxhdG9yLT5jb21wYXJlU3RyaW5ncyhnbG9iYWxPYmplY3QsIHN0cmluZywgdGhhdCkpKTsKIH0K
IAotdGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4KLXN0YXRpYyBjb25zdGV4cHIgdWludDMy
X3QgY29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoY29uc3QgU3RyaW5nVHlwZSYgc3RyaW5nKQot
ewotICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nLmNoYXJhY3RlckF0KDAp
KSB8IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHN0cmluZy5j
aGFyYWN0ZXJBdCgxKSkpIDw8IDE2KTsKLX0KLQogZW51bSBjbGFzcyBDYXNlQ29udmVyc2lvbk1v
ZGUgewogICAgIFVwcGVyLAogICAgIExvd2VyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdWaWV3LmggYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRl
eCA5MjBmYmZiN2QxZjNkMDk0NTZmZjQxOTMzNDRiMjAxMjE0YTBlMDFlLi44NDAyNGVlNzRjZTk1
MTVhMzEyNzFmZjJkYjk4MjAxZjQyMWJkNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1ZpZXcuaAorKysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApA
QCAtNzksNiArNzksNyBAQCBjbGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICBleHBsaWNpdCBv
cGVyYXRvciBib29sKCkgY29uc3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKIAorICAgIFVD
aGFyIGNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBVQ2hhciBvcGVyYXRv
cltdKHVuc2lnbmVkIGluZGV4KSBjb25zdDsKIAogICAgIGNsYXNzIENvZGVVbml0czsKQEAgLTQ5
OSw3ICs1MDAsNyBAQCBpbmxpbmUgU3RyaW5nVmlldyBTdHJpbmdWaWV3OjpzdWJzdHJpbmcodW5z
aWduZWQgc3RhcnQsIHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCi1pbmxpbmUgVUNoYXIgU3RyaW5nVmlldzo6b3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKK2lubGluZSBVQ2hhciBTdHJpbmdWaWV3OjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKIHsKICAgICBBU1NFUlQoaW5kZXggPCBsZW5ndGgoKSk7CiAgICAgaWYgKGlzOEJp
dCgpKQpAQCAtNTA3LDYgKzUwOCwxMSBAQCBpbmxpbmUgVUNoYXIgU3RyaW5nVmlldzo6b3BlcmF0
b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyczE2KClbaW5k
ZXhdOwogfQogCitpbmxpbmUgVUNoYXIgU3RyaW5nVmlldzo6b3BlcmF0b3JbXSh1bnNpZ25lZCBp
bmRleCkgY29uc3QKK3sKKyAgICByZXR1cm4gY2hhcmFjdGVyQXQoaW5kZXgpOworfQorCiBpbmxp
bmUgYm9vbCBTdHJpbmdWaWV3Ojpjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIGZpbmQoY2hhcmFjdGVyKSAhPSBub3RGb3VuZDsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggM2ViMDU1Y2U2NTkyZmU1YjBm
ZDU5ZTkzYWZiMTVmNGI3MDU4NmYwZC4uNzJlNmI2Yjg2ZTcwZDA1M2EwYWEwZmI3YjY1ZjlhNGFj
OTAwNmU0NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAyMC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1
a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29k
ZSBleHRlbnNpb24gdHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sOgorCiAyMDIw
LTA5LTA0ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gQWxpZ24gbGVnYWN5IEludGwgY29uc3RydWN0b3IgYmVoYXZpb3IgdG8gc3BlYwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IGI4ZjhiMzA0MWZhMGI4ZjRjMDdhZDRhNWUyOWU3YThl
NDgzODRmMGEuLjQ0ZDM4OTE3MzBjZDU3YjAzNGU4MzE3OTZjZDAwY2UyM2U0NDNkODAgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rlc3RzL3Rl
c3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE0MjgsOSArMTQyOCw2IEBAIHRlc3QvYnVpbHQt
aW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMvb2YvY3VzdG9tLWN0b3IuanM6CiB0ZXN0L2J1aWx0
LWlucy9UeXBlZEFycmF5Q29uc3RydWN0b3JzL29mL25ldy1pbnN0YW5jZS11c2luZy1jdXN0b20t
Y3Rvci5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogVHlwZWRBcnJheS5vZiByZXF1aXJlcyBp
dHMgdGhpcyBhcmd1bWVudCB0byBzdWJjbGFzcyBhIFR5cGVkQXJyYXkgY29uc3RydWN0b3IgKFRl
c3Rpbmcgd2l0aCBGbG9hdDY0QXJyYXkuKScKICAgc3RyaWN0IG1vZGU6ICdUeXBlRXJyb3I6IFR5
cGVkQXJyYXkub2YgcmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8gc3ViY2xhc3MgYSBUeXBl
ZEFycmF5IGNvbnN0cnVjdG9yIChUZXN0aW5nIHdpdGggRmxvYXQ2NEFycmF5LiknCi10ZXN0L2lu
dGw0MDIvQ29sbGF0b3IvbWlzc2luZy11bmljb2RlLWV4dC12YWx1ZS1kZWZhdWx0cy10by10cnVl
LmpzOgotICBkZWZhdWx0OiAiVGVzdDI2MkVycm9yOiBcImtuLXRydWVcIiBpcyByZXR1cm5lZCBp
biBsb2NhbGUsIGJ1dCBzaG91bGRuJ3QgYmUuIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzfCuywgwqst
McK7KSB0byBiZSB0cnVlIgotICBzdHJpY3QgbW9kZTogIlRlc3QyNjJFcnJvcjogXCJrbi10cnVl
XCIgaXMgcmV0dXJuZWQgaW4gbG9jYWxlLCBidXQgc2hvdWxkbid0IGJlLiBFeHBlY3RlZCBTYW1l
VmFsdWUowqs3wrssIMKrLTHCuykgdG8gYmUgdHJ1ZSIKIHRlc3QvaW50bDQwMi9EYXRlVGltZUZv
cm1hdC9wcm90b3R5cGUvZm9ybWF0L3RpbWVkYXRlc3R5bGUtZW4uanM6CiAgIGRlZmF1bHQ6ICdU
ZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZnVsbCB3aXRoIHt9IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzE0OjEyOjQ3IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrMTQ6MTI6NDcgQ29v
cmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZnVsbCB3aXRoIHt9IEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzE0OjEyOjQ3IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrMTQ6MTI6NDcgQ29v
cmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKQEAgLTE0NzMsOSArMTQ3MCw2
IEBAIHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2FsZXMvdW5pY29kZS1leHQtY2Fu
b25pY2FsaXplLXJlZ2lvbi5qczoKIHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2Fs
ZXMvdW5pY29kZS1leHQtY2Fub25pY2FsaXplLXN1YmRpdmlzaW9uLmpzOgogICBkZWZhdWx0OiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmQtTk8tdS1zZC1ubzIzwrssIMKr
dW5kLU5PLXUtc2Qtbm81MMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kLU5PLXUtc2Qtbm8yM8K7LCDCq3VuZC1OTy11
LXNkLW5vNTDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExv
Y2FsZXMvdW5pY29kZS1leHQtY2Fub25pY2FsaXplLXllcy10by10cnVlLmpzOgotICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmQtdS1rYi10cnVlwrssIMKr
dW5kLXUta2LCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZC11LWtiLXRydWXCuywgwqt1bmQtdS1rYsK7KSB0byBiZSB0
cnVlJwogdGVzdC9pbnRsNDAyL0ludGwvZ2V0Q2Fub25pY2FsTG9jYWxlcy91bmljb2RlLWV4dC1r
ZXktd2l0aC1kaWdpdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2Ft
ZVZhbHVlKMKrZW4tdS0wYy15ZXPCuywgwqtlbi11LTBjwrspIHRvIGJlIHRydWUnCiAgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LTBjLXllc8K7
LCDCq2VuLXUtMGPCuykgdG8gYmUgdHJ1ZScKQEAgLTE0ODUsMjEgKzE0NzksMTIgQEAgdGVzdC9p
bnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1hcHBseS1vcHRpb25zLWNhbm9uaWNhbGl6ZXMtdHdp
Y2UuanM6CiB0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLW5vbi1pYW5hLWNhbm9uLmpz
OgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoIm1vIikubWF4aW1p
emUoKS50b1N0cmluZygpIHJldHVybnMgInJvLUxhdG4tUk8iIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
q3JvwrssIMKrcm8tTGF0bi1ST8K7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJtbyIpLm1heGltaXplKCkudG9TdHJpbmcoKSByZXR1
cm5zICJyby1MYXRuLVJPIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtyb8K7LCDCq3JvLUxhdG4tUk/C
uykgdG8gYmUgdHJ1ZScKLXRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0aW9ucy1u
dW1lcmljLXVuZGVmaW5lZC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwu
TG9jYWxlKCJlbi11LWtuLXRydWUiLCB7bnVtZXJpYzogdW5kZWZpbmVkfSkudG9TdHJpbmcoKSBy
ZXR1cm5zICJlbi11LWtuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtl
bi11LWtuwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcg
SW50bC5Mb2NhbGUoImVuLXUta24tdHJ1ZSIsIHtudW1lcmljOiB1bmRlZmluZWR9KS50b1N0cmlu
ZygpIHJldHVybnMgImVuLXUta24iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7
LCDCq2VuLXUta27CuykgdG8gYmUgdHJ1ZScKLXRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0
b3Itb3B0aW9ucy1udW1lcmljLXZhbGlkLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBu
ZXcgSW50bC5Mb2NhbGUoImVuIiwge251bWVyaWM6IHRydWV9KS50b1N0cmluZygpIHJldHVybnMg
InRydWUiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27Cuykg
dG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2Fs
ZSgiZW4iLCB7bnVtZXJpYzogdHJ1ZX0pLnRvU3RyaW5nKCkgcmV0dXJucyAidHJ1ZSIgRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrZW4tdS1rbi10cnVlwrssIMKrZW4tdS1rbsK7KSB0byBiZSB0cnVlJwog
dGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1vcHRpb25zLXJlZ2lvbi12YWxpZC5qczoK
ICAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCdlbicsIHtyZWdpb246
IFwiNTU0XCJ9KS50b1N0cmluZygpIHJldHVybnMgXCJlbi1OWlwiIEV4cGVjdGVkIFNhbWVWYWx1
ZSjCq2VuLTU1NMK7LCDCq2VuLU5awrspIHRvIGJlIHRydWUiCiAgIHN0cmljdCBtb2RlOiAiVGVz
dDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywge3JlZ2lvbjogXCI1NTRcIn0pLnRvU3Ry
aW5nKCkgcmV0dXJucyBcImVuLU5aXCIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tNTU0wrssIMKr
ZW4tTlrCuykgdG8gYmUgdHJ1ZSIKIHRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3ItdGFn
LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoInNsLVJPWkFK
LUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJldHVybnMgInNsLTE5OTQtYmlza2Utcm96YWoiIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFqLWJpc2tlLTE5OTTCuywgwqtzbC0xOTk0LWJpc2tl
LXJvemFqwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcg
SW50bC5Mb2NhbGUoInNsLVJPWkFKLUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJldHVybnMgInNs
LTE5OTQtYmlza2Utcm96YWoiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFqLWJpc2tlLTE5
OTTCuywgwqtzbC0xOTk0LWJpc2tlLXJvemFqwrspIHRvIGJlIHRydWUnCi10ZXN0L2ludGw0MDIv
TG9jYWxlL2dldHRlcnMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLXRy
dWUta24tZmFsc2UtbnUtbGF0bsK7LCDCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25l
YmstaGMtaDIzLWtmLWtuLWZhbHNlLW51LWxhdG7CuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2RlLUxhdG4tREUtdS1jYS1n
cmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLXRydWUta24tZmFsc2UtbnUtbGF0bsK7LCDCq2Rl
LUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLWtuLWZhbHNlLW51LWxh
dG7CuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9Mb2NhbGUvbGlrZWx5LXN1YnRhZ3MtZ3Jh
bmRmYXRoZXJlZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZh
bHVlKMKrY21uwrssIMKremjCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2NtbsK7LCDCq3powrspIHRvIGJlIHRydWUnCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408120</attachid>
            <date>2020-09-06 02:04:31 -0700</date>
            <delta_ts>2020-09-10 02:22:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216224-20200906020430.patch</filename>
            <type>text/plain</type>
            <size>21434</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2Njc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
YWVkYjlmYjgxNjgzOGY4ZTMxYjZlOGQyNWYwMjQ0MmFmNTRmOTExLi4wNDIxMDkwNjU2NTU3Njhk
MDY2NTA1MTI0MzRjYjI3MmY1OTkwOWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNCBAQAorMjAyMC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24g
dHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1IGRlZmluZXMgdGhhdCB1bmlj
b2RlIGV4dGVuc2lvbiB0eXBlJ3MgInRydWUiIHNob3VsZCBiZSBjb252ZXJnZWQgdG8gIiIuCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSBleHRyYWN0aW5nIHVuaWNvZGUgZXh0
ZW5zaW9uIHN1YnRhZ3MgYW5kIHJlcGxhY2luZyAidHJ1ZSIgdG8gIiIuCisKKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjp1bmljb2RlRXh0ZW5zaW9uU3ViVGFncyk6CisgICAgICAgIChK
U0M6Omxhbmd1YWdlVGFnRm9yTG9jYWxlSUQpOgorICAgICAgICAoSlNDOjpyZXNvbHZlTG9jYWxl
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmg6CisgICAgICAgIChKU0M6
OmNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1By
b3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKTog
RGVsZXRlZC4KKwogMjAyMC0wOS0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHN1cHByZXNzIGV4Y2VwdGlvbiBjaGVja2luZyBhZnRl
ciB1bndyYXBGb3JPbGRGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9n
IGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZjc3ZWYzODAwOWNkZjMwYjVmNDZiYTJmNmUy
MDU4MGIyNmUwMzBmNC4uOTFiMDlkZDI5Mjc0NDk4MTM1NDY5ODQ3NTc4ZGE5MzRjYzZiMTgxNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lA
YXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBl
eHRlbnNpb24gdHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6
OlN0cmluZ1ZpZXc6OmNoYXJhY3RlckF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nVmll
dzo6b3BlcmF0b3JbXSBjb25zdCk6CisKIDIwMjAtMDktMDUgIE15bGVzIEMuIE1heGZpZWxkICA8
bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIFVTRShQTEFURk9STV9TWVNU
RU1fRkFMTEJBQ0tfTElTVCkgaXMgdHJ1ZSBvbiBhbGwgQ29jb2EgcGxhdGZvcm1zLCBzbyB0aGVy
ZSdzIG5vIG5lZWQgdG8gY29uc3VsdCBpdCBpbiBDb2NvYS1zcGVjaWZpYyBmaWxlcwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZVByb3RvdHlwZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cAppbmRleCA0YThiODQzOThlYjA4NWIxNjYwNGZlNDE0OWJlMTU2ODg2ZGQ3OThkLi5mNDQ0NmI0
NTEyYWFjYmE0NmYwZmJhZTQxZmE2ZWY0YWZjZDdkYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcApAQCAtMTgwLDcg
KzE4MCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5
cGVHZXR0ZXJDYXNlRmlyc3QoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90b3R5cGUuY2Fz
ZUZpcnN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBpbml0aWFsaXplZCBh
cyBhIExvY2FsZSJfcyk7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhc2VGaXJzdCA9IGxvY2FsZS0+
Y2FzZUZpcnN0KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoY2FzZUZpcnN0LmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgY2Fz
ZUZpcnN0KSkpOworICAgIGlmIChjYXNlRmlyc3QuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIC8vIElmIGNhc2VGaXJzdCBpcyAi
dHJ1ZSIsIHRoZW4gd2Ugc2hvdWxkIHJldHVybiAiIiBzaW5jZSBsYW5ndWFnZSB0YWcgY2Fub25p
Y2FsaXphdGlvbiBtYWtlcyBpdCAiIi4KKyAgICBpZiAoY2FzZUZpcnN0ID09ICJ0cnVlIl9zKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmcodm0pKTsKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBjYXNlRmlyc3QpKTsKIH0KIAogLy8g
aHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0
aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4
IDMwMWJkZDEzZWI2NzAzYTM5OGRkZTY0ZDRjNDM4NWE0MTEwZTFmMDQuLjUxODEwNzExOWM2NTdh
YjQwOTk5MGU0NTliMTlkNGNmNWY3ZTY2NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xOTAsNiArMTkwLDQ3IEBAIFN0cnVjdHVyZSogSW50
bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3Qs
IHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkp
OwogfQogCitzdGF0aWMgVmVjdG9yPFN0cmluZ1ZpZXc+IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdz
KFN0cmluZ1ZpZXcgZXh0ZW5zaW9uKQoreworICAgIC8vIFVuaWNvZGVFeHRlbnNpb25TdWJ0YWdz
IChleHRlbnNpb24pCisgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMt
dW5pY29kZWV4dGVuc2lvbnN1YnRhZ3MKKworICAgIGF1dG8gZXh0ZW5zaW9uTGVuZ3RoID0gZXh0
ZW5zaW9uLmxlbmd0aCgpOworICAgIGlmIChleHRlbnNpb25MZW5ndGggPCAzKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgVmVjdG9yPFN0cmluZ1ZpZXc+IHN1YnRhZ3M7CisgICAgc2l6ZV90
IHN1YnRhZ1N0YXJ0ID0gMzsgLy8gU2tpcCBpbml0aWFsIC11LS4KKyAgICBzaXplX3QgdmFsdWVT
dGFydCA9IDM7CisgICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOworICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gc3VidGFnU3RhcnQ7IGluZGV4IDwgZXh0ZW5zaW9uTGVuZ3RoOyArK2luZGV4KSB7Cisg
ICAgICAgIGlmIChleHRlbnNpb25baW5kZXhdID09ICctJykgeworICAgICAgICAgICAgaWYgKGlu
ZGV4IC0gc3VidGFnU3RhcnQgPT0gMikgeworICAgICAgICAgICAgICAgIC8vIFRhZyBpcyBhIGtl
eSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVlIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAg
ICAgICAgICAgICBpZiAoc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0ID4gMSkKKyAgICAgICAgICAg
ICAgICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBz
dWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgLSAxKSk7CisgICAgICAgICAgICAgICAgc3VidGFncy5h
cHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyhzdWJ0YWdTdGFydCwgaW5kZXggLSBzdWJ0YWdTdGFy
dCkpOworICAgICAgICAgICAgICAgIHZhbHVlU3RhcnQgPSBpbmRleCArIDE7CisgICAgICAgICAg
ICAgICAgaXNMZWFkaW5nID0gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTGVhZGlu
ZykgeworICAgICAgICAgICAgICAgIC8vIExlYWRpbmcgc3VidGFncyBiZWZvcmUgZmlyc3Qga2V5
LgorICAgICAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcoc3Vi
dGFnU3RhcnQsIGluZGV4IC0gc3VidGFnU3RhcnQpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZVN0
YXJ0ID0gaW5kZXggKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3VidGFnU3RhcnQg
PSBpbmRleCArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4dGVuc2lvbkxlbmd0aCAt
IHN1YnRhZ1N0YXJ0ID09IDIpIHsKKyAgICAgICAgLy8gVHJhaWxpbmcgYW4gZXh0ZW5zaW9uIGtl
eSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVlIGlmIHRoZXJlIGlzIG9uZS4KKyAgICAg
ICAgaWYgKHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCA+IDEpCisgICAgICAgICAgICBzdWJ0YWdz
LmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVlU3RhcnQsIHN1YnRhZ1N0YXJ0IC0gdmFs
dWVTdGFydCAtIDEpKTsKKyAgICAgICAgdmFsdWVTdGFydCA9IHN1YnRhZ1N0YXJ0OworICAgIH0K
KyAgICAvLyBBcHBlbmQgZmluYWwga2V5J3MgdmFsdWUuCisgICAgc3VidGFncy5hcHBlbmQoZXh0
ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBleHRlbnNpb25MZW5ndGggLSB2YWx1ZVN0YXJ0
KSk7CisgICAgcmV0dXJuIHN1YnRhZ3M7Cit9CisKIFZlY3RvcjxjaGFyLCAzMj4gbG9jYWxlSURC
dWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5nJiB0YWcpCiB7CiAgICAgaWYgKCF0YWcu
bGVuZ3RoKCkpCkBAIC0yMTksMTIgKzI2MCw5NSBAQCBTdHJpbmcgbGFuZ3VhZ2VUYWdGb3JMb2Nh
bGVJRChjb25zdCBjaGFyKiBsb2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQogICAgIGlmIChVX0ZB
SUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgLy8gVGhpcyBp
cyB1c2VkIHRvIHN0b3JlIGludG8gc3RhdGljIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBzaGFyZWQg
YWNyb3NzIEpTQyBleGVjdXRpb24gdGhyZWFkcy4KLSAgICAvLyBUaGlzIG11c3QgYmUgaW1tb3J0
YWwgdG8gbWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZlLgotICAgIGlmIChpc0ltbW9ydGFs
KQotICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IFsmXShW
ZWN0b3I8Y2hhciwgMzI+JiYgYnVmZmVyKSAtPiBTdHJpbmcgeworICAgICAgICAvLyBUaGlzIGlz
IHVzZWQgdG8gc3RvcmUgaW50byBzdGF0aWMgdmFyaWFibGVzIHRoYXQgbWF5IGJlIHNoYXJlZCBh
Y3Jvc3MgSlNDIGV4ZWN1dGlvbiB0aHJlYWRzLgorICAgICAgICAvLyBUaGlzIG11c3QgYmUgaW1t
b3J0YWwgdG8gbWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZlLgorICAgICAgICBpZiAoaXNJ
bW1vcnRhbCkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJp
bmdJbXBsKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3Ry
aW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIH07CisKKyAgICBTdHJpbmdW
aWV3IGxvY2FsZShidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBBU1NFUlQobG9j
YWxlLmlzOEJpdCgpKTsKKyAgICBzaXplX3QgZXh0ZW5zaW9uSW5kZXggPSBsb2NhbGUuZmluZCgi
LXUtIik7CisgICAgaWYgKGV4dGVuc2lvbkluZGV4ID09IG5vdEZvdW5kKQorICAgICAgICByZXR1
cm4gY3JlYXRlUmVzdWx0KFdURk1vdmUoYnVmZmVyKSk7CisKKyAgICAvLyBTaW5jZSBJQ1UncyBj
YW5vbmljYWxpemF0aW9uIGlzIGluY29tcGxldGUsIHdlIG5lZWQgdG8gcGVyZm9ybSBzb21lIG9m
IGNhbm9uaWNhbGl6YXRpb24gaGVyZS4KKyAgICBzaXplX3QgZXh0ZW5zaW9uTGVuZ3RoID0gbG9j
YWxlLmxlbmd0aCgpIC0gZXh0ZW5zaW9uSW5kZXg7CisgICAgc2l6ZV90IGVuZCA9IGV4dGVuc2lv
bkluZGV4ICsgMzsKKyAgICB3aGlsZSAoZW5kIDwgbG9jYWxlLmxlbmd0aCgpKSB7CisgICAgICAg
IGVuZCA9IGxvY2FsZS5maW5kKCctJywgZW5kKTsKKyAgICAgICAgaWYgKGVuZCA9PSBub3RGb3Vu
ZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGb3VuZCBhbm90aGVyIHNpbmdsZXRv
bi4KKyAgICAgICAgaWYgKGVuZCArIDIgPCBsb2NhbGUubGVuZ3RoKCkgJiYgbG9jYWxlW2VuZCAr
IDJdID09ICctJykgeworICAgICAgICAgICAgZXh0ZW5zaW9uTGVuZ3RoID0gZW5kIC0gZXh0ZW5z
aW9uSW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBlbmQrKzsK
KyAgICB9CisKKyAgICBhdXRvIHNob3VsZEluY2x1ZGUgPSBbXShTdHJpbmdWaWV3IGtleSwgU3Ry
aW5nVmlldyB2YWx1ZSkgeworICAgICAgICBBU1NFUlQoa2V5Lmxlbmd0aCgpID09IDIpOworICAg
ICAgICAvLyBJZiB2YWx1ZSBpcyAidHJ1ZSIsIHdlIHNob3VsZCBub3QgaW5jbHVkZSB2YWx1ZS4K
KyAgICAgICAgaWYgKHZhbHVlID09ICJ0cnVlIl9zKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICBpZiAodmFsdWUgIT0gInllcyJfcykKKyAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAvLyBJbiB0aGUgZm9sbG93aW5nIHVuaWNvZGUgZXh0ZW5zaW9uIGtleXMsICJ5
ZXMiIGlzIGFsaWFzIG9mICJ0cnVlIi4gU28gd2Ugc2hvdWxkIG5vdCBpbmNsdWRlIHZhbHVlLgor
ICAgICAgICAvLyBTZWUgQ0xEUiBrZXkgbmFtZT0ia2IiIGVudHJ5IGZvciBleGFtcGxlLgorICAg
ICAgICBzd2l0Y2ggKGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKGtleSkpIHsKKyAgICAgICAg
Y2FzZSBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZSgia2IiX3MpOgorICAgICAgICBjYXNlIGNv
bXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKCJrYyJfcyk6CisgICAgICAgIGNhc2UgY29tcHV0ZVR3
b0NoYXJhY3RlcnMxNkNvZGUoImtoIl9zKToKKyAgICAgICAgY2FzZSBjb21wdXRlVHdvQ2hhcmFj
dGVyczE2Q29kZSgia2siX3MpOgorICAgICAgICBjYXNlIGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZD
b2RlKCJrbiJfcyk6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGRlZmF1bHQ6
CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBWZWN0
b3I8Y2hhciwgMzI+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGV4
dGVuc2lvbkluZGV4ICsgMik7IC8vICItdSIgaXMgaW5jbHVkZWQuCisgICAgU3RyaW5nVmlldyBl
eHRlbnNpb24gPSBsb2NhbGUuc3Vic3RyaW5nKGV4dGVuc2lvbkluZGV4LCBleHRlbnNpb25MZW5n
dGgpOworICAgIEFTU0VSVChleHRlbnNpb24uaXM4Qml0KCkpOworICAgIGF1dG8gc3VidGFncyA9
IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdzKGV4dGVuc2lvbik7CisgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgc3VidGFncy5zaXplKCk7KSB7CisgICAgICAgIGF1dG8gc3VidGFn
ID0gc3VidGFnc1tpbmRleF07CisgICAgICAgIEFTU0VSVChzdWJ0YWcuaXM4Qml0KCkpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKCctJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3VidGFnLmNo
YXJhY3RlcnM4KCksIHN1YnRhZy5sZW5ndGgoKSk7CisKKyAgICAgICAgaWYgKHN1YnRhZy5sZW5n
dGgoKSAhPSAyKSB7CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHN1YnRhZy5sZW5ndGgoKSA9PSAyKTsKKworICAg
ICAgICAvLyBUaGlzIGlzIHVuaWNvZGUgZXh0ZW5zaW9uIGtleS4KKyAgICAgICAgdW5zaWduZWQg
dmFsdWVJbmRleFN0YXJ0ID0gaW5kZXggKyAxOworICAgICAgICB1bnNpZ25lZCB2YWx1ZUluZGV4
RW5kID0gdmFsdWVJbmRleFN0YXJ0OworICAgICAgICBmb3IgKDsgdmFsdWVJbmRleEVuZCA8IHN1
YnRhZ3Muc2l6ZSgpOyArK3ZhbHVlSW5kZXhFbmQpIHsKKyAgICAgICAgICAgIGlmIChzdWJ0YWdz
W3ZhbHVlSW5kZXhFbmRdLmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgIH0KKyAgICAgICAgLy8gW3ZhbHVlSW5kZXhTdGFydCwgdmFsdWVJbmRleEVuZCkgaXMg
dmFsdWUgb2YgdGhpcyB1bmljb2RlIGV4dGVuc2lvbi4gSWYgdGhlcmUgaXMgbm8gdmFsdWUsIHZh
bHVlSW5kZXhTdGFydCA9PSB2YWx1ZUluZGV4RW5kLgorCisgICAgICAgIGZvciAodW5zaWduZWQg
dmFsdWVJbmRleCA9IHZhbHVlSW5kZXhTdGFydDsgdmFsdWVJbmRleCA8IHZhbHVlSW5kZXhFbmQ7
ICsrdmFsdWVJbmRleCkgeworICAgICAgICAgICAgaWYgKHNob3VsZEluY2x1ZGUoc3VidGFnLCBz
dWJ0YWdzW3ZhbHVlSW5kZXhdKSkgeworICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJy0n
KTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN1YnRhZ3NbdmFsdWVJbmRleF0uY2hh
cmFjdGVyczgoKSwgc3VidGFnc1t2YWx1ZUluZGV4XS5sZW5ndGgoKSk7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgaW5kZXggPSB2YWx1ZUluZGV4RW5kOworICAgIH0KIAotICAg
IHJldHVybiBTdHJpbmcoYnVmZmVyLmRhdGEoKSwgYnVmZmVyLnNpemUoKSk7CisgICAgdW5zaWdu
ZWQgcmVtYWluaW5nU3RhcnQgPSBleHRlbnNpb25JbmRleCArIGV4dGVuc2lvbkxlbmd0aDsKKyAg
ICB1bnNpZ25lZCByZW1haW5pbmdMZW5ndGggPSBidWZmZXIuc2l6ZSgpIC0gcmVtYWluaW5nU3Rh
cnQ7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIuZGF0YSgpICsgcmVtYWluaW5nU3RhcnQsIHJl
bWFpbmluZ0xlbmd0aCk7CisgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdChXVEZNb3ZlKHJlc3VsdCkp
OwogfQogCiAvLyBFbnN1cmUgd2UgaGF2ZSB4eC1aWiB3aGVuZXZlciB3ZSBoYXZlIHh4LVl5eXkt
WlouCkBAIC02OTQsNDUgKzgxOCw2IEBAIHN0YXRpYyBNYXRjaGVyUmVzdWx0IGJlc3RGaXRNYXRj
aGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEhhc2hTZXQ8CiAgICAgcmV0
dXJuIGxvb2t1cE1hdGNoZXIoZ2xvYmFsT2JqZWN0LCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0
ZWRMb2NhbGVzKTsKIH0KIAotc3RhdGljIHZvaWQgdW5pY29kZUV4dGVuc2lvblN1YlRhZ3MoY29u
c3QgU3RyaW5nJiBleHRlbnNpb24sIFZlY3RvcjxTdHJpbmc+JiBzdWJ0YWdzKQotewotICAgIC8v
IFVuaWNvZGVFeHRlbnNpb25TdWJ0YWdzIChleHRlbnNpb24pCi0gICAgLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtdW5pY29kZWV4dGVuc2lvbnN1YnRhZ3MKLQotICAgIGF1
dG8gZXh0ZW5zaW9uTGVuZ3RoID0gZXh0ZW5zaW9uLmxlbmd0aCgpOwotICAgIGlmIChleHRlbnNp
b25MZW5ndGggPCAzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3Qgc3VidGFnU3RhcnQg
PSAzOyAvLyBTa2lwIGluaXRpYWwgLXUtLgotICAgIHNpemVfdCB2YWx1ZVN0YXJ0ID0gMzsKLSAg
ICBib29sIGlzTGVhZGluZyA9IHRydWU7Ci0gICAgZm9yIChzaXplX3QgaW5kZXggPSBzdWJ0YWdT
dGFydDsgaW5kZXggPCBleHRlbnNpb25MZW5ndGg7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGV4
dGVuc2lvbltpbmRleF0gPT0gJy0nKSB7Ci0gICAgICAgICAgICBpZiAoaW5kZXggLSBzdWJ0YWdT
dGFydCA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGFnIGlzIGEga2V5LCBmaXJzdCBhcHBl
bmQgcHJpb3Iga2V5J3MgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgotICAgICAgICAgICAgICAgIGlm
IChzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgPiAxKQotICAgICAgICAgICAgICAgICAgICBzdWJ0
YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVlU3RhcnQsIHN1YnRhZ1N0YXJ0IC0g
dmFsdWVTdGFydCAtIDEpKTsKLSAgICAgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNp
b24uc3Vic3RyaW5nKHN1YnRhZ1N0YXJ0LCBpbmRleCAtIHN1YnRhZ1N0YXJ0KSk7Ci0gICAgICAg
ICAgICAgICAgdmFsdWVTdGFydCA9IGluZGV4ICsgMTsKLSAgICAgICAgICAgICAgICBpc0xlYWRp
bmcgPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNMZWFkaW5nKSB7Ci0gICAgICAg
ICAgICAgICAgLy8gTGVhZGluZyBzdWJ0YWdzIGJlZm9yZSBmaXJzdCBrZXkuCi0gICAgICAgICAg
ICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyhzdWJ0YWdTdGFydCwgaW5k
ZXggLSBzdWJ0YWdTdGFydCkpOwotICAgICAgICAgICAgICAgIHZhbHVlU3RhcnQgPSBpbmRleCAr
IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdWJ0YWdTdGFydCA9IGluZGV4ICsgMTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZXh0ZW5zaW9uTGVuZ3RoIC0gc3VidGFnU3RhcnQg
PT0gMikgewotICAgICAgICAvLyBUcmFpbGluZyBhbiBleHRlbnNpb24ga2V5LCBmaXJzdCBhcHBl
bmQgcHJpb3Iga2V5J3MgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgotICAgICAgICBpZiAoc3VidGFn
U3RhcnQgLSB2YWx1ZVN0YXJ0ID4gMSkKLSAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVu
c2lvbi5zdWJzdHJpbmcodmFsdWVTdGFydCwgc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0IC0gMSkp
OwotICAgICAgICB2YWx1ZVN0YXJ0ID0gc3VidGFnU3RhcnQ7Ci0gICAgfQotICAgIC8vIEFwcGVu
ZCBmaW5hbCBrZXkncyB2YWx1ZS4KLSAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3Ry
aW5nKHZhbHVlU3RhcnQsIGV4dGVuc2lvbkxlbmd0aCAtIHZhbHVlU3RhcnQpKTsKLX0KLQogY29u
c3RleHByIEFTQ0lJTGl0ZXJhbCByZWxldmFudEV4dGVuc2lvbktleVN0cmluZyhSZWxldmFudEV4
dGVuc2lvbktleSBrZXkpCiB7CiAgICAgc3dpdGNoIChrZXkpIHsKQEAgLTc1Niw5ICs4NDEsOSBA
QCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPgogCiAgICAgU3RyaW5nIGZvdW5kTG9jYWxlID0gbWF0
Y2hlclJlc3VsdC5sb2NhbGU7CiAKLSAgICBWZWN0b3I8U3RyaW5nPiBleHRlbnNpb25TdWJ0YWdz
OworICAgIFZlY3RvcjxTdHJpbmdWaWV3PiBleHRlbnNpb25TdWJ0YWdzOwogICAgIGlmICghbWF0
Y2hlclJlc3VsdC5leHRlbnNpb24uaXNOdWxsKCkpCi0gICAgICAgIHVuaWNvZGVFeHRlbnNpb25T
dWJUYWdzKG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uLCBleHRlbnNpb25TdWJ0YWdzKTsKKyAgICAg
ICAgZXh0ZW5zaW9uU3VidGFncyA9IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdzKG1hdGNoZXJSZXN1
bHQuZXh0ZW5zaW9uKTsKIAogICAgIFJlc29sdmVkTG9jYWxlIHJlc29sdmVkOwogICAgIHJlc29s
dmVkLmRhdGFMb2NhbGUgPSBmb3VuZExvY2FsZTsKQEAgLTc3Niw5ICs4NjEsMTAgQEAgUmVzb2x2
ZWRMb2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBIYXNoU2V0PFN0cmluZz4KICAgICAgICAgICAgIHNpemVfdCBrZXlQb3MgPSBleHRlbnNpb25T
dWJ0YWdzLmZpbmQoa2V5U3RyaW5nKTsKICAgICAgICAgICAgIGlmIChrZXlQb3MgIT0gbm90Rm91
bmQpIHsKICAgICAgICAgICAgICAgICBpZiAoa2V5UG9zICsgMSA8IGV4dGVuc2lvblN1YnRhZ3Mu
c2l6ZSgpICYmIGV4dGVuc2lvblN1YnRhZ3Nba2V5UG9zICsgMV0ubGVuZ3RoKCkgPiAyKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVxdWVzdGVkVmFsdWUgPSBleHRlbnNp
b25TdWJ0YWdzW2tleVBvcyArIDFdOwotICAgICAgICAgICAgICAgICAgICBpZiAoa2V5TG9jYWxl
RGF0YS5jb250YWlucyhyZXF1ZXN0ZWRWYWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IHZhbHVlID0gcmVxdWVzdGVkVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZ1ZpZXcg
cmVxdWVzdGVkVmFsdWUgPSBleHRlbnNpb25TdWJ0YWdzW2tleVBvcyArIDFdOworICAgICAgICAg
ICAgICAgICAgICBhdXRvIGRhdGFQb3MgPSBrZXlMb2NhbGVEYXRhLmZpbmQocmVxdWVzdGVkVmFs
dWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVBvcyAhPSBub3RGb3VuZCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBrZXlMb2NhbGVEYXRhW2RhdGFQb3NdOwogICAg
ICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkRXh0ZW5zaW9uQWRkaXRpb24gPSBtYWtlU3Ry
aW5nKCctJywga2V5U3RyaW5nLCAnLScsIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5TG9jYWxlRGF0YS5jb250YWlucygidHJ1ZSJf
cykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5s
aW5lcy5oCmluZGV4IGU4ZTNmOTEwYjA4ZjE0Y2Y5M2Q5N2Y2MTYyZDJjYmI0YTA3MGQ2OWUuLjQ4
ZTM0MGQyMjE4M2Q1NmFiMWI2MWQ0NjMxZmUxYWZmZjkzYmIxYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApAQCAtMzQsNiArMzQs
MTIgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGU+
CitzdGF0aWMgY29uc3RleHByIHVpbnQzMl90IGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKGNv
bnN0IFN0cmluZ1R5cGUmIHN0cmluZykKK3sKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2
X3Q+KHN0cmluZy5jaGFyYWN0ZXJBdCgwKSkgfCAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0YXRp
Y19jYXN0PHVpbnQxNl90PihzdHJpbmcuY2hhcmFjdGVyQXQoMSkpKSA8PCAxNik7Cit9CisKIHRl
bXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5nIGJlc3RBdmFpbGFibGVMb2NhbGUoY29u
c3QgU3RyaW5nJiBsb2NhbGUsIFByZWRpY2F0ZSBwcmVkaWNhdGUpCiB7CiAgICAgLy8gQmVzdEF2
YWlsYWJsZUxvY2FsZSAoYXZhaWxhYmxlTG9jYWxlcywgbG9jYWxlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggMWVmMmNiMzE1
YTYwOWQ4NTQzOTJiMjQ1M2Y1YzQ2YzI1NmM4NDI3ZC4uMWEyZGM1ZjU4YTI5MjI0MjYwMmFmMDMz
MWM0ZGIxNDNhMzg2M2I3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvU3RyaW5nUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9TdHJpbmdQcm90b3R5cGUuY3BwCkBAIC0xNTQxLDEyICsxNTQxLDYgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmNMb2NhbGVDb21wYXJlKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWwKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShjb2xsYXRvci0+Y29tcGFyZVN0cmluZ3MoZ2xvYmFsT2JqZWN0LCBzdHJpbmcsIHRoYXQpKSk7
CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFN0cmluZ1R5cGU+Ci1zdGF0aWMgY29uc3RleHByIHVp
bnQzMl90IGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKGNvbnN0IFN0cmluZ1R5cGUmIHN0cmlu
ZykKLXsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHN0cmluZy5jaGFyYWN0ZXJB
dCgwKSkgfCAoc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHN0YXRpY19jYXN0PHVpbnQxNl90PihzdHJp
bmcuY2hhcmFjdGVyQXQoMSkpKSA8PCAxNik7Ci19Ci0KIGVudW0gY2xhc3MgQ2FzZUNvbnZlcnNp
b25Nb2RlIHsKICAgICBVcHBlciwKICAgICBMb3dlciwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYv
d3RmL3RleHQvU3RyaW5nVmlldy5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmgK
aW5kZXggOTIwZmJmYjdkMWYzZDA5NDU2ZmY0MTkzMzQ0YjIwMTIxNGEwZTAxZS4uODQwMjRlZTc0
Y2U5NTE1YTMxMjcxZmYyZGI5ODIwMWY0MjFiZDYwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93
dGYvdGV4dC9TdHJpbmdWaWV3LmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3
LmgKQEAgLTc5LDYgKzc5LDcgQEAgY2xhc3MgU3RyaW5nVmlldyBmaW5hbCB7CiAgICAgZXhwbGlj
aXQgb3BlcmF0b3IgYm9vbCgpIGNvbnN0OwogICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CiAKKyAg
ICBVQ2hhciBjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAgICAgVUNoYXIgb3Bl
cmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7CiAKICAgICBjbGFzcyBDb2RlVW5pdHM7CkBA
IC00OTksNyArNTAwLDcgQEAgaW5saW5lIFN0cmluZ1ZpZXcgU3RyaW5nVmlldzo6c3Vic3RyaW5n
KHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBsZW5ndGgpIGNvbnN0CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotaW5saW5lIFVDaGFyIFN0cmluZ1ZpZXc6Om9wZXJhdG9yW10odW5zaWduZWQgaW5k
ZXgpIGNvbnN0CitpbmxpbmUgVUNoYXIgU3RyaW5nVmlldzo6Y2hhcmFjdGVyQXQodW5zaWduZWQg
aW5kZXgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGluZGV4IDwgbGVuZ3RoKCkpOwogICAgIGlmIChp
czhCaXQoKSkKQEAgLTUwNyw2ICs1MDgsMTEgQEAgaW5saW5lIFVDaGFyIFN0cmluZ1ZpZXc6Om9w
ZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0CiAgICAgcmV0dXJuIGNoYXJhY3RlcnMxNigp
W2luZGV4XTsKIH0KIAoraW5saW5lIFVDaGFyIFN0cmluZ1ZpZXc6Om9wZXJhdG9yW10odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGNoYXJhY3RlckF0KGluZGV4KTsKK30KKwog
aW5saW5lIGJvb2wgU3RyaW5nVmlldzo6Y29udGFpbnMoVUNoYXIgY2hhcmFjdGVyKSBjb25zdAog
ewogICAgIHJldHVybiBmaW5kKGNoYXJhY3RlcikgIT0gbm90Rm91bmQ7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNlYjA1NWNlNjU5MmZl
NWIwZmQ1OWU5M2FmYjE1ZjRiNzA1ODZmMGQuLjcyZTZiNmI4NmU3MGQwNTNhMGFhMGZiN2I2NWY5
YTRhYzkwMDZlNDUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjAtMDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5
c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBDYW5vbmljYWxpemUgInRydWUiIHVu
aWNvZGUgZXh0ZW5zaW9uIHR5cGUgdmFsdWUgdG8gIiIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjIyNAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwog
MjAyMC0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAg
IFtKU0NdIEFsaWduIGxlZ2FjeSBJbnRsIGNvbnN0cnVjdG9yIGJlaGF2aW9yIHRvIHNwZWMKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMvdGVz
dDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCBiOGY4YjMwNDFmYTBiOGY0YzA3YWQ0YTVlMjll
N2E4ZTQ4Mzg0ZjBhLi40NGQzODkxNzMwY2Q1N2IwMzRlODMxNzk2Y2QwMGNlMjNlNDQzZDgwIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNUZXN0
cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xNDI4LDkgKzE0MjgsNiBAQCB0ZXN0L2J1
aWx0LWlucy9UeXBlZEFycmF5Q29uc3RydWN0b3JzL29mL2N1c3RvbS1jdG9yLmpzOgogdGVzdC9i
dWlsdC1pbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9ycy9vZi9uZXctaW5zdGFuY2UtdXNpbmctY3Vz
dG9tLWN0b3IuanM6CiAgIGRlZmF1bHQ6ICdUeXBlRXJyb3I6IFR5cGVkQXJyYXkub2YgcmVxdWly
ZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8gc3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0cnVjdG9y
IChUZXN0aW5nIHdpdGggRmxvYXQ2NEFycmF5LiknCiAgIHN0cmljdCBtb2RlOiAnVHlwZUVycm9y
OiBUeXBlZEFycmF5Lm9mIHJlcXVpcmVzIGl0cyB0aGlzIGFyZ3VtZW50IHRvIHN1YmNsYXNzIGEg
VHlwZWRBcnJheSBjb25zdHJ1Y3RvciAoVGVzdGluZyB3aXRoIEZsb2F0NjRBcnJheS4pJwotdGVz
dC9pbnRsNDAyL0NvbGxhdG9yL21pc3NpbmctdW5pY29kZS1leHQtdmFsdWUtZGVmYXVsdHMtdG8t
dHJ1ZS5qczoKLSAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogXCJrbi10cnVlXCIgaXMgcmV0dXJu
ZWQgaW4gbG9jYWxlLCBidXQgc2hvdWxkbid0IGJlLiBFeHBlY3RlZCBTYW1lVmFsdWUowqs3wrss
IMKrLTHCuykgdG8gYmUgdHJ1ZSIKLSAgc3RyaWN0IG1vZGU6ICJUZXN0MjYyRXJyb3I6IFwia24t
dHJ1ZVwiIGlzIHJldHVybmVkIGluIGxvY2FsZSwgYnV0IHNob3VsZG4ndCBiZS4gRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrN8K7LCDCqy0xwrspIHRvIGJlIHRydWUiCiB0ZXN0L2ludGw0MDIvRGF0ZVRp
bWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC90aW1lZGF0ZXN0eWxlLWVuLmpzOgogICBkZWZhdWx0
OiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1lVmFs
dWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZcK7LCDCqzE0OjEyOjQ3
IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2Rl
OiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1lVmFs
dWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZcK7LCDCqzE0OjEyOjQ3
IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrspIHRvIGJlIHRydWUnCkBAIC0xNDczLDkgKzE0
NzAsNiBAQCB0ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5vbmljYWxMb2NhbGVzL3VuaWNvZGUtZXh0
LWNhbm9uaWNhbGl6ZS1yZWdpb24uanM6CiB0ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5vbmljYWxM
b2NhbGVzL3VuaWNvZGUtZXh0LWNhbm9uaWNhbGl6ZS1zdWJkaXZpc2lvbi5qczoKICAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kLU5PLXUtc2Qtbm8yM8K7
LCDCq3VuZC1OTy11LXNkLW5vNTDCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZC1OTy11LXNkLW5vMjPCuywgwqt1bmQt
Tk8tdS1zZC1ubzUwwrspIHRvIGJlIHRydWUnCi10ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5vbmlj
YWxMb2NhbGVzL3VuaWNvZGUtZXh0LWNhbm9uaWNhbGl6ZS15ZXMtdG8tdHJ1ZS5qczoKLSAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kLXUta2ItdHJ1ZcK7
LCDCq3VuZC11LWtiwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmQtdS1rYi10cnVlwrssIMKrdW5kLXUta2LCuykgdG8g
YmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2FsZXMvdW5pY29kZS1l
eHQta2V5LXdpdGgtZGlnaXQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq2VuLXUtMGMteWVzwrssIMKrZW4tdS0wY8K7KSB0byBiZSB0cnVlJwogICBz
dHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS0wYy15
ZXPCuywgwqtlbi11LTBjwrspIHRvIGJlIHRydWUnCkBAIC0xNDg1LDIxICsxNDc5LDEyIEBAIHRl
c3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3ItYXBwbHktb3B0aW9ucy1jYW5vbmljYWxpemVz
LXR3aWNlLmpzOgogdGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1ub24taWFuYS1jYW5v
bi5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJtbyIpLm1h
eGltaXplKCkudG9TdHJpbmcoKSByZXR1cm5zICJyby1MYXRuLVJPIiBFeHBlY3RlZCBTYW1lVmFs
dWUowqtyb8K7LCDCq3JvLUxhdG4tUk/CuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgibW8iKS5tYXhpbWl6ZSgpLnRvU3RyaW5nKCkg
cmV0dXJucyAicm8tTGF0bi1STyIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrcm/Cuywgwqtyby1MYXRu
LVJPwrspIHRvIGJlIHRydWUnCi10ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLW9wdGlv
bnMtbnVtZXJpYy11bmRlZmluZWQuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ldyBJ
bnRsLkxvY2FsZSgiZW4tdS1rbi10cnVlIiwge251bWVyaWM6IHVuZGVmaW5lZH0pLnRvU3RyaW5n
KCkgcmV0dXJucyAiZW4tdS1rbiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS1rbi10cnVlwrss
IMKrZW4tdS1rbsK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
bmV3IEludGwuTG9jYWxlKCJlbi11LWtuLXRydWUiLCB7bnVtZXJpYzogdW5kZWZpbmVkfSkudG9T
dHJpbmcoKSByZXR1cm5zICJlbi11LWtuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRy
dWXCuywgwqtlbi11LWtuwrspIHRvIGJlIHRydWUnCi10ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0
cnVjdG9yLW9wdGlvbnMtbnVtZXJpYy12YWxpZC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJv
cjogbmV3IEludGwuTG9jYWxlKCJlbiIsIHtudW1lcmljOiB0cnVlfSkudG9TdHJpbmcoKSByZXR1
cm5zICJ0cnVlIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtlbi11LWtu
wrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5M
b2NhbGUoImVuIiwge251bWVyaWM6IHRydWV9KS50b1N0cmluZygpIHJldHVybnMgInRydWUiIEV4
cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27CuykgdG8gYmUgdHJ1
ZScKIHRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0aW9ucy1yZWdpb24tdmFsaWQu
anM6CiAgIGRlZmF1bHQ6ICJUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7cmVn
aW9uOiBcIjU1NFwifSkudG9TdHJpbmcoKSByZXR1cm5zIFwiZW4tTlpcIiBFeHBlY3RlZCBTYW1l
VmFsdWUowqtlbi01NTTCuywgwqtlbi1OWsK7KSB0byBiZSB0cnVlIgogICBzdHJpY3QgbW9kZTog
IlRlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCdlbicsIHtyZWdpb246IFwiNTU0XCJ9KS50
b1N0cmluZygpIHJldHVybnMgXCJlbi1OWlwiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLTU1NMK7
LCDCq2VuLU5awrspIHRvIGJlIHRydWUiCiB0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9y
LXRhZy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJzbC1S
T1pBSi1CSVNLRS0xOTk0IikudG9TdHJpbmcoKSByZXR1cm5zICJzbC0xOTk0LWJpc2tlLXJvemFq
IiBFeHBlY3RlZCBTYW1lVmFsdWUowqtzbC1yb3phai1iaXNrZS0xOTk0wrssIMKrc2wtMTk5NC1i
aXNrZS1yb3phasK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
bmV3IEludGwuTG9jYWxlKCJzbC1ST1pBSi1CSVNLRS0xOTk0IikudG9TdHJpbmcoKSByZXR1cm5z
ICJzbC0xOTk0LWJpc2tlLXJvemFqIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtzbC1yb3phai1iaXNr
ZS0xOTk0wrssIMKrc2wtMTk5NC1iaXNrZS1yb3phasK7KSB0byBiZSB0cnVlJwotdGVzdC9pbnRs
NDAyL0xvY2FsZS9nZXR0ZXJzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1r
Zi10cnVlLWtuLWZhbHNlLW51LWxhdG7CuywgwqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1w
aG9uZWJrLWhjLWgyMy1rZi1rbi1mYWxzZS1udS1sYXRuwrspIHRvIGJlIHRydWUnCi0gIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtkZS1MYXRuLURFLXUt
Y2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1rZi10cnVlLWtuLWZhbHNlLW51LWxhdG7Cuywg
wqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1rZi1rbi1mYWxzZS1u
dS1sYXRuwrspIHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvTG9jYWxlL2xpa2VseS1zdWJ0YWdz
LWdyYW5kZmF0aGVyZWQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNh
bWVWYWx1ZSjCq2NtbsK7LCDCq3powrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtjbW7Cuywgwqt6aMK7KSB0byBiZSB0cnVl
Jwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408425</attachid>
            <date>2020-09-10 02:22:12 -0700</date>
            <delta_ts>2020-09-11 20:18:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216224-20200910022211.patch</filename>
            <type>text/plain</type>
            <size>33805</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2ODE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
NmRmZTA4Yjc1NDAzNzc0ODU5NTY3NTVmMzJkNzgzMmYzZDhiOGU3Li4xNjUzNjk4N2UwYzYzY2Nk
ZWUwODc1MTkwNGMyYTkxNzBiODNhMzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOCBAQAorMjAyMC0wOS0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24g
dHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1IGRlZmluZXMgdGhhdCB1bmlj
b2RlIGV4dGVuc2lvbiB0eXBlJ3MgInRydWUiIHNob3VsZCBiZSBjb252ZXJnZWQgdG8gIiIuCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSBleHRyYWN0aW5nIHVuaWNvZGUgZXh0
ZW5zaW9uIHN1YnRhZ3MgYW5kIHJlcGxhY2luZyAidHJ1ZSIgdG8gIiIuCisKKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAgICAoSlNDOjpMb2NhbGVJREJ1aWxkZXI6OnRv
Q2Fub25pY2FsKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgor
ICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KToKKyAgICAg
ICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp1bmljb2RlRXh0ZW5z
aW9uU3ViVGFncyk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6ZVVuaWNvZGVFeHRlbnNpb25z
QWZ0ZXJJQ1VMb2NhbGVDYW5vbmljYWxpemF0aW9uKToKKyAgICAgICAgKEpTQzo6bGFuZ3VhZ2VU
YWdGb3JMb2NhbGVJRCk6CisgICAgICAgIChKU0M6OnJlc29sdmVMb2NhbGUpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdElubGlu
ZXMuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUpOgorICAgICAg
ICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVR3
b0NoYXJhY3RlcnMxNkNvZGUpOiBEZWxldGVkLgorCiAyMDIwLTA5LTA5ICBTYWFtIEJhcmF0aSAg
PHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIE91dE9mQm91bmRzU2FuZUNoYWluIG9wZXJh
dGlvbnMgc2hvdWxkIHVzZSB0aGVpciBvd24gaGVhcCBsb2NhdGlvbnMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKaW5kZXggZmE3ZTUzYTI5
OWViZjQ4OWU3NmMzZGQwMjhhZjc5NDBiMzhjMWQ3Ny4uZDk5OTNkYmEzNWQ2YjM5NmU0ZTkxNzky
ZjZhZmVkYzY5Y2E5ZTFkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOS0xMCAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6
ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24gdHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3
Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6OmNoYXJhY3RlckF0IGNvbnN0KToKKyAgICAg
ICAgKFdURjo6U3RyaW5nVmlldzo6b3BlcmF0b3JbXSBjb25zdCk6CisKIDIwMjAtMDktMDkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgU2ltcGxpZnkgT3B0aW9u
U2V0OjpzZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxM
b2NhbGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAK
aW5kZXggNGFhMmE1MGJhZjY1ZmE4OTE4OWE3MDA5MzM0NDJkNzczYzg2NzM0Yy4uNTIxOTc0YjEx
ZTBiZjhkNWViOGYyNWIyYmQ1NjEyMzdmZWEyMTAyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAKQEAgLTkxLDExICs5MSwxMiBAQCBDU3RyaW5nIExv
Y2FsZUlEQnVpbGRlcjo6dG9DYW5vbmljYWwoKQogewogICAgIEFTU0VSVChtX2J1ZmZlci5zaXpl
KCkpOwogCi0gICAgVmVjdG9yPGNoYXIsIDMyPiByZXN1bHQ7Ci0gICAgYXV0byBzdGF0dXMgPSBj
YWxsQnVmZmVyUHJvZHVjaW5nRnVuY3Rpb24odWxvY19jYW5vbmljYWxpemUsIG1fYnVmZmVyLmRh
dGEoKSwgcmVzdWx0KTsKKyAgICBWZWN0b3I8Y2hhciwgMzI+IGJ1ZmZlcjsKKyAgICBhdXRvIHN0
YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1bG9jX2Nhbm9uaWNhbGl6ZSwgbV9i
dWZmZXIuZGF0YSgpLCBidWZmZXIpOwogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAg
ICAgcmV0dXJuIENTdHJpbmcoKTsKIAorICAgIGF1dG8gcmVzdWx0ID0gY2Fub25pY2FsaXplVW5p
Y29kZUV4dGVuc2lvbnNBZnRlcklDVUxvY2FsZUNhbm9uaWNhbGl6YXRpb24oV1RGTW92ZShidWZm
ZXIpKTsKICAgICByZXR1cm4gQ1N0cmluZyhyZXN1bHQuZGF0YSgpLCByZXN1bHQuc2l6ZSgpKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2Fs
ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmNwcAppbmRleCA0YThiODQzOThlYjA4NWIxNjYwNGZlNDE0OWJlMTU2ODg2ZGQ3
OThkLi5mNDQ0NmI0NTEyYWFjYmE0NmYwZmJhZTQxZmE2ZWY0YWZjZDdkYzBjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlUHJvdG90eXBlLmNw
cApAQCAtMTgwLDcgKzE4MCwxMiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxM
b2NhbGVQcm90b3R5cGVHZXR0ZXJDYXNlRmlyc3QoSlNHbG9iYWxPYmplY3QqCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5w
cm90b3R5cGUuY2FzZUZpcnN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVjdCBp
bml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKICAgICBjb25zdCBTdHJpbmcmIGNhc2VGaXJz
dCA9IGxvY2FsZS0+Y2FzZUZpcnN0KCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoY2FzZUZpcnN0LmlzRW1wdHkoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0
cmluZyh2bSwgY2FzZUZpcnN0KSkpOworICAgIGlmIChjYXNlRmlyc3QuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIC8vIElmIGNh
c2VGaXJzdCBpcyAidHJ1ZSIsIHRoZW4gd2Ugc2hvdWxkIHJldHVybiAiIiBzaW5jZSBsYW5ndWFn
ZSB0YWcgY2Fub25pY2FsaXphdGlvbiBtYWtlcyBpdCAiIi4KKyAgICBpZiAoY2FzZUZpcnN0ID09
ICJ0cnVlIl9zKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzRW1wdHlTdHJpbmco
dm0pKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBjYXNlRmlyc3Qp
KTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90
b3R5cGUuY29sbGF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwCmluZGV4IDMwMWJkZDEzZWI2NzAzYTM5OGRkZTY0ZDRjNDM4NWE0MTEwZTFmMDQuLjhj
ZWM0NTZhMzAzOGIzNjA5ZWU2YTA4NWQ5ZmY0NzAzNDFiYTczODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xOTAsNiArMTkwLDQ3IEBAIFN0
cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOwogfQogCitzdGF0aWMgVmVjdG9yPFN0cmluZ1ZpZXc+IHVuaWNvZGVFeHRl
bnNpb25TdWJUYWdzKFN0cmluZ1ZpZXcgZXh0ZW5zaW9uKQoreworICAgIC8vIFVuaWNvZGVFeHRl
bnNpb25TdWJ0YWdzIChleHRlbnNpb24pCisgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hNDAyLyNzZWMtdW5pY29kZWV4dGVuc2lvbnN1YnRhZ3MKKworICAgIGF1dG8gZXh0ZW5zaW9u
TGVuZ3RoID0gZXh0ZW5zaW9uLmxlbmd0aCgpOworICAgIGlmIChleHRlbnNpb25MZW5ndGggPCAz
KQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFN0cmluZ1ZpZXc+IHN1YnRhZ3M7
CisgICAgc2l6ZV90IHN1YnRhZ1N0YXJ0ID0gMzsgLy8gU2tpcCBpbml0aWFsIC11LS4KKyAgICBz
aXplX3QgdmFsdWVTdGFydCA9IDM7CisgICAgYm9vbCBpc0xlYWRpbmcgPSB0cnVlOworICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gc3VidGFnU3RhcnQ7IGluZGV4IDwgZXh0ZW5zaW9uTGVuZ3RoOyAr
K2luZGV4KSB7CisgICAgICAgIGlmIChleHRlbnNpb25baW5kZXhdID09ICctJykgeworICAgICAg
ICAgICAgaWYgKGluZGV4IC0gc3VidGFnU3RhcnQgPT0gMikgeworICAgICAgICAgICAgICAgIC8v
IFRhZyBpcyBhIGtleSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVlIGlmIHRoZXJlIGlz
IG9uZS4KKyAgICAgICAgICAgICAgICBpZiAoc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0ID4gMSkK
KyAgICAgICAgICAgICAgICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2
YWx1ZVN0YXJ0LCBzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgLSAxKSk7CisgICAgICAgICAgICAg
ICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyhzdWJ0YWdTdGFydCwgaW5kZXgg
LSBzdWJ0YWdTdGFydCkpOworICAgICAgICAgICAgICAgIHZhbHVlU3RhcnQgPSBpbmRleCArIDE7
CisgICAgICAgICAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzTGVhZGluZykgeworICAgICAgICAgICAgICAgIC8vIExlYWRpbmcgc3VidGFncyBiZWZv
cmUgZmlyc3Qga2V5LgorICAgICAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5z
dWJzdHJpbmcoc3VidGFnU3RhcnQsIGluZGV4IC0gc3VidGFnU3RhcnQpKTsKKyAgICAgICAgICAg
ICAgICB2YWx1ZVN0YXJ0ID0gaW5kZXggKyAxOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
c3VidGFnU3RhcnQgPSBpbmRleCArIDE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGV4dGVu
c2lvbkxlbmd0aCAtIHN1YnRhZ1N0YXJ0ID09IDIpIHsKKyAgICAgICAgLy8gVHJhaWxpbmcgYW4g
ZXh0ZW5zaW9uIGtleSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVlIGlmIHRoZXJlIGlz
IG9uZS4KKyAgICAgICAgaWYgKHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCA+IDEpCisgICAgICAg
ICAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVlU3RhcnQsIHN1YnRh
Z1N0YXJ0IC0gdmFsdWVTdGFydCAtIDEpKTsKKyAgICAgICAgdmFsdWVTdGFydCA9IHN1YnRhZ1N0
YXJ0OworICAgIH0KKyAgICAvLyBBcHBlbmQgZmluYWwga2V5J3MgdmFsdWUuCisgICAgc3VidGFn
cy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBleHRlbnNpb25MZW5ndGgg
LSB2YWx1ZVN0YXJ0KSk7CisgICAgcmV0dXJuIHN1YnRhZ3M7Cit9CisKIFZlY3RvcjxjaGFyLCAz
Mj4gbG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5nJiB0YWcpCiB7CiAg
ICAgaWYgKCF0YWcubGVuZ3RoKCkpCkBAIC0yMTIsNiArMjUzLDkxIEBAIFZlY3RvcjxjaGFyLCAz
Mj4gbG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5nJiB0YWcpCiAgICAg
cmV0dXJuIGJ1ZmZlcjsKIH0KIAorVmVjdG9yPGNoYXIsIDMyPiBjYW5vbmljYWxpemVVbmljb2Rl
RXh0ZW5zaW9uc0FmdGVySUNVTG9jYWxlQ2Fub25pY2FsaXphdGlvbihWZWN0b3I8Y2hhciwgMzI+
JiYgYnVmZmVyKQoreworICAgIFN0cmluZ1ZpZXcgbG9jYWxlKGJ1ZmZlci5kYXRhKCksIGJ1ZmZl
ci5zaXplKCkpOworICAgIEFTU0VSVChsb2NhbGUuaXM4Qml0KCkpOworICAgIHNpemVfdCBleHRl
bnNpb25JbmRleCA9IGxvY2FsZS5maW5kKCItdS0iKTsKKyAgICBpZiAoZXh0ZW5zaW9uSW5kZXgg
PT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7CisKKyAgICAvLyBT
aW5jZSBJQ1UncyBjYW5vbmljYWxpemF0aW9uIGlzIGluY29tcGxldGUsIHdlIG5lZWQgdG8gcGVy
Zm9ybSBzb21lIG9mIGNhbm9uaWNhbGl6YXRpb24gaGVyZS4KKyAgICBzaXplX3QgZXh0ZW5zaW9u
TGVuZ3RoID0gbG9jYWxlLmxlbmd0aCgpIC0gZXh0ZW5zaW9uSW5kZXg7CisgICAgc2l6ZV90IGVu
ZCA9IGV4dGVuc2lvbkluZGV4ICsgMzsKKyAgICB3aGlsZSAoZW5kIDwgbG9jYWxlLmxlbmd0aCgp
KSB7CisgICAgICAgIGVuZCA9IGxvY2FsZS5maW5kKCctJywgZW5kKTsKKyAgICAgICAgaWYgKGVu
ZCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAvLyBGb3VuZCBhbm90
aGVyIHNpbmdsZXRvbi4KKyAgICAgICAgaWYgKGVuZCArIDIgPCBsb2NhbGUubGVuZ3RoKCkgJiYg
bG9jYWxlW2VuZCArIDJdID09ICctJykgeworICAgICAgICAgICAgZXh0ZW5zaW9uTGVuZ3RoID0g
ZW5kIC0gZXh0ZW5zaW9uSW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAg
ICAgICBlbmQrKzsKKyAgICB9CisKKyAgICBhdXRvIHNob3VsZEluY2x1ZGUgPSBbXShTdHJpbmdW
aWV3IGtleSwgU3RyaW5nVmlldyB2YWx1ZSkgeworICAgICAgICBBU1NFUlQoa2V5Lmxlbmd0aCgp
ID09IDIpOworICAgICAgICAvLyBJZiB2YWx1ZSBpcyAidHJ1ZSIsIHdlIHNob3VsZCBub3QgaW5j
bHVkZSB2YWx1ZS4KKyAgICAgICAgaWYgKHZhbHVlID09ICJ0cnVlIl9zKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICBpZiAodmFsdWUgIT0gInllcyJfcykKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICAvLyBJbiB0aGUgZm9sbG93aW5nIHVuaWNvZGUgZXh0ZW5z
aW9uIGtleXMsICJ5ZXMiIGlzIGFsaWFzIG9mICJ0cnVlIi4gU28gd2Ugc2hvdWxkIG5vdCBpbmNs
dWRlIHZhbHVlLgorICAgICAgICAvLyBTZWUgQ0xEUiBrZXkgbmFtZT0ia2IiIGVudHJ5IGZvciBl
eGFtcGxlLgorICAgICAgICBzd2l0Y2ggKGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKGtleSkp
IHsKKyAgICAgICAgY2FzZSBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZSgia2IiX3MpOgorICAg
ICAgICBjYXNlIGNvbXB1dGVUd29DaGFyYWN0ZXJzMTZDb2RlKCJrYyJfcyk6CisgICAgICAgIGNh
c2UgY29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoImtoIl9zKToKKyAgICAgICAgY2FzZSBjb21w
dXRlVHdvQ2hhcmFjdGVyczE2Q29kZSgia2siX3MpOgorICAgICAgICBjYXNlIGNvbXB1dGVUd29D
aGFyYWN0ZXJzMTZDb2RlKCJrbiJfcyk6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH07
CisKKyAgICBWZWN0b3I8Y2hhciwgMzI+IHJlc3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZl
ci5kYXRhKCksIGV4dGVuc2lvbkluZGV4ICsgMik7IC8vICItdSIgaXMgaW5jbHVkZWQuCisgICAg
U3RyaW5nVmlldyBleHRlbnNpb24gPSBsb2NhbGUuc3Vic3RyaW5nKGV4dGVuc2lvbkluZGV4LCBl
eHRlbnNpb25MZW5ndGgpOworICAgIEFTU0VSVChleHRlbnNpb24uaXM4Qml0KCkpOworICAgIGF1
dG8gc3VidGFncyA9IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdzKGV4dGVuc2lvbik7CisgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgc3VidGFncy5zaXplKCk7KSB7CisgICAgICAg
IGF1dG8gc3VidGFnID0gc3VidGFnc1tpbmRleF07CisgICAgICAgIEFTU0VSVChzdWJ0YWcuaXM4
Qml0KCkpOworICAgICAgICByZXN1bHQuYXBwZW5kKCctJyk7CisgICAgICAgIHJlc3VsdC5hcHBl
bmQoc3VidGFnLmNoYXJhY3RlcnM4KCksIHN1YnRhZy5sZW5ndGgoKSk7CisKKyAgICAgICAgaWYg
KHN1YnRhZy5sZW5ndGgoKSAhPSAyKSB7CisgICAgICAgICAgICArK2luZGV4OworICAgICAgICAg
ICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJUKHN1YnRhZy5sZW5ndGgoKSA9
PSAyKTsKKworICAgICAgICAvLyBUaGlzIGlzIHVuaWNvZGUgZXh0ZW5zaW9uIGtleS4KKyAgICAg
ICAgdW5zaWduZWQgdmFsdWVJbmRleFN0YXJ0ID0gaW5kZXggKyAxOworICAgICAgICB1bnNpZ25l
ZCB2YWx1ZUluZGV4RW5kID0gdmFsdWVJbmRleFN0YXJ0OworICAgICAgICBmb3IgKDsgdmFsdWVJ
bmRleEVuZCA8IHN1YnRhZ3Muc2l6ZSgpOyArK3ZhbHVlSW5kZXhFbmQpIHsKKyAgICAgICAgICAg
IGlmIChzdWJ0YWdzW3ZhbHVlSW5kZXhFbmRdLmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgLy8gW3ZhbHVlSW5kZXhTdGFydCwgdmFsdWVJ
bmRleEVuZCkgaXMgdmFsdWUgb2YgdGhpcyB1bmljb2RlIGV4dGVuc2lvbi4gSWYgdGhlcmUgaXMg
bm8gdmFsdWUsIHZhbHVlSW5kZXhTdGFydCA9PSB2YWx1ZUluZGV4RW5kLgorCisgICAgICAgIGZv
ciAodW5zaWduZWQgdmFsdWVJbmRleCA9IHZhbHVlSW5kZXhTdGFydDsgdmFsdWVJbmRleCA8IHZh
bHVlSW5kZXhFbmQ7ICsrdmFsdWVJbmRleCkgeworICAgICAgICAgICAgaWYgKHNob3VsZEluY2x1
ZGUoc3VidGFnLCBzdWJ0YWdzW3ZhbHVlSW5kZXhdKSkgeworICAgICAgICAgICAgICAgIHJlc3Vs
dC5hcHBlbmQoJy0nKTsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHN1YnRhZ3NbdmFs
dWVJbmRleF0uY2hhcmFjdGVyczgoKSwgc3VidGFnc1t2YWx1ZUluZGV4XS5sZW5ndGgoKSk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW5kZXggPSB2YWx1ZUluZGV4RW5kOwor
ICAgIH0KKworICAgIHVuc2lnbmVkIHJlbWFpbmluZ1N0YXJ0ID0gZXh0ZW5zaW9uSW5kZXggKyBl
eHRlbnNpb25MZW5ndGg7CisgICAgdW5zaWduZWQgcmVtYWluaW5nTGVuZ3RoID0gYnVmZmVyLnNp
emUoKSAtIHJlbWFpbmluZ1N0YXJ0OworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyLmRhdGEoKSAr
IHJlbWFpbmluZ1N0YXJ0LCByZW1haW5pbmdMZW5ndGgpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKIFN0cmluZyBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlEKGNvbnN0IGNoYXIqIGxvY2FsZUlELCBi
b29sIGlzSW1tb3J0YWwpCiB7CiAgICAgVmVjdG9yPGNoYXIsIDMyPiBidWZmZXI7CkBAIC0yMTks
MTIgKzM0NSwxNSBAQCBTdHJpbmcgbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRChjb25zdCBjaGFyKiBs
b2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQogICAgIGlmIChVX0ZBSUxVUkUoc3RhdHVzKSkKICAg
ICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgLy8gVGhpcyBpcyB1c2VkIHRvIHN0b3JlIGlu
dG8gc3RhdGljIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBzaGFyZWQgYWNyb3NzIEpTQyBleGVjdXRp
b24gdGhyZWFkcy4KLSAgICAvLyBUaGlzIG11c3QgYmUgaW1tb3J0YWwgdG8gbWFrZSBjb25jdXJy
ZW50IHJlZi9kZXJlZiBzYWZlLgotICAgIGlmIChpc0ltbW9ydGFsKQotICAgICAgICByZXR1cm4g
U3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9IFsmXShWZWN0b3I8Y2hhciwgMzI+JiYg
YnVmZmVyKSAtPiBTdHJpbmcgeworICAgICAgICAvLyBUaGlzIGlzIHVzZWQgdG8gc3RvcmUgaW50
byBzdGF0aWMgdmFyaWFibGVzIHRoYXQgbWF5IGJlIHNoYXJlZCBhY3Jvc3MgSlNDIGV4ZWN1dGlv
biB0aHJlYWRzLgorICAgICAgICAvLyBUaGlzIG11c3QgYmUgaW1tb3J0YWwgdG8gbWFrZSBjb25j
dXJyZW50IHJlZi9kZXJlZiBzYWZlLgorICAgICAgICBpZiAoaXNJbW1vcnRhbCkKKyAgICAgICAg
ICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0aWNTdHJpbmdJbXBsKGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCks
IGJ1ZmZlci5zaXplKCkpOworICAgIH07CiAKLSAgICByZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRh
KCksIGJ1ZmZlci5zaXplKCkpOworICAgIHJldHVybiBjcmVhdGVSZXN1bHQoY2Fub25pY2FsaXpl
VW5pY29kZUV4dGVuc2lvbnNBZnRlcklDVUxvY2FsZUNhbm9uaWNhbGl6YXRpb24oV1RGTW92ZShi
dWZmZXIpKSk7CiB9CiAKIC8vIEVuc3VyZSB3ZSBoYXZlIHh4LVpaIHdoZW5ldmVyIHdlIGhhdmUg
eHgtWXl5eS1aWi4KQEAgLTY5NCw0NSArODIzLDYgQEAgc3RhdGljIE1hdGNoZXJSZXN1bHQgYmVz
dEZpdE1hdGNoZXIoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSGFzaFNldDwK
ICAgICByZXR1cm4gbG9va3VwTWF0Y2hlcihnbG9iYWxPYmplY3QsIGF2YWlsYWJsZUxvY2FsZXMs
IHJlcXVlc3RlZExvY2FsZXMpOwogfQogCi1zdGF0aWMgdm9pZCB1bmljb2RlRXh0ZW5zaW9uU3Vi
VGFncyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgVmVjdG9yPFN0cmluZz4mIHN1YnRhZ3MpCi17
Ci0gICAgLy8gVW5pY29kZUV4dGVuc2lvblN1YnRhZ3MgKGV4dGVuc2lvbikKLSAgICAvLyBodHRw
czovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy11bmljb2RlZXh0ZW5zaW9uc3VidGFncwot
Ci0gICAgYXV0byBleHRlbnNpb25MZW5ndGggPSBleHRlbnNpb24ubGVuZ3RoKCk7Ci0gICAgaWYg
KGV4dGVuc2lvbkxlbmd0aCA8IDMpCi0gICAgICAgIHJldHVybjsKLQotICAgIHNpemVfdCBzdWJ0
YWdTdGFydCA9IDM7IC8vIFNraXAgaW5pdGlhbCAtdS0uCi0gICAgc2l6ZV90IHZhbHVlU3RhcnQg
PSAzOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9
IHN1YnRhZ1N0YXJ0OyBpbmRleCA8IGV4dGVuc2lvbkxlbmd0aDsgKytpbmRleCkgewotICAgICAg
ICBpZiAoZXh0ZW5zaW9uW2luZGV4XSA9PSAnLScpIHsKLSAgICAgICAgICAgIGlmIChpbmRleCAt
IHN1YnRhZ1N0YXJ0ID09IDIpIHsKLSAgICAgICAgICAgICAgICAvLyBUYWcgaXMgYSBrZXksIGZp
cnN0IGFwcGVuZCBwcmlvciBrZXkncyB2YWx1ZSBpZiB0aGVyZSBpcyBvbmUuCi0gICAgICAgICAg
ICAgICAgaWYgKHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCA+IDEpCi0gICAgICAgICAgICAgICAg
ICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcodmFsdWVTdGFydCwgc3VidGFn
U3RhcnQgLSB2YWx1ZVN0YXJ0IC0gMSkpOwotICAgICAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5k
KGV4dGVuc2lvbi5zdWJzdHJpbmcoc3VidGFnU3RhcnQsIGluZGV4IC0gc3VidGFnU3RhcnQpKTsK
LSAgICAgICAgICAgICAgICB2YWx1ZVN0YXJ0ID0gaW5kZXggKyAxOwotICAgICAgICAgICAgICAg
IGlzTGVhZGluZyA9IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIGlmIChpc0xlYWRpbmcpIHsK
LSAgICAgICAgICAgICAgICAvLyBMZWFkaW5nIHN1YnRhZ3MgYmVmb3JlIGZpcnN0IGtleS4KLSAg
ICAgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHN1YnRhZ1N0
YXJ0LCBpbmRleCAtIHN1YnRhZ1N0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgdmFsdWVTdGFydCA9
IGluZGV4ICsgMTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN1YnRhZ1N0YXJ0ID0gaW5k
ZXggKyAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChleHRlbnNpb25MZW5ndGggLSBzdWJ0
YWdTdGFydCA9PSAyKSB7Ci0gICAgICAgIC8vIFRyYWlsaW5nIGFuIGV4dGVuc2lvbiBrZXksIGZp
cnN0IGFwcGVuZCBwcmlvciBrZXkncyB2YWx1ZSBpZiB0aGVyZSBpcyBvbmUuCi0gICAgICAgIGlm
IChzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgPiAxKQotICAgICAgICAgICAgc3VidGFncy5hcHBl
bmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBzdWJ0YWdTdGFydCAtIHZhbHVlU3Rh
cnQgLSAxKSk7Ci0gICAgICAgIHZhbHVlU3RhcnQgPSBzdWJ0YWdTdGFydDsKLSAgICB9Ci0gICAg
Ly8gQXBwZW5kIGZpbmFsIGtleSdzIHZhbHVlLgotICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lv
bi5zdWJzdHJpbmcodmFsdWVTdGFydCwgZXh0ZW5zaW9uTGVuZ3RoIC0gdmFsdWVTdGFydCkpOwot
fQotCiBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHJlbGV2YW50RXh0ZW5zaW9uS2V5U3RyaW5nKFJl
bGV2YW50RXh0ZW5zaW9uS2V5IGtleSkKIHsKICAgICBzd2l0Y2ggKGtleSkgewpAQCAtNzU2LDkg
Kzg0Niw5IEBAIFJlc29sdmVkTG9jYWxlIHJlc29sdmVMb2NhbGUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgSGFzaFNldDxTdHJpbmc+CiAKICAgICBTdHJpbmcgZm91bmRMb2Nh
bGUgPSBtYXRjaGVyUmVzdWx0LmxvY2FsZTsKIAotICAgIFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lv
blN1YnRhZ3M7CisgICAgVmVjdG9yPFN0cmluZ1ZpZXc+IGV4dGVuc2lvblN1YnRhZ3M7CiAgICAg
aWYgKCFtYXRjaGVyUmVzdWx0LmV4dGVuc2lvbi5pc051bGwoKSkKLSAgICAgICAgdW5pY29kZUV4
dGVuc2lvblN1YlRhZ3MobWF0Y2hlclJlc3VsdC5leHRlbnNpb24sIGV4dGVuc2lvblN1YnRhZ3Mp
OworICAgICAgICBleHRlbnNpb25TdWJ0YWdzID0gdW5pY29kZUV4dGVuc2lvblN1YlRhZ3MobWF0
Y2hlclJlc3VsdC5leHRlbnNpb24pOwogCiAgICAgUmVzb2x2ZWRMb2NhbGUgcmVzb2x2ZWQ7CiAg
ICAgcmVzb2x2ZWQuZGF0YUxvY2FsZSA9IGZvdW5kTG9jYWxlOwpAQCAtNzc2LDkgKzg2NiwxMCBA
QCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPgogICAgICAgICAgICAgc2l6ZV90IGtleVBvcyA9IGV4
dGVuc2lvblN1YnRhZ3MuZmluZChrZXlTdHJpbmcpOwogICAgICAgICAgICAgaWYgKGtleVBvcyAh
PSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgIGlmIChrZXlQb3MgKyAxIDwgZXh0ZW5zaW9u
U3VidGFncy5zaXplKCkgJiYgZXh0ZW5zaW9uU3VidGFnc1trZXlQb3MgKyAxXS5sZW5ndGgoKSA+
IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRWYWx1ZSA9
IGV4dGVuc2lvblN1YnRhZ3Nba2V5UG9zICsgMV07Ci0gICAgICAgICAgICAgICAgICAgIGlmIChr
ZXlMb2NhbGVEYXRhLmNvbnRhaW5zKHJlcXVlc3RlZFZhbHVlKSkgewotICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSByZXF1ZXN0ZWRWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgU3Ry
aW5nVmlldyByZXF1ZXN0ZWRWYWx1ZSA9IGV4dGVuc2lvblN1YnRhZ3Nba2V5UG9zICsgMV07Cisg
ICAgICAgICAgICAgICAgICAgIGF1dG8gZGF0YVBvcyA9IGtleUxvY2FsZURhdGEuZmluZChyZXF1
ZXN0ZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkYXRhUG9zICE9IG5vdEZvdW5k
KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGtleUxvY2FsZURhdGFbZGF0YVBv
c107CiAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9
IG1ha2VTdHJpbmcoJy0nLCBrZXlTdHJpbmcsICctJywgdmFsdWUpOwogICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXlMb2NhbGVEYXRhLmNvbnRhaW5z
KCJ0cnVlIl9zKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5o
CmluZGV4IGViMTkwZDc2ZTYzNDVlZDM2YmJiMzVjYjY1ZjAxNTAyODlkMzAxYTYuLmE5NTgyMDk2
MzZjZDk1Njk2Y2Q4OWEwYTEyYWNiMjljY2U0YTQxMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTExMyw2ICsxMTMsOCBAQCBTdHJpbmcgYmVzdEF2
YWlsYWJsZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNv
bnN0IFN0cmluZwogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGljYXRlPiBTdHJpbmcgYmVzdEF2YWls
YWJsZUxvY2FsZShjb25zdCBTdHJpbmcmIHJlcXVlc3RlZExvY2FsZSwgUHJlZGljYXRlKTsKIFZl
Y3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNGb3JMb2NhbGUoY29uc3QgU3RyaW5nJiBsb2Nh
bGUpOwogCitWZWN0b3I8Y2hhciwgMzI+IGNhbm9uaWNhbGl6ZVVuaWNvZGVFeHRlbnNpb25zQWZ0
ZXJJQ1VMb2NhbGVDYW5vbmljYWxpemF0aW9uKFZlY3RvcjxjaGFyLCAzMj4mJik7CisKIGJvb2wg
aXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoU3RyaW5nVmlldyk7CiAKIGJvb2wgaXNVbmlj
b2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaAppbmRleCBlOGUzZjkxMGIwOGYxNGNmOTNk
OTdmNjE2MmQyY2JiNGEwNzBkNjllLi40OGUzNDBkMjIxODNkNTZhYjFiNjFkNDYzMWZlMWFmZmY5
M2JiMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3RJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDEyIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCit0ZW1w
bGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjb21w
dXRlVHdvQ2hhcmFjdGVyczE2Q29kZShjb25zdCBTdHJpbmdUeXBlJiBzdHJpbmcpCit7CisgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90PihzdHJpbmcuY2hhcmFjdGVyQXQoMCkpIHwgKHN0
YXRpY19jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nLmNoYXJhY3Rl
ckF0KDEpKSkgPDwgMTYpOworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBQcmVkaWNhdGU+IFN0cmlu
ZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNvbnN0IFN0cmluZyYgbG9jYWxlLCBQcmVkaWNhdGUgcHJl
ZGljYXRlKQogewogICAgIC8vIEJlc3RBdmFpbGFibGVMb2NhbGUgKGF2YWlsYWJsZUxvY2FsZXMs
IGxvY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCmluZGV4IDFlZjJjYjMxNWE2MDlkODU0MzkyYjI0NTNmNWM0NmMyNTZjODQyN2Qu
LjFhMmRjNWY1OGEyOTIyNDI2MDJhZjAzMzFjNGRiMTQzYTM4NjNiNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcApAQCAtMTU0MSwx
MiArMTU0MSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5j
TG9jYWxlQ29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsCiAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0b3ItPmNvbXBhcmVTdHJpbmdzKGdsb2Jh
bE9iamVjdCwgc3RyaW5nLCB0aGF0KSkpOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdU
eXBlPgotc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29k
ZShjb25zdCBTdHJpbmdUeXBlJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PHVp
bnQxNl90PihzdHJpbmcuY2hhcmFjdGVyQXQoMCkpIHwgKHN0YXRpY19jYXN0PHVpbnQzMl90Pihz
dGF0aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nLmNoYXJhY3RlckF0KDEpKSkgPDwgMTYpOwotfQot
CiBlbnVtIGNsYXNzIENhc2VDb252ZXJzaW9uTW9kZSB7CiAgICAgVXBwZXIsCiAgICAgTG93ZXIs
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9X
VEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDkyMGZiZmI3ZDFmM2QwOTQ1NmZmNDE5MzM0
NGIyMDEyMTRhMGUwMWUuLjg0MDI0ZWU3NGNlOTUxNWEzMTI3MWZmMmRiOTgyMDFmNDIxYmQ2MDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC03OSw2ICs3OSw3IEBAIGNsYXNzIFN0cmlu
Z1ZpZXcgZmluYWwgewogICAgIGV4cGxpY2l0IG9wZXJhdG9yIGJvb2woKSBjb25zdDsKICAgICBi
b29sIGlzTnVsbCgpIGNvbnN0OwogCisgICAgVUNoYXIgY2hhcmFjdGVyQXQodW5zaWduZWQgaW5k
ZXgpIGNvbnN0OwogICAgIFVDaGFyIG9wZXJhdG9yW10odW5zaWduZWQgaW5kZXgpIGNvbnN0Owog
CiAgICAgY2xhc3MgQ29kZVVuaXRzOwpAQCAtNDk5LDcgKzUwMCw3IEBAIGlubGluZSBTdHJpbmdW
aWV3IFN0cmluZ1ZpZXc6OnN1YnN0cmluZyh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgbGVuZ3Ro
KSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLWlubGluZSBVQ2hhciBTdHJpbmdWaWV3
OjpvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdAoraW5saW5lIFVDaGFyIFN0cmluZ1Zp
ZXc6OmNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBjb25zdAogewogICAgIEFTU0VSVChpbmRl
eCA8IGxlbmd0aCgpKTsKICAgICBpZiAoaXM4Qml0KCkpCkBAIC01MDcsNiArNTA4LDExIEBAIGlu
bGluZSBVQ2hhciBTdHJpbmdWaWV3OjpvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdAog
ICAgIHJldHVybiBjaGFyYWN0ZXJzMTYoKVtpbmRleF07CiB9CiAKK2lubGluZSBVQ2hhciBTdHJp
bmdWaWV3OjpvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25zdAoreworICAgIHJldHVybiBj
aGFyYWN0ZXJBdChpbmRleCk7Cit9CisKIGlubGluZSBib29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5z
KFVDaGFyIGNoYXJhY3RlcikgY29uc3QKIHsKICAgICByZXR1cm4gZmluZChjaGFyYWN0ZXIpICE9
IG5vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCA2ZjdiMmM1OWFlYjRmZjM1NzVlNmJhMzU3YzA3OTI4OWFiYzg3NTA2Li5mNjE1
OWQwYjJiMzQzMTVmZjU1NjhmODQwYTU1OGU2MmU3MmQwNWUxIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIw
LTA5LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gQ2Fub25pY2FsaXplICJ0cnVlIiB1bmljb2RlIGV4dGVuc2lvbiB0eXBlIHZhbHVlIHRvICIi
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTYyMjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy9pbnRsLWNvbGxhdG9yLWNvLWV4dGVuc2lvbi5qczoKKyAgICAgICAgKGV4cGxpY2l0VHJ1ZUJl
Zm9yZUlDVTY3KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHJlc3MvaW50bC1jb2xsYXRvci5qczoK
KyAgICAgICAgKHNob3VsZEJlLnRlc3RDb2xsYXRvci5JbnRsLkNvbGxhdG9yKToKKyAgICAgICAg
KGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3KTogRGVsZXRlZC4KKyAgICAgICAgKiBzdHJlc3MvaW50
bC1kYXRldGltZWZvcm1hdC5qczoKKyAgICAgICAgKiBzdHJlc3MvaW50bC1sb2NhbGUuanM6Cisg
ICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzOgorICAgICAgICAqIHN0cmVzcy9p
bnRsLW9iamVjdC5qczoKKyAgICAgICAgKiBzdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qczoKKyAg
ICAgICAgKiBzdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQuanM6CisgICAgICAgICogdGVz
dDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwogMjAyMC0wOS0wOSAgU2FhbSBCYXJhdGkgIDxzYmFy
YXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBPdXRPZkJvdW5kc1NhbmVDaGFpbiBvcGVyYXRpb25z
IHNob3VsZCB1c2UgdGhlaXIgb3duIGhlYXAgbG9jYXRpb25zCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9pbnRsLWNvbGxhdG9yLWNvLWV4dGVuc2lvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtY29sbGF0b3ItY28tZXh0ZW5zaW9uLmpzCmluZGV4IGMxNDg3ODQwYjQ5YWU5YmVjZmEzZTRk
YmZlNTcxOGU1YTIwZjY0N2UuLjUyMTIxYjNjYTc1MjVhNmQxMzVmOThmZDY1NWJhNzU4ODhhMzVk
OTMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtY29sbGF0b3ItY28tZXh0ZW5zaW9u
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtY29sbGF0b3ItY28tZXh0ZW5zaW9uLmpzCkBA
IC0xNSwxMCArMTUsNiBAQCBmdW5jdGlvbiBzaG91bGRCZUFycmF5KGFjdHVhbCwgZXhwZWN0ZWQp
IHsKICAgICB9CiB9CiAKLWZ1bmN0aW9uIGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3KCkgewotICAg
IHJldHVybiAkdm0uaWN1VmVyc2lvbigpIDwgNjcgPyAnLXRydWUnIDogJyc7Ci19Ci0KIHNob3Vs
ZEJlQXJyYXkoWyJBRSIsICJcdTAwQzQiXS5zb3J0KG5ldyBJbnRsLkNvbGxhdG9yKCJkZSIsIHt1
c2FnZTogInNvcnQifSkuY29tcGFyZSksIFsiXHUwMEM0IiwgIkFFIl0pOwogc2hvdWxkQmVBcnJh
eShbIkFFIiwgIlx1MDBDNCJdLnNvcnQobmV3IEludGwuQ29sbGF0b3IoImRlIiwge3VzYWdlOiAi
c2VhcmNoIn0pLmNvbXBhcmUpLCBbIkFFIiwgIlx1MDBDNCJdKTsKIHNob3VsZEJlKG5ldyBJbnRs
LkNvbGxhdG9yKCJkZSIsIHt1c2FnZTogInNvcnQifSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxl
LCAiZGUiKTsKQEAgLTQwLDggKzM2LDggQEAgZnVuY3Rpb24gZXhwbGljaXRUcnVlQmVmb3JlSUNV
NjcoKSB7CiAKIHNob3VsZEJlKG5ldyBJbnRsLkNvbGxhdG9yKCJlbi1VUy14LXR3YWluIiwge3Vz
YWdlOiAic2VhcmNoIn0pLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgImVuLVVTIik7CiAKLXNo
b3VsZEJlKG5ldyBJbnRsLkNvbGxhdG9yKCJkZS11LWtuIiwge3VzYWdlOiAic29ydCJ9KS5yZXNv
bHZlZE9wdGlvbnMoKS5sb2NhbGUsICJkZS11LWtuIiArIGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3
KCkpOwotc2hvdWxkQmUobmV3IEludGwuQ29sbGF0b3IoImRlLXUta24iLCB7dXNhZ2U6ICJzZWFy
Y2gifSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAiZGUtdS1rbiIgKyBleHBsaWNpdFRydWVC
ZWZvcmVJQ1U2NygpKTsKK3Nob3VsZEJlKG5ldyBJbnRsLkNvbGxhdG9yKCJkZS11LWtuIiwge3Vz
YWdlOiAic29ydCJ9KS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICJkZS11LWtuIik7CitzaG91
bGRCZShuZXcgSW50bC5Db2xsYXRvcigiZGUtdS1rbiIsIHt1c2FnZTogInNlYXJjaCJ9KS5yZXNv
bHZlZE9wdGlvbnMoKS5sb2NhbGUsICJkZS11LWtuIik7CiAKIHNob3VsZEJlQXJyYXkoWyJhIiwg
ImFlIiwgIsOkIiwgIsOmIl0uc29ydChuZXcgSW50bC5Db2xsYXRvcigiZGUtdS1jby1waG9uZWJr
IikuY29tcGFyZSksIFsiYSIsICJhZSIsICLDpCIsICLDpiJdKTsKIHNob3VsZEJlQXJyYXkoWyJh
IiwgImFlIiwgIsOkIiwgIsOmIl0uc29ydChuZXcgSW50bC5Db2xsYXRvcigiZGUiKS5jb21wYXJl
KSwgWyJhIiwgIsOkIiwgImFlIiwgIsOmIl0pOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
aW50bC1jb2xsYXRvci5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtY29sbGF0b3IuanMKaW5kZXgg
YTJlNDA1MDE0ZjU1NTUwMjg1NmUyMWQwZmJkNTBjNGFmOTZhYzA0OC4uYjBjMTI4NzFjMmQ4NThk
MTI1ZWYyOTM5MDNjZTQ3YmFmYjMyNzcwMCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50
bC1jb2xsYXRvci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWNvbGxhdG9yLmpzCkBAIC0x
OSwxMCArMTksNiBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKICAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKIH0K
IAotZnVuY3Rpb24gZXhwbGljaXRUcnVlQmVmb3JlSUNVNjcoKSB7Ci0gICAgcmV0dXJuICR2bS5p
Y3VWZXJzaW9uKCkgPCA2NyA/ICctdHJ1ZScgOiAnJzsKLX0KLQogLy8gMTAuMSBUaGUgSW50bC5D
b2xsYXRvciBDb25zdHJ1Y3RvcgogCiAvLyBUaGUgSW50bC5Db2xsYXRvciBjb25zdHJ1Y3RvciBp
cyBhIHN0YW5kYXJkIGJ1aWx0LWluIHByb3BlcnR5IG9mIHRoZSBJbnRsIG9iamVjdC4KQEAgLTg1
LDggKzgxLDggQEAgZnVuY3Rpb24gdGVzdENvbGxhdG9yKGNvbGxhdG9yLCBwb3NzaWJsZU9wdGlv
bkRpZmZlcmVuY2VzKSB7CiBzaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZGUt
dS1jby1waG9uZWJrJyksIFt7bG9jYWxlOiAnZGUtdS1jby1waG9uZWJrJywgY29sbGF0aW9uOiAn
cGhvbmViayd9LCB7bG9jYWxlOiAnZGUnfV0pLCB0cnVlKTsKIAogLy8gVGhlICdrbicga2V5IGlz
IHByb2Nlc3NlZCBjb3JyZWN0bHkuCi1zaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRv
cignZW4tdS1rbicpLCBbe2xvY2FsZTogJ2VuLXUta24nICsgZXhwbGljaXRUcnVlQmVmb3JlSUNV
NjcoKSwgbnVtZXJpYzogdHJ1ZX1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50
bC5Db2xsYXRvcignZW4tdS1rbi10cnVlJyksIFt7bG9jYWxlOiAnZW4tdS1rbicgKyBleHBsaWNp
dFRydWVCZWZvcmVJQ1U2NygpLCBudW1lcmljOiB0cnVlfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRl
c3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdlbi11LWtuJyksIFt7bG9jYWxlOiAnZW4tdS1rbics
IG51bWVyaWM6IHRydWV9XSksIHRydWUpOworc2hvdWxkQmUodGVzdENvbGxhdG9yKEludGwuQ29s
bGF0b3IoJ2VuLXUta24tdHJ1ZScpLCBbe2xvY2FsZTogJ2VuLXUta24nLCBudW1lcmljOiB0cnVl
fV0pLCB0cnVlKTsKIHNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdlbi11LWtu
LWZhbHNlJyksIFt7bG9jYWxlOiAnZW4tdS1rbi1mYWxzZScsIG51bWVyaWM6IGZhbHNlfV0pLCB0
cnVlKTsKIHNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdlbi11LWtuLWFiY2Qn
KSwgW3tsb2NhbGU6ICdlbid9XSksIHRydWUpOwogCkBAIC0xNTAsNyArMTQ2LDcgQEAgZnVuY3Rp
b24gdGVzdENvbGxhdG9yKGNvbGxhdG9yLCBwb3NzaWJsZU9wdGlvbkRpZmZlcmVuY2VzKSB7CiAv
LyBPcHRpb25zIG92ZXJyaWRlIHRoZSBsYW5ndWFnZSB0YWcuCiBzaG91bGRCZSh0ZXN0Q29sbGF0
b3IoSW50bC5Db2xsYXRvcignZW4tdS1rbi10cnVlJywge251bWVyaWM6IGZhbHNlfSksIFt7bG9j
YWxlOiAnZW4nLCBudW1lcmljOiBmYWxzZX1dKSwgdHJ1ZSk7CiBzaG91bGRCZSh0ZXN0Q29sbGF0
b3IoSW50bC5Db2xsYXRvcignZW4tdS1rbi1mYWxzZScsIHtudW1lcmljOiB0cnVlfSksIFt7bG9j
YWxlOiAnZW4nLCBudW1lcmljOiB0cnVlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3RDb2xsYXRv
cihJbnRsLkNvbGxhdG9yKCdlbi11LWtuLXRydWUnLCB7bnVtZXJpYzogdHJ1ZX0pLCBbe2xvY2Fs
ZTogJ2VuLXUta24nICsgZXhwbGljaXRUcnVlQmVmb3JlSUNVNjcoKSwgbnVtZXJpYzogdHJ1ZX1d
KSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4tdS1rbi10
cnVlJywge251bWVyaWM6IHRydWV9KSwgW3tsb2NhbGU6ICdlbi11LWtuJywgbnVtZXJpYzogdHJ1
ZX1dKSwgdHJ1ZSk7CiBzaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4tdS1r
bi1mYWxzZScsIHtudW1lcmljOiBmYWxzZX0pLCBbe2xvY2FsZTogJ2VuLXUta24tZmFsc2UnLCBu
dW1lcmljOiBmYWxzZX1dKSwgdHJ1ZSk7CiAKIC8vIE9wdGlvbnMgYW5kIGV4dGVuc2lvbiBrZXlz
IGFyZSBwcm9jZXNzZWQgY29ycmVjdGx5LgpAQCAtMTkyLDcgKzE4OCw3IEBAIGZ1bmN0aW9uIHRl
c3RDb2xsYXRvcihjb2xsYXRvciwgcG9zc2libGVPcHRpb25EaWZmZXJlbmNlcykgewogICAgIEpT
T04uc3RyaW5naWZ5KEludGwuQ29sbGF0b3Iuc3VwcG9ydGVkTG9jYWxlc09mKCdFbi1sYVRuLXVz
LXZhcmlBbnQtZk9PYmFyLTFhYmMtVS1rbi10UnVlLUEtYWEtYWFhLXgtUkVTRVJWRUQnKSksCiAg
ICAgJHZtLmljdVZlcnNpb24oKSA+PSA2NwogICAgICAgICA/ICdbImVuLUxhdG4tVVMtMWFiYy1m
b29iYXItdmFyaWFudC1hLWFhLWFhYS11LWtuLXgtcmVzZXJ2ZWQiXScKLSAgICAgICAgOiAnWyJl
bi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1hYWEtdS1rbi10cnVlLXgtcmVzZXJ2
ZWQiXScKKyAgICAgICAgOiAnWyJlbi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1h
YWEtdS1rbi14LXJlc2VydmVkIl0nCiApOwogLy8gVGhyb3dzIG9uIHByb2JsZW1zIHdpdGggbGVu
Z3RoLCBnZXQsIG9yIHRvU3RyaW5nLgogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5Db2xsYXRvci5z
dXBwb3J0ZWRMb2NhbGVzT2YoT2JqZWN0LmNyZWF0ZShudWxsLCB7IGxlbmd0aDogeyBnZXQoKSB7
IHRocm93IEVycm9yKCkgfSB9IH0pKSwgRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW50bC1kYXRldGltZWZvcm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVm
b3JtYXQuanMKaW5kZXggYmMxNGUxOTk4MTg4YWViNDE1MTBkZWRkYTk1ZGFlMTNjNTZiYzNhZS4u
MDYxZjc5NzcyMDI2MTk4OWE2MDlkZTBhOWQ3ZTJhYWUyMTZiNWE0MSAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9zdHJlc3MvaW50bC1kYXRldGltZWZvcm1hdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLWRhdGV0aW1lZm9ybWF0LmpzCkBAIC04NCw3ICs4NCw3IEBAIGZ1bmN0aW9uIHNob3VsZFRo
cm93KGZ1bmMsIGVycm9yVHlwZSkgewogICAgIEpTT04uc3RyaW5naWZ5KEludGwuRGF0ZVRpbWVG
b3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdFbi1sYVRuLXVzLXZhcmlBbnQtZk9PYmFyLTFhYmMt
VS1rbi10UnVlLUEtYWEtYWFhLXgtUkVTRVJWRUQnKSksCiAgICAgJHZtLmljdVZlcnNpb24oKSA+
PSA2NwogICAgICAgICA/ICdbImVuLUxhdG4tVVMtMWFiYy1mb29iYXItdmFyaWFudC1hLWFhLWFh
YS11LWtuLXgtcmVzZXJ2ZWQiXScKLSAgICAgICAgOiAnWyJlbi1MYXRuLVVTLXZhcmlhbnQtZm9v
YmFyLTFhYmMtYS1hYS1hYWEtdS1rbi10cnVlLXgtcmVzZXJ2ZWQiXScKKyAgICAgICAgOiAnWyJl
bi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkIl0n
CiApOwogLy8gVGhyb3dzIG9uIHByb2JsZW1zIHdpdGggbGVuZ3RoLCBnZXQsIG9yIHRvU3RyaW5n
Lgogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVz
T2YoT2JqZWN0LmNyZWF0ZShudWxsLCB7IGxlbmd0aDogeyBnZXQoKSB7IHRocm93IG5ldyBFcnJv
cigpOyB9IH0gfSkpLCBFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxv
Y2FsZS5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbG9jYWxlLmpzCmluZGV4IDA0ZTUyNTk3OWZk
YzBjNDg0NGQxMzMwYmU2ZDU0ZDNkMzVjMGM1MWQuLmRlZjEwOGM0MDg0NTc1Yjk0MmRiMTQ2MjM2
NGVkYjQzZDZiYWRkOTAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbG9jYWxlLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbG9jYWxlLmpzCkBAIC0xNTAsNyArMTUwLDcgQEAg
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CiAgICAgbmV3IEludGwuTG9j
YWxlKCdFbi1sYVRuLXVzLXZhcmlBbnQtZk9PYmFyLTFhYmMtVS1rbi10UnVlLUEtYWEtYWFhLXgt
UkVTRVJWRUQnKS50b1N0cmluZygpLAogICAgICR2bS5pY3VWZXJzaW9uKCkgPj0gNjcKICAgICAg
ICAgPyAnZW4tTGF0bi1VUy0xYWJjLWZvb2Jhci12YXJpYW50LWEtYWEtYWFhLXUta24teC1yZXNl
cnZlZCcKLSAgICAgICAgOiAnZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFh
LXUta24tdHJ1ZS14LXJlc2VydmVkJworICAgICAgICA6ICdlbi1MYXRuLVVTLXZhcmlhbnQtZm9v
YmFyLTFhYmMtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkJwogKTsKIHNob3VsZEJlKG5ldyBJbnRs
LkxvY2FsZSgnY2VsLWdhdWxpc2gnLCB7IHNjcmlwdDogJ0FyYWInLCBudW1iZXJpbmdTeXN0ZW06
ICdndWpyJyB9KS50b1N0cmluZygpLCAneHRnLUFyYWItdS1udS1ndWpyLXgtY2VsLWdhdWxpc2gn
KTsKIHNob3VsZEJlKG5ldyBJbnRsLkxvY2FsZSgnZW4tTGF0bi1VUy11LWNhLWdyZWdvcnktY28t
cGhvbmViay1oYy1oMTIta2YtdXBwZXIta24tZmFsc2UtbnUtbGF0bicpLnRvU3RyaW5nKCksICdl
bi1MYXRuLVVTLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgxMi1rZi11cHBlci1rbi1mYWxz
ZS1udS1sYXRuJyk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1h
dC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4IGZhY2FkY2Ew
ZTMxNTRlNmVlYWZiMjMxMmVkYWZiOTkzYmUzYmY2MTkuLjU2YzU3NzQxNzY0NWY0Y2JiYjhkMTE2
Y2QxNWMyMzY3NGVlZDA5ZjkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVy
Zm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzCkBAIC0y
MjUsNyArMjI1LDcgQEAgZnVuY3Rpb24gdGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBv
c3NpYmxlRGlmZmVyZW5jZXMpIHsKICAgICBKU09OLnN0cmluZ2lmeShJbnRsLk51bWJlckZvcm1h
dC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ0VuLWxhVG4tdXMtdmFyaUFudC1mT09iYXItMWFiYy1VLWtu
LXRSdWUtQS1hYS1hYWEteC1SRVNFUlZFRCcpKSwKICAgICAkdm0uaWN1VmVyc2lvbigpID49IDY3
CiAgICAgICAgID8gJ1siZW4tTGF0bi1VUy0xYWJjLWZvb2Jhci12YXJpYW50LWEtYWEtYWFhLXUt
a24teC1yZXNlcnZlZCJdJwotICAgICAgICA6ICdbImVuLUxhdG4tVVMtdmFyaWFudC1mb29iYXIt
MWFiYy1hLWFhLWFhYS11LWtuLXRydWUteC1yZXNlcnZlZCJdJworICAgICAgICA6ICdbImVuLUxh
dG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtuLXgtcmVzZXJ2ZWQiXScKICk7
CiAvLyBUaHJvd3Mgb24gcHJvYmxlbXMgd2l0aCBsZW5ndGgsIGdldCwgb3IgdG9TdHJpbmcuCiBz
aG91bGRUaHJvdygoKSA9PiBJbnRsLk51bWJlckZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoT2Jq
ZWN0LmNyZWF0ZShudWxsLCB7IGxlbmd0aDogeyBnZXQoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9
IH0gfSkpLCBFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW9iamVjdC5q
cyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtb2JqZWN0LmpzCmluZGV4IDQwY2ZmNjYxMmQxNGJiYTU4
ZWUxYTlhYTc5ZTA4ZWVlZmViYWRlMGQuLjAzOTBmOGM3MzhmOGUxOGExY2Y1ZTYyZTBiYzgyN2U5
ZDQ0M2ZiMGEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtb2JqZWN0LmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL2ludGwtb2JqZWN0LmpzCkBAIC03Miw3ICs3Miw3IEBAIGZ1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewogICAgIEpTT04uc3RyaW5naWZ5KEludGwu
Z2V0Q2Fub25pY2FsTG9jYWxlcygnRW4tbGFUbi11cy12YXJpQW50LWZPT2Jhci0xYWJjLVUta24t
dFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLAogICAgICR2bS5pY3VWZXJzaW9uKCkgPj0gNjcK
ICAgICAgICAgPyAnWyJlbi1MYXRuLVVTLTFhYmMtZm9vYmFyLXZhcmlhbnQtYS1hYS1hYWEtdS1r
bi14LXJlc2VydmVkIl0nCi0gICAgICAgIDogJ1siZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0x
YWJjLWEtYWEtYWFhLXUta24tdHJ1ZS14LXJlc2VydmVkIl0nCisgICAgICAgIDogJ1siZW4tTGF0
bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24teC1yZXNlcnZlZCJdJwogKTsK
IC8vIFRocm93cyBvbiBwcm9ibGVtcyB3aXRoIGxlbmd0aCwgZ2V0LCBvciB0b1N0cmluZy4KIHNo
b3VsZFRocm93KCgpID0+IEludGwuZ2V0Q2Fub25pY2FsTG9jYWxlcyhPYmplY3QuY3JlYXRlKG51
bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSksIEVycm9y
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCmluZGV4IGExMzZkNDZmNDFhZDQyN2U1ZGRi
YzFhYWE2NDRhMTFmNTEyNTQzYmMuLmE0MzhlYWNlMWQ2NjQ3YTA5ZDQxNjU2MjY3MTIxY2NkNDg1
MDVlMDcgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcwpAQCAtODMsNyArODMsNyBAQCBm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKICAgICBKU09OLnN0cmluZ2lm
eShJbnRsLlBsdXJhbFJ1bGVzLnN1cHBvcnRlZExvY2FsZXNPZignRW4tbGFUbi11cy12YXJpQW50
LWZPT2Jhci0xYWJjLVUta24tdFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLAogICAgICR2bS5p
Y3VWZXJzaW9uKCkgPj0gNjcKICAgICAgICAgPyAnWyJlbi1MYXRuLVVTLTFhYmMtZm9vYmFyLXZh
cmlhbnQtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkIl0nCi0gICAgICAgIDogJ1siZW4tTGF0bi1V
Uy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24tdHJ1ZS14LXJlc2VydmVkIl0nCisg
ICAgICAgIDogJ1siZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24t
eC1yZXNlcnZlZCJdJwogKTsKIC8vIFRocm93cyBvbiBwcm9ibGVtcyB3aXRoIGxlbmd0aCwgZ2V0
LCBvciB0b1N0cmluZy4KIHNob3VsZFRocm93KCgpID0+IEludGwuUGx1cmFsUnVsZXMuc3VwcG9y
dGVkTG9jYWxlc09mKE9iamVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6IHsgZ2V0KCkgeyB0aHJv
dyBuZXcgRXJyb3IoKTsgfSB9IH0pKSwgRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLXJlbGF0
aXZldGltZWZvcm1hdC5qcwppbmRleCA0NTAyODJmYjkxMzNiYzc0MzNiZWNkNmYxMmYxNjdlY2Q2
ZTIzMmE4Li44YzE0MzQ2ZDBiZjczYjgwNjYzNzE1ZGU1ODU2MjM4YjllNTA3MzEyIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdC5qcworKysgYi9KU1Rl
c3RzL3N0cmVzcy9pbnRsLXJlbGF0aXZldGltZWZvcm1hdC5qcwpAQCAtNjcsNyArNjcsNyBAQCBm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKICAgICBKU09OLnN0cmluZ2lm
eShJbnRsLlJlbGF0aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ0VuLWxhVG4tdXMt
dmFyaUFudC1mT09iYXItMWFiYy1VLWtuLXRSdWUtQS1hYS1hYWEteC1SRVNFUlZFRCcpKSwKICAg
ICAkdm0uaWN1VmVyc2lvbigpID49IDY3CiAgICAgICAgID8gJ1siZW4tTGF0bi1VUy0xYWJjLWZv
b2Jhci12YXJpYW50LWEtYWEtYWFhLXUta24teC1yZXNlcnZlZCJdJwotICAgICAgICA6ICdbImVu
LUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtuLXRydWUteC1yZXNlcnZl
ZCJdJworICAgICAgICA6ICdbImVuLUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFh
YS11LWtuLXgtcmVzZXJ2ZWQiXScKICk7CiAKIHNob3VsZFRocm93KCgpID0+IEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignbm8tYm9rJyksIFJhbmdlRXJyb3IpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sIGIvSlNUZXN0cy90
ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCmluZGV4IDQxOTVkNmNjN2I4MTUwZWIyYTlkZTk1Yjc2
YzY1NjJjZTE0ZGQ5ODQuLmI0N2I1YTIzNTE3ZjlkYzdkNzAwYTAyNDZkMzUyOWQ2YTBhYmZlMWMg
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAorKysgYi9KU1Rl
c3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKQEAgLTE0MjgsOSArMTQyOCw2IEBAIHRlc3Qv
YnVpbHQtaW5zL1R5cGVkQXJyYXlDb25zdHJ1Y3RvcnMvb2YvY3VzdG9tLWN0b3IuanM6CiB0ZXN0
L2J1aWx0LWlucy9UeXBlZEFycmF5Q29uc3RydWN0b3JzL29mL25ldy1pbnN0YW5jZS11c2luZy1j
dXN0b20tY3Rvci5qczoKICAgZGVmYXVsdDogJ1R5cGVFcnJvcjogVHlwZWRBcnJheS5vZiByZXF1
aXJlcyBpdHMgdGhpcyBhcmd1bWVudCB0byBzdWJjbGFzcyBhIFR5cGVkQXJyYXkgY29uc3RydWN0
b3IgKFRlc3Rpbmcgd2l0aCBGbG9hdDY0QXJyYXkuKScKICAgc3RyaWN0IG1vZGU6ICdUeXBlRXJy
b3I6IFR5cGVkQXJyYXkub2YgcmVxdWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8gc3ViY2xhc3Mg
YSBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIChUZXN0aW5nIHdpdGggRmxvYXQ2NEFycmF5LiknCi10
ZXN0L2ludGw0MDIvQ29sbGF0b3IvbWlzc2luZy11bmljb2RlLWV4dC12YWx1ZS1kZWZhdWx0cy10
by10cnVlLmpzOgotICBkZWZhdWx0OiAiVGVzdDI2MkVycm9yOiBcImtuLXRydWVcIiBpcyByZXR1
cm5lZCBpbiBsb2NhbGUsIGJ1dCBzaG91bGRuJ3QgYmUuIEV4cGVjdGVkIFNhbWVWYWx1ZSjCqzfC
uywgwqstMcK7KSB0byBiZSB0cnVlIgotICBzdHJpY3QgbW9kZTogIlRlc3QyNjJFcnJvcjogXCJr
bi10cnVlXCIgaXMgcmV0dXJuZWQgaW4gbG9jYWxlLCBidXQgc2hvdWxkbid0IGJlLiBFeHBlY3Rl
ZCBTYW1lVmFsdWUowqs3wrssIMKrLTHCuykgdG8gYmUgdHJ1ZSIKIHRlc3QvaW50bDQwMi9EYXRl
VGltZUZvcm1hdC9wcm90b3R5cGUvZm9ybWF0L3RpbWVkYXRlc3R5bGUtZW4uanM6CiAgIGRlZmF1
bHQ6ICdUZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZnVsbCB3aXRoIHt9IEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzE0OjEyOjQ3IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrMTQ6MTI6
NDcgQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1v
ZGU6ICdUZXN0MjYyRXJyb3I6IFJlc3VsdCBmb3IgZnVsbCB3aXRoIHt9IEV4cGVjdGVkIFNhbWVW
YWx1ZSjCqzE0OjEyOjQ3IFBNIENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrssIMKrMTQ6MTI6
NDcgQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuykgdG8gYmUgdHJ1ZScKQEAgLTE0NzMsOSAr
MTQ3MCw2IEBAIHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2FsZXMvdW5pY29kZS1l
eHQtY2Fub25pY2FsaXplLXJlZ2lvbi5qczoKIHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNh
bExvY2FsZXMvdW5pY29kZS1leHQtY2Fub25pY2FsaXplLXN1YmRpdmlzaW9uLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmQtTk8tdS1zZC1ubzIz
wrssIMKrdW5kLU5PLXUtc2Qtbm81MMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kLU5PLXUtc2Qtbm8yM8K7LCDCq3Vu
ZC1OTy11LXNkLW5vNTDCuykgdG8gYmUgdHJ1ZScKLXRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9u
aWNhbExvY2FsZXMvdW5pY29kZS1leHQtY2Fub25pY2FsaXplLXllcy10by10cnVlLmpzOgotICBk
ZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmQtdS1rYi10cnVl
wrssIMKrdW5kLXUta2LCuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZC11LWtiLXRydWXCuywgwqt1bmQtdS1rYsK7KSB0
byBiZSB0cnVlJwogdGVzdC9pbnRsNDAyL0ludGwvZ2V0Q2Fub25pY2FsTG9jYWxlcy91bmljb2Rl
LWV4dC1rZXktd2l0aC1kaWdpdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrZW4tdS0wYy15ZXPCuywgwqtlbi11LTBjwrspIHRvIGJlIHRydWUnCiAg
IHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LTBj
LXllc8K7LCDCq2VuLXUtMGPCuykgdG8gYmUgdHJ1ZScKQEAgLTE0ODUsMjEgKzE0NzksMTIgQEAg
dGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1hcHBseS1vcHRpb25zLWNhbm9uaWNhbGl6
ZXMtdHdpY2UuanM6CiB0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLW5vbi1pYW5hLWNh
bm9uLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoIm1vIiku
bWF4aW1pemUoKS50b1N0cmluZygpIHJldHVybnMgInJvLUxhdG4tUk8iIEV4cGVjdGVkIFNhbWVW
YWx1ZSjCq3JvwrssIMKrcm8tTGF0bi1ST8K7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTog
J1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJtbyIpLm1heGltaXplKCkudG9TdHJpbmco
KSByZXR1cm5zICJyby1MYXRuLVJPIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtyb8K7LCDCq3JvLUxh
dG4tUk/CuykgdG8gYmUgdHJ1ZScKLXRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0
aW9ucy1udW1lcmljLXVuZGVmaW5lZC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3
IEludGwuTG9jYWxlKCJlbi11LWtuLXRydWUiLCB7bnVtZXJpYzogdW5kZWZpbmVkfSkudG9TdHJp
bmcoKSByZXR1cm5zICJlbi11LWtuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRydWXC
uywgwqtlbi11LWtuwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBuZXcgSW50bC5Mb2NhbGUoImVuLXUta24tdHJ1ZSIsIHtudW1lcmljOiB1bmRlZmluZWR9KS50
b1N0cmluZygpIHJldHVybnMgImVuLXUta24iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24t
dHJ1ZcK7LCDCq2VuLXUta27CuykgdG8gYmUgdHJ1ZScKLXRlc3QvaW50bDQwMi9Mb2NhbGUvY29u
c3RydWN0b3Itb3B0aW9ucy1udW1lcmljLXZhbGlkLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBuZXcgSW50bC5Mb2NhbGUoImVuIiwge251bWVyaWM6IHRydWV9KS50b1N0cmluZygpIHJl
dHVybnMgInRydWUiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUt
a27CuykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRs
LkxvY2FsZSgiZW4iLCB7bnVtZXJpYzogdHJ1ZX0pLnRvU3RyaW5nKCkgcmV0dXJucyAidHJ1ZSIg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS1rbi10cnVlwrssIMKrZW4tdS1rbsK7KSB0byBiZSB0
cnVlJwogdGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1vcHRpb25zLXJlZ2lvbi12YWxp
ZC5qczoKICAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCdlbicsIHty
ZWdpb246IFwiNTU0XCJ9KS50b1N0cmluZygpIHJldHVybnMgXCJlbi1OWlwiIEV4cGVjdGVkIFNh
bWVWYWx1ZSjCq2VuLTU1NMK7LCDCq2VuLU5awrspIHRvIGJlIHRydWUiCiAgIHN0cmljdCBtb2Rl
OiAiVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywge3JlZ2lvbjogXCI1NTRcIn0p
LnRvU3RyaW5nKCkgcmV0dXJucyBcImVuLU5aXCIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tNTU0
wrssIMKrZW4tTlrCuykgdG8gYmUgdHJ1ZSIKIHRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0
b3ItdGFnLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoInNs
LVJPWkFKLUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJldHVybnMgInNsLTE5OTQtYmlza2Utcm96
YWoiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFqLWJpc2tlLTE5OTTCuywgwqtzbC0xOTk0
LWJpc2tlLXJvemFqwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBuZXcgSW50bC5Mb2NhbGUoInNsLVJPWkFKLUJJU0tFLTE5OTQiKS50b1N0cmluZygpIHJldHVy
bnMgInNsLTE5OTQtYmlza2Utcm96YWoiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3NsLXJvemFqLWJp
c2tlLTE5OTTCuywgwqtzbC0xOTk0LWJpc2tlLXJvemFqwrspIHRvIGJlIHRydWUnCi10ZXN0L2lu
dGw0MDIvTG9jYWxlL2dldHRlcnMuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIz
LWtmLXRydWUta24tZmFsc2UtbnUtbGF0bsK7LCDCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNv
LXBob25lYmstaGMtaDIzLWtmLWtuLWZhbHNlLW51LWxhdG7CuykgdG8gYmUgdHJ1ZScKLSAgc3Ry
aWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2RlLUxhdG4tREUt
dS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLXRydWUta24tZmFsc2UtbnUtbGF0bsK7
LCDCq2RlLUxhdG4tREUtdS1jYS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDIzLWtmLWtuLWZhbHNl
LW51LWxhdG7CuykgdG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9Mb2NhbGUvbGlrZWx5LXN1YnRh
Z3MtZ3JhbmRmYXRoZXJlZC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrY21uwrssIMKremjCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2NtbsK7LCDCq3powrspIHRvIGJlIHRy
dWUnCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408582</attachid>
            <date>2020-09-11 20:18:53 -0700</date>
            <delta_ts>2020-09-11 22:54:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216224-20200911201853.patch</filename>
            <type>text/plain</type>
            <size>39335</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZmZlYjA0YWYwMTFhZGQ2ODBjMWI3MDQ1ZGQwYzMwZTYwOGNjNWQ0Li43OGQ4M2FhZDI5ZTI5MWE2
Yjc2M2I4ZTEwMGIwNDU5ZWNlMWM3Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24g
dHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1IGRlZmluZXMgdGhhdCB1bmlj
b2RlIGV4dGVuc2lvbiB0eXBlJ3MgInRydWUiIHNob3VsZCBiZSBjb252ZXJnZWQgdG8gIiIuCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSBleHRyYWN0aW5nIHVuaWNvZGUgZXh0
ZW5zaW9uIHN1YnRhZ3MgYW5kIHJlcGxhY2luZyAidHJ1ZSIgdG8gIiIuCisKKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAgICAoSlNDOjpMb2NhbGVJREJ1aWxkZXI6OnRv
Q2Fub25pY2FsKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6a2V5d29yZFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y2FsZW5kYXIpOgorICAgICAgICAoSlNDOjpJ
bnRsTG9jYWxlOjpjYXNlRmlyc3QpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpjb2xsYXRp
b24pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpob3VyQ3ljbGUpOgorICAgICAgICAoSlND
OjpJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW0pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
OjpudW1lcmljKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQ2FzZUZpcnN0KToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNvbGxhdGlvbik6CisgICAgICAgIChKU0M6OkludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJI
b3VyQ3ljbGUpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVy
aW5nU3lzdGVtKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjp1bmljb2RlRXh0ZW5zaW9uU3ViVGFncyk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6
ZVVuaWNvZGVFeHRlbnNpb25zQWZ0ZXJJQ1VMb2NhbGVDYW5vbmljYWxpemF0aW9uKToKKyAgICAg
ICAgKEpTQzo6bGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRCk6CisgICAgICAgIChKU0M6OnJlc29sdmVM
b2NhbGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVR3b0NoYXJhY3Rl
cnMxNkNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUpOiBEZWxldGVkLgorCiAyMDIwLTA5
LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsIHNob3VsZCBoYXZlIHByb3BlciBleGNlcHRp
b24gY2hlY2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggODMxZWRlODAwN2Y5ZDYyYTU0YzM4MWU0Y2U4MWQxYjM1MDI4OTM4
NC4uMDllZjc4ZWQzOGU0ZWE5ZDRjYmY0MTg0YTRiYjM4MDQwYmQ4ZTNlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24gdHlw
ZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OmNoYXJhY3RlckF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6b3BlcmF0b3Jb
XSBjb25zdCk6CisKIDIwMjAtMDktMTEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIE1pZ3JhdGUgQ29yZVRleHQtc3BlY2lmaWMgY29k
ZSBmcm9tICoqKkNvY29hLm1tIHRvICoqKkNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCA0YWEyYTUwYmFmNjVmYTg5MTg5YTcw
MDkzMzQ0MmQ3NzNjODY3MzRjLi5lYmU3ODkxNDdkN2MwNTg2MDE3ZTQ3MDU5ZWMzZWZjZWNiODM0
ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApA
QCAtOTEsMTEgKzkxLDEyIEBAIENTdHJpbmcgTG9jYWxlSURCdWlsZGVyOjp0b0Nhbm9uaWNhbCgp
CiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyLnNpemUoKSk7CiAKLSAgICBWZWN0b3I8Y2hhciwgMzI+
IHJlc3VsdDsKLSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
bG9jX2Nhbm9uaWNhbGl6ZSwgbV9idWZmZXIuZGF0YSgpLCByZXN1bHQpOworICAgIFZlY3Rvcjxj
aGFyLCAzMj4gYnVmZmVyOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVsb2NfY2Fub25pY2FsaXplLCBtX2J1ZmZlci5kYXRhKCksIGJ1ZmZlcik7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogCisgICAg
YXV0byByZXN1bHQgPSBjYW5vbmljYWxpemVVbmljb2RlRXh0ZW5zaW9uc0FmdGVySUNVTG9jYWxl
Q2Fub25pY2FsaXphdGlvbihXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIHJldHVybiBDU3RyaW5nKHJl
c3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOwogfQogCkBAIC0xODksOSArMTkwLDE1IEBAIFN0
cmluZyBJbnRsTG9jYWxlOjprZXl3b3JkVmFsdWUoQVNDSUlMaXRlcmFsIGtleSwgYm9vbCBpc0Jv
b2xlYW4pIGNvbnN0CiAgICAgICAgIHVsb2NfZ2V0S2V5d29yZFZhbHVlKG1fbG9jYWxlSUQuZGF0
YSgpLCBrZXkuY2hhcmFjdGVycygpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGggKyAxLCAm
c3RhdHVzKTsKICAgICB9CiAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgIGNv
bnN0IGNoYXIqIHZhbHVlID0gIWlzQm9vbGVhbiA/IHVsb2NfdG9Vbmljb2RlTG9jYWxlVHlwZShr
ZXkuY2hhcmFjdGVycygpLCBidWZmZXIuZGF0YSgpKSA6IGJ1ZmZlci5kYXRhKCk7Ci0gICAgcmV0
dXJuIHZhbHVlID8gU3RyaW5nKHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgaWYgKGlzQm9v
bGVhbikKKyAgICAgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKKyAgICBjb25zdCBj
aGFyKiB2YWx1ZSA9IHVsb2NfdG9Vbmljb2RlTG9jYWxlVHlwZShrZXkuY2hhcmFjdGVycygpLCBi
dWZmZXIuZGF0YSgpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbFN0cmlu
ZygpOworICAgIFN0cmluZyByZXN1bHQodmFsdWUpOworICAgIGlmIChyZXN1bHQgPT0gInRydWUi
X3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUKQEAgLTQwNCw0
MSArNDExLDQxIEBAIGNvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6cmVnaW9uKCkKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyCiBj
b25zdCBTdHJpbmcmIEludGxMb2NhbGU6OmNhbGVuZGFyKCkKIHsKLSAgICBpZiAobV9jYWxlbmRh
ci5pc051bGwoKSkKKyAgICBpZiAoIW1fY2FsZW5kYXIpCiAgICAgICAgIG1fY2FsZW5kYXIgPSBr
ZXl3b3JkVmFsdWUoImNhbGVuZGFyIl9zKTsKLSAgICByZXR1cm4gbV9jYWxlbmRhcjsKKyAgICBy
ZXR1cm4gbV9jYWxlbmRhci52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKIGNvbnN0IFN0cmluZyYgSW50
bExvY2FsZTo6Y2FzZUZpcnN0KCkKIHsKLSAgICBpZiAobV9jYXNlRmlyc3QuaXNOdWxsKCkpCisg
ICAgaWYgKCFtX2Nhc2VGaXJzdCkKICAgICAgICAgbV9jYXNlRmlyc3QgPSBrZXl3b3JkVmFsdWUo
ImNvbGNhc2VmaXJzdCJfcyk7Ci0gICAgcmV0dXJuIG1fY2FzZUZpcnN0OworICAgIHJldHVybiBt
X2Nhc2VGaXJzdC52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24KIGNvbnN0IFN0cmluZyYgSW50bExvY2Fs
ZTo6Y29sbGF0aW9uKCkKIHsKLSAgICBpZiAobV9jb2xsYXRpb24uaXNOdWxsKCkpCisgICAgaWYg
KCFtX2NvbGxhdGlvbikKICAgICAgICAgbV9jb2xsYXRpb24gPSBrZXl3b3JkVmFsdWUoImNvbGxh
dGlvbiJfcyk7Ci0gICAgcmV0dXJuIG1fY29sbGF0aW9uOworICAgIHJldHVybiBtX2NvbGxhdGlv
bi52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9j
YWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUKIGNvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6aG91ckN5
Y2xlKCkKIHsKLSAgICBpZiAobV9ob3VyQ3ljbGUuaXNOdWxsKCkpCisgICAgaWYgKCFtX2hvdXJD
eWNsZSkKICAgICAgICAgbV9ob3VyQ3ljbGUgPSBrZXl3b3JkVmFsdWUoImhvdXJzIl9zKTsKLSAg
ICByZXR1cm4gbV9ob3VyQ3ljbGU7CisgICAgcmV0dXJuIG1faG91ckN5Y2xlLnZhbHVlKCk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBl
Lm51bWJlcmluZ1N5c3RlbQogY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0
ZW0oKQogewotICAgIGlmIChtX251bWJlcmluZ1N5c3RlbS5pc051bGwoKSkKKyAgICBpZiAoIW1f
bnVtYmVyaW5nU3lzdGVtKQogICAgICAgICBtX251bWJlcmluZ1N5c3RlbSA9IGtleXdvcmRWYWx1
ZSgibnVtYmVycyJfcyk7Ci0gICAgcmV0dXJuIG1fbnVtYmVyaW5nU3lzdGVtOworICAgIHJldHVy
biBtX251bWJlcmluZ1N5c3RlbS52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljCkBAIC00NDYsNyArNDUzLDcg
QEAgVHJpU3RhdGUgSW50bExvY2FsZTo6bnVtZXJpYygpCiB7CiAgICAgY29uc3RleHByIGJvb2wg
aXNCb29sZWFuID0gdHJ1ZTsKICAgICBpZiAobV9udW1lcmljID09IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKQotICAgICAgICBtX251bWVyaWMgPSB0cmlTdGF0ZShrZXl3b3JkVmFsdWUoImNvbG51
bWVyaWMiX3MsIGlzQm9vbGVhbikgPT0gInllcyIpOworICAgICAgICBtX251bWVyaWMgPSB0cmlT
dGF0ZShrZXl3b3JkVmFsdWUoImNvbG51bWVyaWMiX3MsIGlzQm9vbGVhbikgPT0gInllcyJfcyk7
CiAgICAgcmV0dXJuIG1fbnVtZXJpYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5oCmluZGV4IGZmNTBlN2Y3NmE1MGE5YTNmMjc3OTYxNmQwYTkyYjU3NzRi
ZjE1YzQuLjFjNWRkMGEzODc3MWUwZTUyMjExM2U0ZGI4NDUwOTc5ODZiMjc3N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKQEAgLTYwLDYgKzYwLDcgQEAg
Y2xhc3MgSW50bExvY2FsZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKICAg
ICBjb25zdCBTdHJpbmcmIHJlZ2lvbigpOworCiAgICAgY29uc3QgU3RyaW5nJiBjYWxlbmRhcigp
OwogICAgIGNvbnN0IFN0cmluZyYgY2FzZUZpcnN0KCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb2xs
YXRpb24oKTsKQEAgLTgzLDExICs4NCwxMSBAQCBjbGFzcyBJbnRsTG9jYWxlIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFN0cmluZyBtX2xhbmd1YWdlOwogICAgIFN0cmlu
ZyBtX3NjcmlwdDsKICAgICBTdHJpbmcgbV9yZWdpb247Ci0gICAgU3RyaW5nIG1fY2FsZW5kYXI7
Ci0gICAgU3RyaW5nIG1fY2FzZUZpcnN0OwotICAgIFN0cmluZyBtX2NvbGxhdGlvbjsKLSAgICBT
dHJpbmcgbV9ob3VyQ3ljbGU7Ci0gICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVtOworICAgIE9w
dGlvbmFsPFN0cmluZz4gbV9jYWxlbmRhcjsKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1fY2FzZUZp
cnN0OworICAgIE9wdGlvbmFsPFN0cmluZz4gbV9jb2xsYXRpb247CisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBtX2hvdXJDeWNsZTsKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1fbnVtYmVyaW5nU3lzdGVt
OwogICAgIFRyaVN0YXRlIG1fbnVtZXJpYyB7IFRyaVN0YXRlOjpJbmRldGVybWluYXRlIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQ
cm90b3R5cGUuY3BwCmluZGV4IDRhOGI4NDM5OGViMDg1YjE2NjA0ZmU0MTQ5YmUxNTY4ODZkZDc5
OGQuLmQ5MTFkMWVmODg1MjVhNjI1ZWFhMDhkYjQ1YzViNmM4YjRkNjJhZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3Bw
CkBAIC0xNjYsNyArMTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIoSlNHbG9iYWxPYmplY3QqIGcKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnBy
b3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjYWxlbmRhciA9
IGxvY2FsZS0+Y2FsZW5kYXIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjYWxlbmRhci5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmco
dm0sIGNhbGVuZGFyKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoY2FsZW5kYXIuaXNO
dWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhbGVuZGFyKSk7CiB9CiAKIC8v
IGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VG
aXJzdApAQCAtMTgwLDcgKzE4MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50
bExvY2FsZVByb3RvdHlwZUdldHRlckNhc2VGaXJzdChKU0dsb2JhbE9iamVjdCoKICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxl
LnByb3RvdHlwZS5jYXNlRmlyc3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0
IGluaXRpYWxpemVkIGFzIGEgTG9jYWxlIl9zKTsKIAogICAgIGNvbnN0IFN0cmluZyYgY2FzZUZp
cnN0ID0gbG9jYWxlLT5jYXNlRmlyc3QoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IEpTVmFsdWU6OmVuY29kZShjYXNlRmlyc3QuaXNFbXB0eSgpID8ganNVbmRlZmluZWQoKSA6IGpz
U3RyaW5nKHZtLCBjYXNlRmlyc3QpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShjYXNl
Rmlyc3QuaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhc2VGaXJzdCkp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3Rv
dHlwZS5jb2xsYXRpb24KQEAgLTE5NCw3ICsxOTQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJDb2xsYXRpb24oSlNHbG9iYWxPYmplY3Qq
CiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJ
bnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0aW9uIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGFuIG9iamVjdCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKICAgICBjb25zdCBTdHJp
bmcmIGNvbGxhdGlvbiA9IGxvY2FsZS0+Y29sbGF0aW9uKCk7Ci0gICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0aW9uLmlzRW1wdHkoKSA/IGpzVW5kZWZp
bmVkKCkgOiBqc1N0cmluZyh2bSwgY29sbGF0aW9uKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoY29sbGF0aW9uLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBj
b2xsYXRpb24pKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxv
Y2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCkBAIC0yMDgsNyArMjA4LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlKEpTR2xv
YmFsT2JqZWN0KgogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCiAgICAg
Y29uc3QgU3RyaW5nJiBob3VyQ3ljbGUgPSBsb2NhbGUtPmhvdXJDeWNsZSgpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGhvdXJDeWNsZS5pc0VtcHR5KCkg
PyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGhvdXJDeWNsZSkpKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGhvdXJDeWNsZS5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0
cmluZyh2bSwgaG91ckN5Y2xlKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNz
ZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWVyaWMKQEAgLTIzNSw3ICsyMzUsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJOdW1iZXJp
bmdTeXN0ZW0oSlNHbG9iYWxPYgogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLm51bWJlcmluZ1N5c3RlbSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2Nh
bGUiX3MpOwogCiAgICAgY29uc3QgU3RyaW5nJiBudW1iZXJpbmdTeXN0ZW0gPSBsb2NhbGUtPm51
bWJlcmluZ1N5c3RlbSgpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKG51bWJlcmluZ1N5c3RlbS5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJp
bmcodm0sIG51bWJlcmluZ1N5c3RlbSkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG51
bWJlcmluZ1N5c3RlbS5pc051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgbnVt
YmVyaW5nU3lzdGVtKSk7CiB9CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50
bC5Mb2NhbGUucHJvdG90eXBlLmxhbmd1YWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDMwMWJkZDEzZWI2NzAzYTM5OGRkZTY0ZDRjNDM4NWE0
MTEwZTFmMDQuLjFjNmJkMmYxNzk0NzYwZGJiMjI3YmY0YzA0ODgxMGEwZGEyZmY0N2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xOTAsNiAr
MTkwLDQ3IEBAIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAgICAgcmV0dXJuIFN0cnVjdHVyZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwg
U3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCitzdGF0aWMgVmVjdG9yPFN0cmluZ1ZpZXc+
IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdzKFN0cmluZ1ZpZXcgZXh0ZW5zaW9uKQoreworICAgIC8v
IFVuaWNvZGVFeHRlbnNpb25TdWJ0YWdzIChleHRlbnNpb24pCisgICAgLy8gaHR0cHM6Ly90YzM5
LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtdW5pY29kZWV4dGVuc2lvbnN1YnRhZ3MKKworICAgIGF1
dG8gZXh0ZW5zaW9uTGVuZ3RoID0gZXh0ZW5zaW9uLmxlbmd0aCgpOworICAgIGlmIChleHRlbnNp
b25MZW5ndGggPCAzKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgVmVjdG9yPFN0cmluZ1Zp
ZXc+IHN1YnRhZ3M7CisgICAgc2l6ZV90IHN1YnRhZ1N0YXJ0ID0gMzsgLy8gU2tpcCBpbml0aWFs
IC11LS4KKyAgICBzaXplX3QgdmFsdWVTdGFydCA9IDM7CisgICAgYm9vbCBpc0xlYWRpbmcgPSB0
cnVlOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gc3VidGFnU3RhcnQ7IGluZGV4IDwgZXh0ZW5z
aW9uTGVuZ3RoOyArK2luZGV4KSB7CisgICAgICAgIGlmIChleHRlbnNpb25baW5kZXhdID09ICct
JykgeworICAgICAgICAgICAgaWYgKGluZGV4IC0gc3VidGFnU3RhcnQgPT0gMikgeworICAgICAg
ICAgICAgICAgIC8vIFRhZyBpcyBhIGtleSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVl
IGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgICAgICAgICBpZiAoc3VidGFnU3RhcnQgLSB2YWx1
ZVN0YXJ0ID4gMSkKKyAgICAgICAgICAgICAgICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9u
LnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgLSAxKSk7Cisg
ICAgICAgICAgICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyhzdWJ0YWdT
dGFydCwgaW5kZXggLSBzdWJ0YWdTdGFydCkpOworICAgICAgICAgICAgICAgIHZhbHVlU3RhcnQg
PSBpbmRleCArIDE7CisgICAgICAgICAgICAgICAgaXNMZWFkaW5nID0gZmFsc2U7CisgICAgICAg
ICAgICB9IGVsc2UgaWYgKGlzTGVhZGluZykgeworICAgICAgICAgICAgICAgIC8vIExlYWRpbmcg
c3VidGFncyBiZWZvcmUgZmlyc3Qga2V5LgorICAgICAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5k
KGV4dGVuc2lvbi5zdWJzdHJpbmcoc3VidGFnU3RhcnQsIGluZGV4IC0gc3VidGFnU3RhcnQpKTsK
KyAgICAgICAgICAgICAgICB2YWx1ZVN0YXJ0ID0gaW5kZXggKyAxOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgc3VidGFnU3RhcnQgPSBpbmRleCArIDE7CisgICAgICAgIH0KKyAgICB9Cisg
ICAgaWYgKGV4dGVuc2lvbkxlbmd0aCAtIHN1YnRhZ1N0YXJ0ID09IDIpIHsKKyAgICAgICAgLy8g
VHJhaWxpbmcgYW4gZXh0ZW5zaW9uIGtleSwgZmlyc3QgYXBwZW5kIHByaW9yIGtleSdzIHZhbHVl
IGlmIHRoZXJlIGlzIG9uZS4KKyAgICAgICAgaWYgKHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCA+
IDEpCisgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVl
U3RhcnQsIHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCAtIDEpKTsKKyAgICAgICAgdmFsdWVTdGFy
dCA9IHN1YnRhZ1N0YXJ0OworICAgIH0KKyAgICAvLyBBcHBlbmQgZmluYWwga2V5J3MgdmFsdWUu
CisgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBleHRl
bnNpb25MZW5ndGggLSB2YWx1ZVN0YXJ0KSk7CisgICAgcmV0dXJuIHN1YnRhZ3M7Cit9CisKIFZl
Y3RvcjxjaGFyLCAzMj4gbG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5n
JiB0YWcpCiB7CiAgICAgaWYgKCF0YWcubGVuZ3RoKCkpCkBAIC0yMTIsNiArMjUzLDcxIEBAIFZl
Y3RvcjxjaGFyLCAzMj4gbG9jYWxlSURCdWZmZXJGb3JMYW5ndWFnZVRhZyhjb25zdCBDU3RyaW5n
JiB0YWcpCiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorVmVjdG9yPGNoYXIsIDMyPiBjYW5vbmlj
YWxpemVVbmljb2RlRXh0ZW5zaW9uc0FmdGVySUNVTG9jYWxlQ2Fub25pY2FsaXphdGlvbihWZWN0
b3I8Y2hhciwgMzI+JiYgYnVmZmVyKQoreworICAgIFN0cmluZ1ZpZXcgbG9jYWxlKGJ1ZmZlci5k
YXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIEFTU0VSVChsb2NhbGUuaXM4Qml0KCkpOworICAg
IHNpemVfdCBleHRlbnNpb25JbmRleCA9IGxvY2FsZS5maW5kKCItdS0iKTsKKyAgICBpZiAoZXh0
ZW5zaW9uSW5kZXggPT0gbm90Rm91bmQpCisgICAgICAgIHJldHVybiBXVEZNb3ZlKGJ1ZmZlcik7
CisKKyAgICAvLyBTaW5jZSBJQ1UncyBjYW5vbmljYWxpemF0aW9uIGlzIGluY29tcGxldGUsIHdl
IG5lZWQgdG8gcGVyZm9ybSBzb21lIG9mIGNhbm9uaWNhbGl6YXRpb24gaGVyZS4KKyAgICBzaXpl
X3QgZXh0ZW5zaW9uTGVuZ3RoID0gbG9jYWxlLmxlbmd0aCgpIC0gZXh0ZW5zaW9uSW5kZXg7Cisg
ICAgc2l6ZV90IGVuZCA9IGV4dGVuc2lvbkluZGV4ICsgMzsKKyAgICB3aGlsZSAoZW5kIDwgbG9j
YWxlLmxlbmd0aCgpKSB7CisgICAgICAgIGVuZCA9IGxvY2FsZS5maW5kKCctJywgZW5kKTsKKyAg
ICAgICAgaWYgKGVuZCA9PSBub3RGb3VuZCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAv
LyBGb3VuZCBhbm90aGVyIHNpbmdsZXRvbi4KKyAgICAgICAgaWYgKGVuZCArIDIgPCBsb2NhbGUu
bGVuZ3RoKCkgJiYgbG9jYWxlW2VuZCArIDJdID09ICctJykgeworICAgICAgICAgICAgZXh0ZW5z
aW9uTGVuZ3RoID0gZW5kIC0gZXh0ZW5zaW9uSW5kZXg7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgICAgICBlbmQrKzsKKyAgICB9CisKKyAgICBWZWN0b3I8Y2hhciwgMzI+IHJl
c3VsdDsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlci5kYXRhKCksIGV4dGVuc2lvbkluZGV4ICsg
Mik7IC8vICItdSIgaXMgaW5jbHVkZWQuCisgICAgU3RyaW5nVmlldyBleHRlbnNpb24gPSBsb2Nh
bGUuc3Vic3RyaW5nKGV4dGVuc2lvbkluZGV4LCBleHRlbnNpb25MZW5ndGgpOworICAgIEFTU0VS
VChleHRlbnNpb24uaXM4Qml0KCkpOworICAgIGF1dG8gc3VidGFncyA9IHVuaWNvZGVFeHRlbnNp
b25TdWJUYWdzKGV4dGVuc2lvbik7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgc3VidGFncy5zaXplKCk7KSB7CisgICAgICAgIGF1dG8gc3VidGFnID0gc3VidGFnc1tpbmRl
eF07CisgICAgICAgIEFTU0VSVChzdWJ0YWcuaXM4Qml0KCkpOworICAgICAgICByZXN1bHQuYXBw
ZW5kKCctJyk7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoc3VidGFnLmNoYXJhY3RlcnM4KCksIHN1
YnRhZy5sZW5ndGgoKSk7CisKKyAgICAgICAgaWYgKHN1YnRhZy5sZW5ndGgoKSAhPSAyKSB7Cisg
ICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAg
ICAgICAgQVNTRVJUKHN1YnRhZy5sZW5ndGgoKSA9PSAyKTsKKworICAgICAgICAvLyBUaGlzIGlz
IHVuaWNvZGUgZXh0ZW5zaW9uIGtleS4KKyAgICAgICAgdW5zaWduZWQgdmFsdWVJbmRleFN0YXJ0
ID0gaW5kZXggKyAxOworICAgICAgICB1bnNpZ25lZCB2YWx1ZUluZGV4RW5kID0gdmFsdWVJbmRl
eFN0YXJ0OworICAgICAgICBmb3IgKDsgdmFsdWVJbmRleEVuZCA8IHN1YnRhZ3Muc2l6ZSgpOyAr
K3ZhbHVlSW5kZXhFbmQpIHsKKyAgICAgICAgICAgIGlmIChzdWJ0YWdzW3ZhbHVlSW5kZXhFbmRd
Lmxlbmd0aCgpID09IDIpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgLy8gW3ZhbHVlSW5kZXhTdGFydCwgdmFsdWVJbmRleEVuZCkgaXMgdmFsdWUgb2YgdGhpcyB1
bmljb2RlIGV4dGVuc2lvbi4gSWYgdGhlcmUgaXMgbm8gdmFsdWUsIHZhbHVlSW5kZXhTdGFydCA9
PSB2YWx1ZUluZGV4RW5kLgorCisgICAgICAgIGZvciAodW5zaWduZWQgdmFsdWVJbmRleCA9IHZh
bHVlSW5kZXhTdGFydDsgdmFsdWVJbmRleCA8IHZhbHVlSW5kZXhFbmQ7ICsrdmFsdWVJbmRleCkg
eworICAgICAgICAgICAgYXV0byB2YWx1ZSA9IHN1YnRhZ3NbdmFsdWVJbmRleF07CisgICAgICAg
ICAgICBpZiAodmFsdWUgIT0gInRydWUiX3MpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQuYXBw
ZW5kKCctJyk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCh2YWx1ZS5jaGFyYWN0ZXJz
OCgpLCB2YWx1ZS5sZW5ndGgoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAg
aW5kZXggPSB2YWx1ZUluZGV4RW5kOworICAgIH0KKworICAgIHVuc2lnbmVkIHJlbWFpbmluZ1N0
YXJ0ID0gZXh0ZW5zaW9uSW5kZXggKyBleHRlbnNpb25MZW5ndGg7CisgICAgdW5zaWduZWQgcmVt
YWluaW5nTGVuZ3RoID0gYnVmZmVyLnNpemUoKSAtIHJlbWFpbmluZ1N0YXJ0OworICAgIHJlc3Vs
dC5hcHBlbmQoYnVmZmVyLmRhdGEoKSArIHJlbWFpbmluZ1N0YXJ0LCByZW1haW5pbmdMZW5ndGgp
OworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIFN0cmluZyBsYW5ndWFnZVRhZ0ZvckxvY2FsZUlE
KGNvbnN0IGNoYXIqIGxvY2FsZUlELCBib29sIGlzSW1tb3J0YWwpCiB7CiAgICAgVmVjdG9yPGNo
YXIsIDMyPiBidWZmZXI7CkBAIC0yMTksMTIgKzMyNSwxNSBAQCBTdHJpbmcgbGFuZ3VhZ2VUYWdG
b3JMb2NhbGVJRChjb25zdCBjaGFyKiBsb2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQogICAgIGlm
IChVX0ZBSUxVUkUoc3RhdHVzKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgLy8g
VGhpcyBpcyB1c2VkIHRvIHN0b3JlIGludG8gc3RhdGljIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBz
aGFyZWQgYWNyb3NzIEpTQyBleGVjdXRpb24gdGhyZWFkcy4KLSAgICAvLyBUaGlzIG11c3QgYmUg
aW1tb3J0YWwgdG8gbWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZlLgotICAgIGlmIChpc0lt
bW9ydGFsKQotICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1w
bChidWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICBhdXRvIGNyZWF0ZVJlc3VsdCA9
IFsmXShWZWN0b3I8Y2hhciwgMzI+JiYgYnVmZmVyKSAtPiBTdHJpbmcgeworICAgICAgICAvLyBU
aGlzIGlzIHVzZWQgdG8gc3RvcmUgaW50byBzdGF0aWMgdmFyaWFibGVzIHRoYXQgbWF5IGJlIHNo
YXJlZCBhY3Jvc3MgSlNDIGV4ZWN1dGlvbiB0aHJlYWRzLgorICAgICAgICAvLyBUaGlzIG11c3Qg
YmUgaW1tb3J0YWwgdG8gbWFrZSBjb25jdXJyZW50IHJlZi9kZXJlZiBzYWZlLgorICAgICAgICBp
ZiAoaXNJbW1vcnRhbCkKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmdJbXBsOjpjcmVhdGVTdGF0
aWNTdHJpbmdJbXBsKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgICAgICByZXR1
cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIH07CiAKLSAgICBy
ZXR1cm4gU3RyaW5nKGJ1ZmZlci5kYXRhKCksIGJ1ZmZlci5zaXplKCkpOworICAgIHJldHVybiBj
cmVhdGVSZXN1bHQoY2Fub25pY2FsaXplVW5pY29kZUV4dGVuc2lvbnNBZnRlcklDVUxvY2FsZUNh
bm9uaWNhbGl6YXRpb24oV1RGTW92ZShidWZmZXIpKSk7CiB9CiAKIC8vIEVuc3VyZSB3ZSBoYXZl
IHh4LVpaIHdoZW5ldmVyIHdlIGhhdmUgeHgtWXl5eS1aWi4KQEAgLTY5NCw0NSArODAzLDYgQEAg
c3RhdGljIE1hdGNoZXJSZXN1bHQgYmVzdEZpdE1hdGNoZXIoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgY29uc3QgSGFzaFNldDwKICAgICByZXR1cm4gbG9va3VwTWF0Y2hlcihnbG9iYWxP
YmplY3QsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpOwogfQogCi1zdGF0aWMg
dm9pZCB1bmljb2RlRXh0ZW5zaW9uU3ViVGFncyhjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgVmVj
dG9yPFN0cmluZz4mIHN1YnRhZ3MpCi17Ci0gICAgLy8gVW5pY29kZUV4dGVuc2lvblN1YnRhZ3Mg
KGV4dGVuc2lvbikKLSAgICAvLyBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWE0MDIvI3NlYy11
bmljb2RlZXh0ZW5zaW9uc3VidGFncwotCi0gICAgYXV0byBleHRlbnNpb25MZW5ndGggPSBleHRl
bnNpb24ubGVuZ3RoKCk7Ci0gICAgaWYgKGV4dGVuc2lvbkxlbmd0aCA8IDMpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIHNpemVfdCBzdWJ0YWdTdGFydCA9IDM7IC8vIFNraXAgaW5pdGlhbCAtdS0u
Ci0gICAgc2l6ZV90IHZhbHVlU3RhcnQgPSAzOwotICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsK
LSAgICBmb3IgKHNpemVfdCBpbmRleCA9IHN1YnRhZ1N0YXJ0OyBpbmRleCA8IGV4dGVuc2lvbkxl
bmd0aDsgKytpbmRleCkgewotICAgICAgICBpZiAoZXh0ZW5zaW9uW2luZGV4XSA9PSAnLScpIHsK
LSAgICAgICAgICAgIGlmIChpbmRleCAtIHN1YnRhZ1N0YXJ0ID09IDIpIHsKLSAgICAgICAgICAg
ICAgICAvLyBUYWcgaXMgYSBrZXksIGZpcnN0IGFwcGVuZCBwcmlvciBrZXkncyB2YWx1ZSBpZiB0
aGVyZSBpcyBvbmUuCi0gICAgICAgICAgICAgICAgaWYgKHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFy
dCA+IDEpCi0gICAgICAgICAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJz
dHJpbmcodmFsdWVTdGFydCwgc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0IC0gMSkpOwotICAgICAg
ICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcoc3VidGFnU3RhcnQs
IGluZGV4IC0gc3VidGFnU3RhcnQpKTsKLSAgICAgICAgICAgICAgICB2YWx1ZVN0YXJ0ID0gaW5k
ZXggKyAxOwotICAgICAgICAgICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOwotICAgICAgICAgICAg
fSBlbHNlIGlmIChpc0xlYWRpbmcpIHsKLSAgICAgICAgICAgICAgICAvLyBMZWFkaW5nIHN1YnRh
Z3MgYmVmb3JlIGZpcnN0IGtleS4KLSAgICAgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChleHRl
bnNpb24uc3Vic3RyaW5nKHN1YnRhZ1N0YXJ0LCBpbmRleCAtIHN1YnRhZ1N0YXJ0KSk7Ci0gICAg
ICAgICAgICAgICAgdmFsdWVTdGFydCA9IGluZGV4ICsgMTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHN1YnRhZ1N0YXJ0ID0gaW5kZXggKyAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGlm
IChleHRlbnNpb25MZW5ndGggLSBzdWJ0YWdTdGFydCA9PSAyKSB7Ci0gICAgICAgIC8vIFRyYWls
aW5nIGFuIGV4dGVuc2lvbiBrZXksIGZpcnN0IGFwcGVuZCBwcmlvciBrZXkncyB2YWx1ZSBpZiB0
aGVyZSBpcyBvbmUuCi0gICAgICAgIGlmIChzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgPiAxKQot
ICAgICAgICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0
LCBzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgLSAxKSk7Ci0gICAgICAgIHZhbHVlU3RhcnQgPSBz
dWJ0YWdTdGFydDsKLSAgICB9Ci0gICAgLy8gQXBwZW5kIGZpbmFsIGtleSdzIHZhbHVlLgotICAg
IHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcodmFsdWVTdGFydCwgZXh0ZW5zaW9u
TGVuZ3RoIC0gdmFsdWVTdGFydCkpOwotfQotCiBjb25zdGV4cHIgQVNDSUlMaXRlcmFsIHJlbGV2
YW50RXh0ZW5zaW9uS2V5U3RyaW5nKFJlbGV2YW50RXh0ZW5zaW9uS2V5IGtleSkKIHsKICAgICBz
d2l0Y2ggKGtleSkgewpAQCAtNzU2LDkgKzgyNiw5IEBAIFJlc29sdmVkTG9jYWxlIHJlc29sdmVM
b2NhbGUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSGFzaFNldDxTdHJpbmc+
CiAKICAgICBTdHJpbmcgZm91bmRMb2NhbGUgPSBtYXRjaGVyUmVzdWx0LmxvY2FsZTsKIAotICAg
IFZlY3RvcjxTdHJpbmc+IGV4dGVuc2lvblN1YnRhZ3M7CisgICAgVmVjdG9yPFN0cmluZ1ZpZXc+
IGV4dGVuc2lvblN1YnRhZ3M7CiAgICAgaWYgKCFtYXRjaGVyUmVzdWx0LmV4dGVuc2lvbi5pc051
bGwoKSkKLSAgICAgICAgdW5pY29kZUV4dGVuc2lvblN1YlRhZ3MobWF0Y2hlclJlc3VsdC5leHRl
bnNpb24sIGV4dGVuc2lvblN1YnRhZ3MpOworICAgICAgICBleHRlbnNpb25TdWJ0YWdzID0gdW5p
Y29kZUV4dGVuc2lvblN1YlRhZ3MobWF0Y2hlclJlc3VsdC5leHRlbnNpb24pOwogCiAgICAgUmVz
b2x2ZWRMb2NhbGUgcmVzb2x2ZWQ7CiAgICAgcmVzb2x2ZWQuZGF0YUxvY2FsZSA9IGZvdW5kTG9j
YWxlOwpAQCAtNzc2LDkgKzg0NiwxMCBAQCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPgogICAgICAg
ICAgICAgc2l6ZV90IGtleVBvcyA9IGV4dGVuc2lvblN1YnRhZ3MuZmluZChrZXlTdHJpbmcpOwog
ICAgICAgICAgICAgaWYgKGtleVBvcyAhPSBub3RGb3VuZCkgewogICAgICAgICAgICAgICAgIGlm
IChrZXlQb3MgKyAxIDwgZXh0ZW5zaW9uU3VidGFncy5zaXplKCkgJiYgZXh0ZW5zaW9uU3VidGFn
c1trZXlQb3MgKyAxXS5sZW5ndGgoKSA+IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0ZWRWYWx1ZSA9IGV4dGVuc2lvblN1YnRhZ3Nba2V5UG9zICsgMV07Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChrZXlMb2NhbGVEYXRhLmNvbnRhaW5zKHJlcXVlc3RlZFZh
bHVlKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSByZXF1ZXN0ZWRWYWx1ZTsK
KyAgICAgICAgICAgICAgICAgICAgU3RyaW5nVmlldyByZXF1ZXN0ZWRWYWx1ZSA9IGV4dGVuc2lv
blN1YnRhZ3Nba2V5UG9zICsgMV07CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZGF0YVBvcyA9
IGtleUxvY2FsZURhdGEuZmluZChyZXF1ZXN0ZWRWYWx1ZSk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChkYXRhUG9zICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2YWx1
ZSA9IGtleUxvY2FsZURhdGFbZGF0YVBvc107CiAgICAgICAgICAgICAgICAgICAgICAgICBzdXBw
b3J0ZWRFeHRlbnNpb25BZGRpdGlvbiA9IG1ha2VTdHJpbmcoJy0nLCBrZXlTdHJpbmcsICctJywg
dmFsdWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlm
IChrZXlMb2NhbGVEYXRhLmNvbnRhaW5zKCJ0cnVlIl9zKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IGViMTkwZDc2ZTYzNDVlZDM2YmJiMzVjYjY1
ZjAxNTAyODlkMzAxYTYuLmE5NTgyMDk2MzZjZDk1Njk2Y2Q4OWEwYTEyYWNiMjljY2U0YTQxMDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTExMyw2
ICsxMTMsOCBAQCBTdHJpbmcgYmVzdEF2YWlsYWJsZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFN0cmluZwogdGVtcGxhdGU8dHlwZW5hbWUgUHJl
ZGljYXRlPiBTdHJpbmcgYmVzdEF2YWlsYWJsZUxvY2FsZShjb25zdCBTdHJpbmcmIHJlcXVlc3Rl
ZExvY2FsZSwgUHJlZGljYXRlKTsKIFZlY3RvcjxTdHJpbmc+IG51bWJlcmluZ1N5c3RlbXNGb3JM
b2NhbGUoY29uc3QgU3RyaW5nJiBsb2NhbGUpOwogCitWZWN0b3I8Y2hhciwgMzI+IGNhbm9uaWNh
bGl6ZVVuaWNvZGVFeHRlbnNpb25zQWZ0ZXJJQ1VMb2NhbGVDYW5vbmljYWxpemF0aW9uKFZlY3Rv
cjxjaGFyLCAzMj4mJik7CisKIGJvb2wgaXNVbmljb2RlTG9jYWxlSWRlbnRpZmllclR5cGUoU3Ry
aW5nVmlldyk7CiAKIGJvb2wgaXNVbmljb2RlTGFuZ3VhZ2VTdWJ0YWcoU3RyaW5nVmlldyk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaApp
bmRleCBlOGUzZjkxMGIwOGYxNGNmOTNkOTdmNjE2MmQyY2JiNGEwNzBkNjllLi40OGUzNDBkMjIx
ODNkNTZhYjFiNjFkNDYzMWZlMWFmZmY5M2JiMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKQEAgLTM0LDYgKzM0LDEyIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCit0ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgorc3RhdGlj
IGNvbnN0ZXhwciB1aW50MzJfdCBjb21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZShjb25zdCBTdHJp
bmdUeXBlJiBzdHJpbmcpCit7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90PihzdHJp
bmcuY2hhcmFjdGVyQXQoMCkpIHwgKHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDx1
aW50MTZfdD4oc3RyaW5nLmNoYXJhY3RlckF0KDEpKSkgPDwgMTYpOworfQorCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBQcmVkaWNhdGU+IFN0cmluZyBiZXN0QXZhaWxhYmxlTG9jYWxlKGNvbnN0IFN0cmlu
ZyYgbG9jYWxlLCBQcmVkaWNhdGUgcHJlZGljYXRlKQogewogICAgIC8vIEJlc3RBdmFpbGFibGVM
b2NhbGUgKGF2YWlsYWJsZUxvY2FsZXMsIGxvY2FsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IDFlZjJjYjMxNWE2MDlkODU0
MzkyYjI0NTNmNWM0NmMyNTZjODQyN2QuLjFhMmRjNWY1OGEyOTIyNDI2MDJhZjAzMzFjNGRiMTQz
YTM4NjNiNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmlu
Z1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5n
UHJvdG90eXBlLmNwcApAQCAtMTU0MSwxMiArMTU0MSw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nUHJvdG9GdW5jTG9jYWxlQ29tcGFyZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoY29sbGF0
b3ItPmNvbXBhcmVTdHJpbmdzKGdsb2JhbE9iamVjdCwgc3RyaW5nLCB0aGF0KSkpOwogfQogCi10
ZW1wbGF0ZTx0eXBlbmFtZSBTdHJpbmdUeXBlPgotc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBj
b21wdXRlVHdvQ2hhcmFjdGVyczE2Q29kZShjb25zdCBTdHJpbmdUeXBlJiBzdHJpbmcpCi17Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PHVpbnQxNl90PihzdHJpbmcuY2hhcmFjdGVyQXQoMCkpIHwg
KHN0YXRpY19jYXN0PHVpbnQzMl90PihzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nLmNoYXJh
Y3RlckF0KDEpKSkgPDwgMTYpOwotfQotCiBlbnVtIGNsYXNzIENhc2VDb252ZXJzaW9uTW9kZSB7
CiAgICAgVXBwZXIsCiAgICAgTG93ZXIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0
L1N0cmluZ1ZpZXcuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDky
MGZiZmI3ZDFmM2QwOTQ1NmZmNDE5MzM0NGIyMDEyMTRhMGUwMWUuLjg0MDI0ZWU3NGNlOTUxNWEz
MTI3MWZmMmRiOTgyMDFmNDIxYmQ2MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nVmlldy5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC03
OSw2ICs3OSw3IEBAIGNsYXNzIFN0cmluZ1ZpZXcgZmluYWwgewogICAgIGV4cGxpY2l0IG9wZXJh
dG9yIGJvb2woKSBjb25zdDsKICAgICBib29sIGlzTnVsbCgpIGNvbnN0OwogCisgICAgVUNoYXIg
Y2hhcmFjdGVyQXQodW5zaWduZWQgaW5kZXgpIGNvbnN0OwogICAgIFVDaGFyIG9wZXJhdG9yW10o
dW5zaWduZWQgaW5kZXgpIGNvbnN0OwogCiAgICAgY2xhc3MgQ29kZVVuaXRzOwpAQCAtNDk5LDcg
KzUwMCw3IEBAIGlubGluZSBTdHJpbmdWaWV3IFN0cmluZ1ZpZXc6OnN1YnN0cmluZyh1bnNpZ25l
ZCBzdGFydCwgdW5zaWduZWQgbGVuZ3RoKSBjb25zdAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
LWlubGluZSBVQ2hhciBTdHJpbmdWaWV3OjpvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4KSBjb25z
dAoraW5saW5lIFVDaGFyIFN0cmluZ1ZpZXc6OmNoYXJhY3RlckF0KHVuc2lnbmVkIGluZGV4KSBj
b25zdAogewogICAgIEFTU0VSVChpbmRleCA8IGxlbmd0aCgpKTsKICAgICBpZiAoaXM4Qml0KCkp
CkBAIC01MDcsNiArNTA4LDExIEBAIGlubGluZSBVQ2hhciBTdHJpbmdWaWV3OjpvcGVyYXRvcltd
KHVuc2lnbmVkIGluZGV4KSBjb25zdAogICAgIHJldHVybiBjaGFyYWN0ZXJzMTYoKVtpbmRleF07
CiB9CiAKK2lubGluZSBVQ2hhciBTdHJpbmdWaWV3OjpvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4
KSBjb25zdAoreworICAgIHJldHVybiBjaGFyYWN0ZXJBdChpbmRleCk7Cit9CisKIGlubGluZSBi
b29sIFN0cmluZ1ZpZXc6OmNvbnRhaW5zKFVDaGFyIGNoYXJhY3RlcikgY29uc3QKIHsKICAgICBy
ZXR1cm4gZmluZChjaGFyYWN0ZXIpICE9IG5vdEZvdW5kOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyNWZjODJhMWU1NzQ2MGU4MDNhZjZk
ODI5MGMxZGFjZWQ1ZTllNmM4Li5jMjU4ZTNkNmVjOTM0OWNhZTVlZmU4MTM4NGI4YWI1Yzk3ODVl
NjkyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDIzIEBACisyMDIwLTA5LTExICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQ2Fub25pY2FsaXplICJ0cnVlIiB1bmljb2RlIGV4
dGVuc2lvbiB0eXBlIHZhbHVlIHRvICIiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMTYyMjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIHN0cmVzcy9pbnRsLWNvbGxhdG9yLWNvLWV4dGVuc2lvbi5qczoK
KyAgICAgICAgKGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3KTogRGVsZXRlZC4KKyAgICAgICAgKiBz
dHJlc3MvaW50bC1jb2xsYXRvci5qczoKKyAgICAgICAgKHNob3VsZEJlLnRlc3RDb2xsYXRvci5J
bnRsLkNvbGxhdG9yKToKKyAgICAgICAgKGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3KTogRGVsZXRl
ZC4KKyAgICAgICAgKiBzdHJlc3MvaW50bC1kYXRldGltZWZvcm1hdC5qczoKKyAgICAgICAgKiBz
dHJlc3MvaW50bC1sb2NhbGUuanM6CisgICAgICAgICogc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0
LmpzOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW9iamVjdC5qczoKKyAgICAgICAgKiBzdHJlc3Mv
aW50bC1wbHVyYWxydWxlcy5qczoKKyAgICAgICAgKiBzdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVm
b3JtYXQuanM6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwogMjAyMC0w
OS0xMSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CiAKICAgICAgICAg
VXBkYXRlIHRlc3QyNjIgdG8gY29tbWl0IDMyMzkwNWI3MGU2NApkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvaW50bC1jb2xsYXRvci1jby1leHRlbnNpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9p
bnRsLWNvbGxhdG9yLWNvLWV4dGVuc2lvbi5qcwppbmRleCBjMTQ4Nzg0MGI0OWFlOWJlY2ZhM2U0
ZGJmZTU3MThlNWEyMGY2NDdlLi41MjEyMWIzY2E3NTI1YTZkMTM1Zjk4ZmQ2NTViYTc1ODg4YTM1
ZDkzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWNvbGxhdG9yLWNvLWV4dGVuc2lv
bi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWNvbGxhdG9yLWNvLWV4dGVuc2lvbi5qcwpA
QCAtMTUsMTAgKzE1LDYgQEAgZnVuY3Rpb24gc2hvdWxkQmVBcnJheShhY3R1YWwsIGV4cGVjdGVk
KSB7CiAgICAgfQogfQogCi1mdW5jdGlvbiBleHBsaWNpdFRydWVCZWZvcmVJQ1U2NygpIHsKLSAg
ICByZXR1cm4gJHZtLmljdVZlcnNpb24oKSA8IDY3ID8gJy10cnVlJyA6ICcnOwotfQotCiBzaG91
bGRCZUFycmF5KFsiQUUiLCAiXHUwMEM0Il0uc29ydChuZXcgSW50bC5Db2xsYXRvcigiZGUiLCB7
dXNhZ2U6ICJzb3J0In0pLmNvbXBhcmUpLCBbIlx1MDBDNCIsICJBRSJdKTsKIHNob3VsZEJlQXJy
YXkoWyJBRSIsICJcdTAwQzQiXS5zb3J0KG5ldyBJbnRsLkNvbGxhdG9yKCJkZSIsIHt1c2FnZTog
InNlYXJjaCJ9KS5jb21wYXJlKSwgWyJBRSIsICJcdTAwQzQiXSk7CiBzaG91bGRCZShuZXcgSW50
bC5Db2xsYXRvcigiZGUiLCB7dXNhZ2U6ICJzb3J0In0pLnJlc29sdmVkT3B0aW9ucygpLmxvY2Fs
ZSwgImRlIik7CkBAIC00MCw4ICszNiw4IEBAIGZ1bmN0aW9uIGV4cGxpY2l0VHJ1ZUJlZm9yZUlD
VTY3KCkgewogCiBzaG91bGRCZShuZXcgSW50bC5Db2xsYXRvcigiZW4tVVMteC10d2FpbiIsIHt1
c2FnZTogInNlYXJjaCJ9KS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICJlbi1VUyIpOwogCi1z
aG91bGRCZShuZXcgSW50bC5Db2xsYXRvcigiZGUtdS1rbiIsIHt1c2FnZTogInNvcnQifSkucmVz
b2x2ZWRPcHRpb25zKCkubG9jYWxlLCAiZGUtdS1rbiIgKyBleHBsaWNpdFRydWVCZWZvcmVJQ1U2
NygpKTsKLXNob3VsZEJlKG5ldyBJbnRsLkNvbGxhdG9yKCJkZS11LWtuIiwge3VzYWdlOiAic2Vh
cmNoIn0pLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgImRlLXUta24iICsgZXhwbGljaXRUcnVl
QmVmb3JlSUNVNjcoKSk7CitzaG91bGRCZShuZXcgSW50bC5Db2xsYXRvcigiZGUtdS1rbiIsIHt1
c2FnZTogInNvcnQifSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAiZGUtdS1rbiIpOworc2hv
dWxkQmUobmV3IEludGwuQ29sbGF0b3IoImRlLXUta24iLCB7dXNhZ2U6ICJzZWFyY2gifSkucmVz
b2x2ZWRPcHRpb25zKCkubG9jYWxlLCAiZGUtdS1rbiIpOwogCiBzaG91bGRCZUFycmF5KFsiYSIs
ICJhZSIsICLDpCIsICLDpiJdLnNvcnQobmV3IEludGwuQ29sbGF0b3IoImRlLXUtY28tcGhvbmVi
ayIpLmNvbXBhcmUpLCBbImEiLCAiYWUiLCAiw6QiLCAiw6YiXSk7CiBzaG91bGRCZUFycmF5KFsi
YSIsICJhZSIsICLDpCIsICLDpiJdLnNvcnQobmV3IEludGwuQ29sbGF0b3IoImRlIikuY29tcGFy
ZSksIFsiYSIsICLDpCIsICJhZSIsICLDpiJdKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L2ludGwtY29sbGF0b3IuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWNvbGxhdG9yLmpzCmluZGV4
IGEyZTQwNTAxNGY1NTU1MDI4NTZlMjFkMGZiZDUwYzRhZjk2YWMwNDguLmIwYzEyODcxYzJkODU4
ZDEyNWVmMjkzOTAzY2U0N2JhZmIzMjc3MDAgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL2lu
dGwtY29sbGF0b3IuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1jb2xsYXRvci5qcwpAQCAt
MTksMTAgKzE5LDYgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CiAg
ICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CiB9
CiAKLWZ1bmN0aW9uIGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3KCkgewotICAgIHJldHVybiAkdm0u
aWN1VmVyc2lvbigpIDwgNjcgPyAnLXRydWUnIDogJyc7Ci19Ci0KIC8vIDEwLjEgVGhlIEludGwu
Q29sbGF0b3IgQ29uc3RydWN0b3IKIAogLy8gVGhlIEludGwuQ29sbGF0b3IgY29uc3RydWN0b3Ig
aXMgYSBzdGFuZGFyZCBidWlsdC1pbiBwcm9wZXJ0eSBvZiB0aGUgSW50bCBvYmplY3QuCkBAIC04
NSw4ICs4MSw4IEBAIGZ1bmN0aW9uIHRlc3RDb2xsYXRvcihjb2xsYXRvciwgcG9zc2libGVPcHRp
b25EaWZmZXJlbmNlcykgewogc2hvdWxkQmUodGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2Rl
LXUtY28tcGhvbmViaycpLCBbe2xvY2FsZTogJ2RlLXUtY28tcGhvbmViaycsIGNvbGxhdGlvbjog
J3Bob25lYmsnfSwge2xvY2FsZTogJ2RlJ31dKSwgdHJ1ZSk7CiAKIC8vIFRoZSAna24nIGtleSBp
cyBwcm9jZXNzZWQgY29ycmVjdGx5Lgotc2hvdWxkQmUodGVzdENvbGxhdG9yKEludGwuQ29sbGF0
b3IoJ2VuLXUta24nKSwgW3tsb2NhbGU6ICdlbi11LWtuJyArIGV4cGxpY2l0VHJ1ZUJlZm9yZUlD
VTY3KCksIG51bWVyaWM6IHRydWV9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdENvbGxhdG9yKElu
dGwuQ29sbGF0b3IoJ2VuLXUta24tdHJ1ZScpLCBbe2xvY2FsZTogJ2VuLXUta24nICsgZXhwbGlj
aXRUcnVlQmVmb3JlSUNVNjcoKSwgbnVtZXJpYzogdHJ1ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0
ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4tdS1rbicpLCBbe2xvY2FsZTogJ2VuLXUta24n
LCBudW1lcmljOiB0cnVlfV0pLCB0cnVlKTsKK3Nob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNv
bGxhdG9yKCdlbi11LWtuLXRydWUnKSwgW3tsb2NhbGU6ICdlbi11LWtuJywgbnVtZXJpYzogdHJ1
ZX1dKSwgdHJ1ZSk7CiBzaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4tdS1r
bi1mYWxzZScpLCBbe2xvY2FsZTogJ2VuLXUta24tZmFsc2UnLCBudW1lcmljOiBmYWxzZX1dKSwg
dHJ1ZSk7CiBzaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4tdS1rbi1hYmNk
JyksIFt7bG9jYWxlOiAnZW4nfV0pLCB0cnVlKTsKIApAQCAtMTUwLDcgKzE0Niw3IEBAIGZ1bmN0
aW9uIHRlc3RDb2xsYXRvcihjb2xsYXRvciwgcG9zc2libGVPcHRpb25EaWZmZXJlbmNlcykgewog
Ly8gT3B0aW9ucyBvdmVycmlkZSB0aGUgbGFuZ3VhZ2UgdGFnLgogc2hvdWxkQmUodGVzdENvbGxh
dG9yKEludGwuQ29sbGF0b3IoJ2VuLXUta24tdHJ1ZScsIHtudW1lcmljOiBmYWxzZX0pLCBbe2xv
Y2FsZTogJ2VuJywgbnVtZXJpYzogZmFsc2V9XSksIHRydWUpOwogc2hvdWxkQmUodGVzdENvbGxh
dG9yKEludGwuQ29sbGF0b3IoJ2VuLXUta24tZmFsc2UnLCB7bnVtZXJpYzogdHJ1ZX0pLCBbe2xv
Y2FsZTogJ2VuJywgbnVtZXJpYzogdHJ1ZX1dKSwgdHJ1ZSk7Ci1zaG91bGRCZSh0ZXN0Q29sbGF0
b3IoSW50bC5Db2xsYXRvcignZW4tdS1rbi10cnVlJywge251bWVyaWM6IHRydWV9KSwgW3tsb2Nh
bGU6ICdlbi11LWtuJyArIGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3KCksIG51bWVyaWM6IHRydWV9
XSksIHRydWUpOworc2hvdWxkQmUodGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2VuLXUta24t
dHJ1ZScsIHtudW1lcmljOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4tdS1rbicsIG51bWVyaWM6IHRy
dWV9XSksIHRydWUpOwogc2hvdWxkQmUodGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2VuLXUt
a24tZmFsc2UnLCB7bnVtZXJpYzogZmFsc2V9KSwgW3tsb2NhbGU6ICdlbi11LWtuLWZhbHNlJywg
bnVtZXJpYzogZmFsc2V9XSksIHRydWUpOwogCiAvLyBPcHRpb25zIGFuZCBleHRlbnNpb24ga2V5
cyBhcmUgcHJvY2Vzc2VkIGNvcnJlY3RseS4KQEAgLTE5Miw3ICsxODgsNyBAQCBmdW5jdGlvbiB0
ZXN0Q29sbGF0b3IoY29sbGF0b3IsIHBvc3NpYmxlT3B0aW9uRGlmZmVyZW5jZXMpIHsKICAgICBK
U09OLnN0cmluZ2lmeShJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2FsZXNPZignRW4tbGFUbi11
cy12YXJpQW50LWZPT2Jhci0xYWJjLVUta24tdFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLAog
ICAgICR2bS5pY3VWZXJzaW9uKCkgPj0gNjcKICAgICAgICAgPyAnWyJlbi1MYXRuLVVTLTFhYmMt
Zm9vYmFyLXZhcmlhbnQtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkIl0nCi0gICAgICAgIDogJ1si
ZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24tdHJ1ZS14LXJlc2Vy
dmVkIl0nCisgICAgICAgIDogJ1siZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEt
YWFhLXUta24teC1yZXNlcnZlZCJdJwogKTsKIC8vIFRocm93cyBvbiBwcm9ibGVtcyB3aXRoIGxl
bmd0aCwgZ2V0LCBvciB0b1N0cmluZy4KIHNob3VsZFRocm93KCgpID0+IEludGwuQ29sbGF0b3Iu
c3VwcG9ydGVkTG9jYWxlc09mKE9iamVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6IHsgZ2V0KCkg
eyB0aHJvdyBFcnJvcigpIH0gfSB9KSksIEVycm9yKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0aW1l
Zm9ybWF0LmpzCmluZGV4IGJjMTRlMTk5ODE4OGFlYjQxNTEwZGVkZGE5NWRhZTEzYzU2YmMzYWUu
LjA2MWY3OTc3MjAyNjE5ODlhNjA5ZGUwYTlkN2UyYWFlMjE2YjVhNDEgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKKysrIGIvSlNUZXN0cy9zdHJlc3Mv
aW50bC1kYXRldGltZWZvcm1hdC5qcwpAQCAtODQsNyArODQsNyBAQCBmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKICAgICBKU09OLnN0cmluZ2lmeShJbnRsLkRhdGVUaW1l
Rm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignRW4tbGFUbi11cy12YXJpQW50LWZPT2Jhci0xYWJj
LVUta24tdFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLAogICAgICR2bS5pY3VWZXJzaW9uKCkg
Pj0gNjcKICAgICAgICAgPyAnWyJlbi1MYXRuLVVTLTFhYmMtZm9vYmFyLXZhcmlhbnQtYS1hYS1h
YWEtdS1rbi14LXJlc2VydmVkIl0nCi0gICAgICAgIDogJ1siZW4tTGF0bi1VUy12YXJpYW50LWZv
b2Jhci0xYWJjLWEtYWEtYWFhLXUta24tdHJ1ZS14LXJlc2VydmVkIl0nCisgICAgICAgIDogJ1si
ZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24teC1yZXNlcnZlZCJd
JwogKTsKIC8vIFRocm93cyBvbiBwcm9ibGVtcyB3aXRoIGxlbmd0aCwgZ2V0LCBvciB0b1N0cmlu
Zy4KIHNob3VsZFRocm93KCgpID0+IEludGwuRGF0ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxl
c09mKE9iamVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJy
b3IoKTsgfSB9IH0pKSwgRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1s
b2NhbGUuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS5qcwppbmRleCAwNGU1MjU5Nzlm
ZGMwYzQ4NDRkMTMzMGJlNmQ1NGQzZDM1YzBjNTFkLi5kZWYxMDhjNDA4NDU3NWI5NDJkYjE0NjIz
NjRlZGI0M2Q2YmFkZDkwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS5q
cworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLWxvY2FsZS5qcwpAQCAtMTUwLDcgKzE1MCw3IEBA
IGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewogICAgIG5ldyBJbnRsLkxv
Y2FsZSgnRW4tbGFUbi11cy12YXJpQW50LWZPT2Jhci0xYWJjLVUta24tdFJ1ZS1BLWFhLWFhYS14
LVJFU0VSVkVEJykudG9TdHJpbmcoKSwKICAgICAkdm0uaWN1VmVyc2lvbigpID49IDY3CiAgICAg
ICAgID8gJ2VuLUxhdG4tVVMtMWFiYy1mb29iYXItdmFyaWFudC1hLWFhLWFhYS11LWtuLXgtcmVz
ZXJ2ZWQnCi0gICAgICAgIDogJ2VuLUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFh
YS11LWtuLXRydWUteC1yZXNlcnZlZCcKKyAgICAgICAgOiAnZW4tTGF0bi1VUy12YXJpYW50LWZv
b2Jhci0xYWJjLWEtYWEtYWFhLXUta24teC1yZXNlcnZlZCcKICk7CiBzaG91bGRCZShuZXcgSW50
bC5Mb2NhbGUoJ2NlbC1nYXVsaXNoJywgeyBzY3JpcHQ6ICdBcmFiJywgbnVtYmVyaW5nU3lzdGVt
OiAnZ3VqcicgfSkudG9TdHJpbmcoKSwgJ3h0Zy1BcmFiLXUtbnUtZ3Vqci14LWNlbC1nYXVsaXNo
Jyk7CiBzaG91bGRCZShuZXcgSW50bC5Mb2NhbGUoJ2VuLUxhdG4tVVMtdS1jYS1ncmVnb3J5LWNv
LXBob25lYmstaGMtaDEyLWtmLXVwcGVyLWtuLWZhbHNlLW51LWxhdG4nKS50b1N0cmluZygpLCAn
ZW4tTGF0bi1VUy11LWNhLWdyZWdvcnktY28tcGhvbmViay1oYy1oMTIta2YtdXBwZXIta24tZmFs
c2UtbnUtbGF0bicpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3Jt
YXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCBmYWNhZGNh
MGUzMTU0ZTZlZWFmYjIzMTJlZGFmYjk5M2JlM2JmNjE5Li41NmM1Nzc0MTc2NDVmNGNiYmI4ZDEx
NmNkMTVjMjM2NzRlZWQwOWY5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJl
cmZvcm1hdC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qcwpAQCAt
MjI1LDcgKzIyNSw3IEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVyRm9ybWF0LCBw
b3NzaWJsZURpZmZlcmVuY2VzKSB7CiAgICAgSlNPTi5zdHJpbmdpZnkoSW50bC5OdW1iZXJGb3Jt
YXQuc3VwcG9ydGVkTG9jYWxlc09mKCdFbi1sYVRuLXVzLXZhcmlBbnQtZk9PYmFyLTFhYmMtVS1r
bi10UnVlLUEtYWEtYWFhLXgtUkVTRVJWRUQnKSksCiAgICAgJHZtLmljdVZlcnNpb24oKSA+PSA2
NwogICAgICAgICA/ICdbImVuLUxhdG4tVVMtMWFiYy1mb29iYXItdmFyaWFudC1hLWFhLWFhYS11
LWtuLXgtcmVzZXJ2ZWQiXScKLSAgICAgICAgOiAnWyJlbi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFy
LTFhYmMtYS1hYS1hYWEtdS1rbi10cnVlLXgtcmVzZXJ2ZWQiXScKKyAgICAgICAgOiAnWyJlbi1M
YXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkIl0nCiAp
OwogLy8gVGhyb3dzIG9uIHByb2JsZW1zIHdpdGggbGVuZ3RoLCBnZXQsIG9yIHRvU3RyaW5nLgog
c2hvdWxkVGhyb3coKCkgPT4gSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKE9i
amVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsg
fSB9IH0pKSwgRXJyb3IpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1vYmplY3Qu
anMgYi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW9iamVjdC5qcwppbmRleCA0MGNmZjY2MTJkMTRiYmE1
OGVlMWE5YWE3OWUwOGVlZWZlYmFkZTBkLi4wMzkwZjhjNzM4ZjhlMThhMWNmNWU2MmUwYmM4Mjdl
OWQ0NDNmYjBhIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLW9iamVjdC5qcworKysg
Yi9KU1Rlc3RzL3N0cmVzcy9pbnRsLW9iamVjdC5qcwpAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlv
biBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKICAgICBKU09OLnN0cmluZ2lmeShJbnRs
LmdldENhbm9uaWNhbExvY2FsZXMoJ0VuLWxhVG4tdXMtdmFyaUFudC1mT09iYXItMWFiYy1VLWtu
LXRSdWUtQS1hYS1hYWEteC1SRVNFUlZFRCcpKSwKICAgICAkdm0uaWN1VmVyc2lvbigpID49IDY3
CiAgICAgICAgID8gJ1siZW4tTGF0bi1VUy0xYWJjLWZvb2Jhci12YXJpYW50LWEtYWEtYWFhLXUt
a24teC1yZXNlcnZlZCJdJwotICAgICAgICA6ICdbImVuLUxhdG4tVVMtdmFyaWFudC1mb29iYXIt
MWFiYy1hLWFhLWFhYS11LWtuLXRydWUteC1yZXNlcnZlZCJdJworICAgICAgICA6ICdbImVuLUxh
dG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtuLXgtcmVzZXJ2ZWQiXScKICk7
CiAvLyBUaHJvd3Mgb24gcHJvYmxlbXMgd2l0aCBsZW5ndGgsIGdldCwgb3IgdG9TdHJpbmcuCiBz
aG91bGRUaHJvdygoKSA9PiBJbnRsLmdldENhbm9uaWNhbExvY2FsZXMoT2JqZWN0LmNyZWF0ZShu
dWxsLCB7IGxlbmd0aDogeyBnZXQoKSB7IHRocm93IG5ldyBFcnJvcigpOyB9IH0gfSkpLCBFcnJv
cik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcwppbmRleCBhMTM2ZDQ2ZjQxYWQ0MjdlNWRk
YmMxYWFhNjQ0YTExZjUxMjU0M2JjLi5hNDM4ZWFjZTFkNjY0N2EwOWQ0MTY1NjI2NzEyMWNjZDQ4
NTA1ZTA3IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCisr
KyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcGx1cmFscnVsZXMuanMKQEAgLTgzLDcgKzgzLDcgQEAg
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CiAgICAgSlNPTi5zdHJpbmdp
ZnkoSW50bC5QbHVyYWxSdWxlcy5zdXBwb3J0ZWRMb2NhbGVzT2YoJ0VuLWxhVG4tdXMtdmFyaUFu
dC1mT09iYXItMWFiYy1VLWtuLXRSdWUtQS1hYS1hYWEteC1SRVNFUlZFRCcpKSwKICAgICAkdm0u
aWN1VmVyc2lvbigpID49IDY3CiAgICAgICAgID8gJ1siZW4tTGF0bi1VUy0xYWJjLWZvb2Jhci12
YXJpYW50LWEtYWEtYWFhLXUta24teC1yZXNlcnZlZCJdJwotICAgICAgICA6ICdbImVuLUxhdG4t
VVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtuLXRydWUteC1yZXNlcnZlZCJdJwor
ICAgICAgICA6ICdbImVuLUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtu
LXgtcmVzZXJ2ZWQiXScKICk7CiAvLyBUaHJvd3Mgb24gcHJvYmxlbXMgd2l0aCBsZW5ndGgsIGdl
dCwgb3IgdG9TdHJpbmcuCiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLlBsdXJhbFJ1bGVzLnN1cHBv
cnRlZExvY2FsZXNPZihPYmplY3QuY3JlYXRlKG51bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhy
b3cgbmV3IEVycm9yKCk7IH0gfSB9KSksIEVycm9yKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1yZWxh
dGl2ZXRpbWVmb3JtYXQuanMKaW5kZXggNDUwMjgyZmI5MTMzYmM3NDMzYmVjZDZmMTJmMTY3ZWNk
NmUyMzJhOC4uOGMxNDM0NmQwYmY3M2I4MDY2MzcxNWRlNTg1NjIzOGI5ZTUwNzMxMiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1yZWxhdGl2ZXRpbWVmb3JtYXQuanMKQEAgLTY3LDcgKzY3LDcgQEAg
ZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CiAgICAgSlNPTi5zdHJpbmdp
ZnkoSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKCdFbi1sYVRuLXVz
LXZhcmlBbnQtZk9PYmFyLTFhYmMtVS1rbi10UnVlLUEtYWEtYWFhLXgtUkVTRVJWRUQnKSksCiAg
ICAgJHZtLmljdVZlcnNpb24oKSA+PSA2NwogICAgICAgICA/ICdbImVuLUxhdG4tVVMtMWFiYy1m
b29iYXItdmFyaWFudC1hLWFhLWFhYS11LWtuLXgtcmVzZXJ2ZWQiXScKLSAgICAgICAgOiAnWyJl
bi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1hYWEtdS1rbi10cnVlLXgtcmVzZXJ2
ZWQiXScKKyAgICAgICAgOiAnWyJlbi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1h
YWEtdS1rbi14LXJlc2VydmVkIl0nCiApOwogCiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLlJlbGF0
aXZlVGltZUZvcm1hdC5zdXBwb3J0ZWRMb2NhbGVzT2YoJ25vLWJvaycpLCBSYW5nZUVycm9yKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbCBiL0pTVGVzdHMv
dGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAppbmRleCAyNTMyMTA3NjFiNWIwNzE1Zjc1ZGZiZWIy
MDE4YThlMmFkOGVhODQ1Li45OTUwMzg5YjA2Mjg1YjE4NzVlM2MzNTExZTYxZTJjMjA4MzZiYWMw
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKKysrIGIvSlNU
ZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCkBAIC0xNDUyLDkgKzE0NTIsNiBAQCB0ZXN0
L2J1aWx0LWlucy9UeXBlZEFycmF5Q29uc3RydWN0b3JzL29mL2N1c3RvbS1jdG9yLmpzOgogdGVz
dC9idWlsdC1pbnMvVHlwZWRBcnJheUNvbnN0cnVjdG9ycy9vZi9uZXctaW5zdGFuY2UtdXNpbmct
Y3VzdG9tLWN0b3IuanM6CiAgIGRlZmF1bHQ6ICdUeXBlRXJyb3I6IFR5cGVkQXJyYXkub2YgcmVx
dWlyZXMgaXRzIHRoaXMgYXJndW1lbnQgdG8gc3ViY2xhc3MgYSBUeXBlZEFycmF5IGNvbnN0cnVj
dG9yIChUZXN0aW5nIHdpdGggRmxvYXQ2NEFycmF5LiknCiAgIHN0cmljdCBtb2RlOiAnVHlwZUVy
cm9yOiBUeXBlZEFycmF5Lm9mIHJlcXVpcmVzIGl0cyB0aGlzIGFyZ3VtZW50IHRvIHN1YmNsYXNz
IGEgVHlwZWRBcnJheSBjb25zdHJ1Y3RvciAoVGVzdGluZyB3aXRoIEZsb2F0NjRBcnJheS4pJwot
dGVzdC9pbnRsNDAyL0NvbGxhdG9yL21pc3NpbmctdW5pY29kZS1leHQtdmFsdWUtZGVmYXVsdHMt
dG8tdHJ1ZS5qczoKLSAgZGVmYXVsdDogIlRlc3QyNjJFcnJvcjogXCJrbi10cnVlXCIgaXMgcmV0
dXJuZWQgaW4gbG9jYWxlLCBidXQgc2hvdWxkbid0IGJlLiBFeHBlY3RlZCBTYW1lVmFsdWUowqs3
wrssIMKrLTHCuykgdG8gYmUgdHJ1ZSIKLSAgc3RyaWN0IG1vZGU6ICJUZXN0MjYyRXJyb3I6IFwi
a24tdHJ1ZVwiIGlzIHJldHVybmVkIGluIGxvY2FsZSwgYnV0IHNob3VsZG4ndCBiZS4gRXhwZWN0
ZWQgU2FtZVZhbHVlKMKrN8K7LCDCqy0xwrspIHRvIGJlIHRydWUiCiB0ZXN0L2ludGw0MDIvRGF0
ZVRpbWVGb3JtYXQvcHJvdG90eXBlL2Zvcm1hdC90aW1lZGF0ZXN0eWxlLWVuLmpzOgogICBkZWZh
dWx0OiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1l
VmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZcK7LCDCqzE0OjEy
OjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBt
b2RlOiAnVGVzdDI2MkVycm9yOiBSZXN1bHQgZm9yIGZ1bGwgd2l0aCB7fSBFeHBlY3RlZCBTYW1l
VmFsdWUowqsxNDoxMjo0NyBQTSBDb29yZGluYXRlZCBVbml2ZXJzYWwgVGltZcK7LCDCqzE0OjEy
OjQ3IENvb3JkaW5hdGVkIFVuaXZlcnNhbCBUaW1lwrspIHRvIGJlIHRydWUnCkBAIC0xNDk3LDkg
KzE0OTQsNiBAQCB0ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5vbmljYWxMb2NhbGVzL3VuaWNvZGUt
ZXh0LWNhbm9uaWNhbGl6ZS1yZWdpb24uanM6CiB0ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5vbmlj
YWxMb2NhbGVzL3VuaWNvZGUtZXh0LWNhbm9uaWNhbGl6ZS1zdWJkaXZpc2lvbi5qczoKICAgZGVm
YXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kLU5PLXUtc2Qtbm8y
M8K7LCDCq3VuZC1OTy11LXNkLW5vNTDCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdU
ZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZC1OTy11LXNkLW5vMjPCuywgwqt1
bmQtTk8tdS1zZC1ubzUwwrspIHRvIGJlIHRydWUnCi10ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5v
bmljYWxMb2NhbGVzL3VuaWNvZGUtZXh0LWNhbm9uaWNhbGl6ZS15ZXMtdG8tdHJ1ZS5qczoKLSAg
ZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrdW5kLXUta2ItdHJ1
ZcK7LCDCq3VuZC11LWtiwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqt1bmQtdS1rYi10cnVlwrssIMKrdW5kLXUta2LCuykg
dG8gYmUgdHJ1ZScKIHRlc3QvaW50bDQwMi9JbnRsL2dldENhbm9uaWNhbExvY2FsZXMvdW5pY29k
ZS1leHQta2V5LXdpdGgtZGlnaXQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjCq2VuLXUtMGMteWVzwrssIMKrZW4tdS0wY8K7KSB0byBiZSB0cnVlJwog
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS0w
Yy15ZXPCuywgwqtlbi11LTBjwrspIHRvIGJlIHRydWUnCkBAIC0xNTA5LDIxICsxNTAzLDEyIEBA
IHRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3ItYXBwbHktb3B0aW9ucy1jYW5vbmljYWxp
emVzLXR3aWNlLmpzOgogdGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1ub24taWFuYS1j
YW5vbi5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJtbyIp
Lm1heGltaXplKCkudG9TdHJpbmcoKSByZXR1cm5zICJyby1MYXRuLVJPIiBFeHBlY3RlZCBTYW1l
VmFsdWUowqtyb8K7LCDCq3JvLUxhdG4tUk/CuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgibW8iKS5tYXhpbWl6ZSgpLnRvU3RyaW5n
KCkgcmV0dXJucyAicm8tTGF0bi1STyIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrcm/Cuywgwqtyby1M
YXRuLVJPwrspIHRvIGJlIHRydWUnCi10ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLW9w
dGlvbnMtbnVtZXJpYy11bmRlZmluZWQuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5l
dyBJbnRsLkxvY2FsZSgiZW4tdS1rbi10cnVlIiwge251bWVyaWM6IHVuZGVmaW5lZH0pLnRvU3Ry
aW5nKCkgcmV0dXJucyAiZW4tdS1rbiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS1rbi10cnVl
wrssIMKrZW4tdS1rbsK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogbmV3IEludGwuTG9jYWxlKCJlbi11LWtuLXRydWUiLCB7bnVtZXJpYzogdW5kZWZpbmVkfSku
dG9TdHJpbmcoKSByZXR1cm5zICJlbi11LWtuIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtu
LXRydWXCuywgwqtlbi11LWtuwrspIHRvIGJlIHRydWUnCi10ZXN0L2ludGw0MDIvTG9jYWxlL2Nv
bnN0cnVjdG9yLW9wdGlvbnMtbnVtZXJpYy12YWxpZC5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogbmV3IEludGwuTG9jYWxlKCJlbiIsIHtudW1lcmljOiB0cnVlfSkudG9TdHJpbmcoKSBy
ZXR1cm5zICJ0cnVlIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtlbi11
LWtuwrspIHRvIGJlIHRydWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBuZXcgSW50
bC5Mb2NhbGUoImVuIiwge251bWVyaWM6IHRydWV9KS50b1N0cmluZygpIHJldHVybnMgInRydWUi
IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27CuykgdG8gYmUg
dHJ1ZScKIHRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itb3B0aW9ucy1yZWdpb24tdmFs
aWQuanM6CiAgIGRlZmF1bHQ6ICJUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7
cmVnaW9uOiBcIjU1NFwifSkudG9TdHJpbmcoKSByZXR1cm5zIFwiZW4tTlpcIiBFeHBlY3RlZCBT
YW1lVmFsdWUowqtlbi01NTTCuywgwqtlbi1OWsK7KSB0byBiZSB0cnVlIgogICBzdHJpY3QgbW9k
ZTogIlRlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCdlbicsIHtyZWdpb246IFwiNTU0XCJ9
KS50b1N0cmluZygpIHJldHVybnMgXCJlbi1OWlwiIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLTU1
NMK7LCDCq2VuLU5awrspIHRvIGJlIHRydWUiCiB0ZXN0L2ludGw0MDIvTG9jYWxlL2NvbnN0cnVj
dG9yLXRhZy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJz
bC1ST1pBSi1CSVNLRS0xOTk0IikudG9TdHJpbmcoKSByZXR1cm5zICJzbC0xOTk0LWJpc2tlLXJv
emFqIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtzbC1yb3phai1iaXNrZS0xOTk0wrssIMKrc2wtMTk5
NC1iaXNrZS1yb3phasK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJv
cjogbmV3IEludGwuTG9jYWxlKCJzbC1ST1pBSi1CSVNLRS0xOTk0IikudG9TdHJpbmcoKSByZXR1
cm5zICJzbC0xOTk0LWJpc2tlLXJvemFqIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtzbC1yb3phai1i
aXNrZS0xOTk0wrssIMKrc2wtMTk5NC1iaXNrZS1yb3phasK7KSB0byBiZSB0cnVlJwotdGVzdC9p
bnRsNDAyL0xvY2FsZS9nZXR0ZXJzLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBl
Y3RlZCBTYW1lVmFsdWUowqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgy
My1rZi10cnVlLWtuLWZhbHNlLW51LWxhdG7CuywgwqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1j
by1waG9uZWJrLWhjLWgyMy1rZi1rbi1mYWxzZS1udS1sYXRuwrspIHRvIGJlIHRydWUnCi0gIHN0
cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtkZS1MYXRuLURF
LXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1rZi10cnVlLWtuLWZhbHNlLW51LWxhdG7C
uywgwqtkZS1MYXRuLURFLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgyMy1rZi1rbi1mYWxz
ZS1udS1sYXRuwrspIHRvIGJlIHRydWUnCiB0ZXN0L2ludGw0MDIvTG9jYWxlL2xpa2VseS1zdWJ0
YWdzLWdyYW5kZmF0aGVyZWQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVk
IFNhbWVWYWx1ZSjCq2NtbsK7LCDCq3powrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAn
VGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtjbW7Cuywgwqt6aMK7KSB0byBiZSB0
cnVlJwo=
</data>
<flag name="review"
          id="424032"
          type_id="1"
          status="+"
          setter="ross.kirsling"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>408583</attachid>
            <date>2020-09-11 20:24:17 -0700</date>
            <delta_ts>2020-09-14 00:02:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216224-20200911202416.patch</filename>
            <type>text/plain</type>
            <size>39435</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY2OTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZmZlYjA0YWYwMTFhZGQ2ODBjMWI3MDQ1ZGQwYzMwZTYwOGNjNWQ0Li43OGQ4M2FhZDI5ZTI5MWE2
Yjc2M2I4ZTEwMGIwNDU5ZWNlMWM3Mzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24g
dHlwZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVW5pY29kZSBUZWNobmljYWwgU3RhbmRhcmQgIzM1IGRlZmluZXMgdGhhdCB1bmlj
b2RlIGV4dGVuc2lvbiB0eXBlJ3MgInRydWUiIHNob3VsZCBiZSBjb252ZXJnZWQgdG8gIiIuCisg
ICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBpdCBieSBleHRyYWN0aW5nIHVuaWNvZGUgZXh0
ZW5zaW9uIHN1YnRhZ3MgYW5kIHJlcGxhY2luZyAidHJ1ZSIgdG8gIiIuCisKKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGUuY3BwOgorICAgICAgICAoSlNDOjpMb2NhbGVJREJ1aWxkZXI6OnRv
Q2Fub25pY2FsKToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6a2V5d29yZFZhbHVlIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZTo6Y2FsZW5kYXIpOgorICAgICAgICAoSlNDOjpJ
bnRsTG9jYWxlOjpjYXNlRmlyc3QpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpjb2xsYXRp
b24pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlOjpob3VyQ3ljbGUpOgorICAgICAgICAoSlND
OjpJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0ZW0pOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
OjpudW1lcmljKToKKyAgICAgICAgKiBydW50aW1lL0ludGxMb2NhbGUuaDoKKyAgICAgICAgKiBy
dW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90
eXBlR2V0dGVyQ2FzZUZpcnN0KToKKyAgICAgICAgKEpTQzo6SW50bExvY2FsZVByb3RvdHlwZUdl
dHRlckNvbGxhdGlvbik6CisgICAgICAgIChKU0M6OkludGxMb2NhbGVQcm90b3R5cGVHZXR0ZXJI
b3VyQ3ljbGUpOgorICAgICAgICAoSlNDOjpJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyTnVtYmVy
aW5nU3lzdGVtKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjp1bmljb2RlRXh0ZW5zaW9uU3ViVGFncyk6CisgICAgICAgIChKU0M6OmNhbm9uaWNhbGl6
ZVVuaWNvZGVFeHRlbnNpb25zQWZ0ZXJJQ1VMb2NhbGVDYW5vbmljYWxpemF0aW9uKToKKyAgICAg
ICAgKEpTQzo6bGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRCk6CisgICAgICAgIChKU0M6OnJlc29sdmVM
b2NhbGUpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRp
bWUvSW50bE9iamVjdElubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29tcHV0ZVR3b0NoYXJhY3Rl
cnMxNkNvZGUpOgorICAgICAgICAqIHJ1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcDoKKyAgICAg
ICAgKEpTQzo6Y29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUpOiBEZWxldGVkLgorCiAyMDIwLTA5
LTEwICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
Y3VzdG9tR2V0dGVyU2V0dGVyRnVuY3Rpb25DYWxsIHNob3VsZCBoYXZlIHByb3BlciBleGNlcHRp
b24gY2hlY2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nIGIvU291cmNlL1dU
Ri9DaGFuZ2VMb2cKaW5kZXggODMxZWRlODAwN2Y5ZDYyYTU0YzM4MWU0Y2U4MWQxYjM1MDI4OTM4
NC4uMDllZjc4ZWQzOGU0ZWE5ZDRjYmY0MTg0YTRiYjM4MDQwYmQ4ZTNlMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dURi9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxNCBAQAorMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24gdHlw
ZSB2YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAgIChXVEY6OlN0cmluZ1ZpZXc6
OmNoYXJhY3RlckF0IGNvbnN0KToKKyAgICAgICAgKFdURjo6U3RyaW5nVmlldzo6b3BlcmF0b3Jb
XSBjb25zdCk6CisKIDIwMjAtMDktMTEgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFw
cGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIE1pZ3JhdGUgQ29yZVRleHQtc3BlY2lmaWMgY29k
ZSBmcm9tICoqKkNvY29hLm1tIHRvICoqKkNvcmVUZXh0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcAppbmRleCA0YWEyYTUwYmFmNjVmYTg5MTg5YTcw
MDkzMzQ0MmQ3NzNjODY3MzRjLi5lYmU3ODkxNDdkN2MwNTg2MDE3ZTQ3MDU5ZWMzZWZjZWNiODM0
ODFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmNwcApA
QCAtOTEsMTEgKzkxLDEyIEBAIENTdHJpbmcgTG9jYWxlSURCdWlsZGVyOjp0b0Nhbm9uaWNhbCgp
CiB7CiAgICAgQVNTRVJUKG1fYnVmZmVyLnNpemUoKSk7CiAKLSAgICBWZWN0b3I8Y2hhciwgMzI+
IHJlc3VsdDsKLSAgICBhdXRvIHN0YXR1cyA9IGNhbGxCdWZmZXJQcm9kdWNpbmdGdW5jdGlvbih1
bG9jX2Nhbm9uaWNhbGl6ZSwgbV9idWZmZXIuZGF0YSgpLCByZXN1bHQpOworICAgIFZlY3Rvcjxj
aGFyLCAzMj4gYnVmZmVyOworICAgIGF1dG8gc3RhdHVzID0gY2FsbEJ1ZmZlclByb2R1Y2luZ0Z1
bmN0aW9uKHVsb2NfY2Fub25pY2FsaXplLCBtX2J1ZmZlci5kYXRhKCksIGJ1ZmZlcik7CiAgICAg
aWYgKFVfRkFJTFVSRShzdGF0dXMpKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogCisgICAg
YXV0byByZXN1bHQgPSBjYW5vbmljYWxpemVVbmljb2RlRXh0ZW5zaW9uc0FmdGVySUNVTG9jYWxl
Q2Fub25pY2FsaXphdGlvbihXVEZNb3ZlKGJ1ZmZlcikpOwogICAgIHJldHVybiBDU3RyaW5nKHJl
c3VsdC5kYXRhKCksIHJlc3VsdC5zaXplKCkpOwogfQogCkBAIC0xODksOSArMTkwLDE1IEBAIFN0
cmluZyBJbnRsTG9jYWxlOjprZXl3b3JkVmFsdWUoQVNDSUlMaXRlcmFsIGtleSwgYm9vbCBpc0Jv
b2xlYW4pIGNvbnN0CiAgICAgICAgIHVsb2NfZ2V0S2V5d29yZFZhbHVlKG1fbG9jYWxlSUQuZGF0
YSgpLCBrZXkuY2hhcmFjdGVycygpLCBidWZmZXIuZGF0YSgpLCBidWZmZXJMZW5ndGggKyAxLCAm
c3RhdHVzKTsKICAgICB9CiAgICAgQVNTRVJUKFVfU1VDQ0VTUyhzdGF0dXMpKTsKLQotICAgIGNv
bnN0IGNoYXIqIHZhbHVlID0gIWlzQm9vbGVhbiA/IHVsb2NfdG9Vbmljb2RlTG9jYWxlVHlwZShr
ZXkuY2hhcmFjdGVycygpLCBidWZmZXIuZGF0YSgpKSA6IGJ1ZmZlci5kYXRhKCk7Ci0gICAgcmV0
dXJuIHZhbHVlID8gU3RyaW5nKHZhbHVlKSA6IGVtcHR5U3RyaW5nKCk7CisgICAgaWYgKGlzQm9v
bGVhbikKKyAgICAgICAgcmV0dXJuIFN0cmluZyhidWZmZXIuZGF0YSgpKTsKKyAgICBjb25zdCBj
aGFyKiB2YWx1ZSA9IHVsb2NfdG9Vbmljb2RlTG9jYWxlVHlwZShrZXkuY2hhcmFjdGVycygpLCBi
dWZmZXIuZGF0YSgpKTsKKyAgICBpZiAoIXZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbFN0cmlu
ZygpOworICAgIFN0cmluZyByZXN1bHQodmFsdWUpOworICAgIGlmIChyZXN1bHQgPT0gInRydWUi
X3MpCisgICAgICAgIHJldHVybiBlbXB0eVN0cmluZygpOworICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUKQEAgLTQwNCw0
MSArNDExLDQxIEBAIGNvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6cmVnaW9uKCkKIC8vIGh0dHBz
Oi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhbGVuZGFyCiBj
b25zdCBTdHJpbmcmIEludGxMb2NhbGU6OmNhbGVuZGFyKCkKIHsKLSAgICBpZiAobV9jYWxlbmRh
ci5pc051bGwoKSkKKyAgICBpZiAoIW1fY2FsZW5kYXIpCiAgICAgICAgIG1fY2FsZW5kYXIgPSBr
ZXl3b3JkVmFsdWUoImNhbGVuZGFyIl9zKTsKLSAgICByZXR1cm4gbV9jYWxlbmRhcjsKKyAgICBy
ZXR1cm4gbV9jYWxlbmRhci52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQw
Mi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5jYXNlRmlyc3QKIGNvbnN0IFN0cmluZyYgSW50
bExvY2FsZTo6Y2FzZUZpcnN0KCkKIHsKLSAgICBpZiAobV9jYXNlRmlyc3QuaXNOdWxsKCkpCisg
ICAgaWYgKCFtX2Nhc2VGaXJzdCkKICAgICAgICAgbV9jYXNlRmlyc3QgPSBrZXl3b3JkVmFsdWUo
ImNvbGNhc2VmaXJzdCJfcyk7Ci0gICAgcmV0dXJuIG1fY2FzZUZpcnN0OworICAgIHJldHVybiBt
X2Nhc2VGaXJzdC52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2Vj
LUludGwuTG9jYWxlLnByb3RvdHlwZS5jb2xsYXRpb24KIGNvbnN0IFN0cmluZyYgSW50bExvY2Fs
ZTo6Y29sbGF0aW9uKCkKIHsKLSAgICBpZiAobV9jb2xsYXRpb24uaXNOdWxsKCkpCisgICAgaWYg
KCFtX2NvbGxhdGlvbikKICAgICAgICAgbV9jb2xsYXRpb24gPSBrZXl3b3JkVmFsdWUoImNvbGxh
dGlvbiJfcyk7Ci0gICAgcmV0dXJuIG1fY29sbGF0aW9uOworICAgIHJldHVybiBtX2NvbGxhdGlv
bi52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9j
YWxlLnByb3RvdHlwZS5ob3VyQ3ljbGUKIGNvbnN0IFN0cmluZyYgSW50bExvY2FsZTo6aG91ckN5
Y2xlKCkKIHsKLSAgICBpZiAobV9ob3VyQ3ljbGUuaXNOdWxsKCkpCisgICAgaWYgKCFtX2hvdXJD
eWNsZSkKICAgICAgICAgbV9ob3VyQ3ljbGUgPSBrZXl3b3JkVmFsdWUoImhvdXJzIl9zKTsKLSAg
ICByZXR1cm4gbV9ob3VyQ3ljbGU7CisgICAgcmV0dXJuIG1faG91ckN5Y2xlLnZhbHVlKCk7CiB9
CiAKIC8vIGh0dHBzOi8vdGMzOS5lcy9lY21hNDAyLyNzZWMtSW50bC5Mb2NhbGUucHJvdG90eXBl
Lm51bWJlcmluZ1N5c3RlbQogY29uc3QgU3RyaW5nJiBJbnRsTG9jYWxlOjpudW1iZXJpbmdTeXN0
ZW0oKQogewotICAgIGlmIChtX251bWJlcmluZ1N5c3RlbS5pc051bGwoKSkKKyAgICBpZiAoIW1f
bnVtYmVyaW5nU3lzdGVtKQogICAgICAgICBtX251bWJlcmluZ1N5c3RlbSA9IGtleXdvcmRWYWx1
ZSgibnVtYmVycyJfcyk7Ci0gICAgcmV0dXJuIG1fbnVtYmVyaW5nU3lzdGVtOworICAgIHJldHVy
biBtX251bWJlcmluZ1N5c3RlbS52YWx1ZSgpOwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNt
YTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3RvdHlwZS5udW1lcmljCkBAIC00NDYsNyArNDUzLDcg
QEAgVHJpU3RhdGUgSW50bExvY2FsZTo6bnVtZXJpYygpCiB7CiAgICAgY29uc3RleHByIGJvb2wg
aXNCb29sZWFuID0gdHJ1ZTsKICAgICBpZiAobV9udW1lcmljID09IFRyaVN0YXRlOjpJbmRldGVy
bWluYXRlKQotICAgICAgICBtX251bWVyaWMgPSB0cmlTdGF0ZShrZXl3b3JkVmFsdWUoImNvbG51
bWVyaWMiX3MsIGlzQm9vbGVhbikgPT0gInllcyIpOworICAgICAgICBtX251bWVyaWMgPSB0cmlT
dGF0ZShrZXl3b3JkVmFsdWUoImNvbG51bWVyaWMiX3MsIGlzQm9vbGVhbikgPT0gInllcyJfcyk7
CiAgICAgcmV0dXJuIG1fbnVtZXJpYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bExvY2FsZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bExvY2FsZS5oCmluZGV4IGZmNTBlN2Y3NmE1MGE5YTNmMjc3OTYxNmQwYTkyYjU3NzRi
ZjE1YzQuLjFjNWRkMGEzODc3MWUwZTUyMjExM2U0ZGI4NDUwOTc5ODZiMjc3N2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxlLmgKQEAgLTYwLDYgKzYwLDcgQEAg
Y2xhc3MgSW50bExvY2FsZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBj
b25zdCBTdHJpbmcmIGxhbmd1YWdlKCk7CiAgICAgY29uc3QgU3RyaW5nJiBzY3JpcHQoKTsKICAg
ICBjb25zdCBTdHJpbmcmIHJlZ2lvbigpOworCiAgICAgY29uc3QgU3RyaW5nJiBjYWxlbmRhcigp
OwogICAgIGNvbnN0IFN0cmluZyYgY2FzZUZpcnN0KCk7CiAgICAgY29uc3QgU3RyaW5nJiBjb2xs
YXRpb24oKTsKQEAgLTgzLDExICs4NCwxMSBAQCBjbGFzcyBJbnRsTG9jYWxlIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFN0cmluZyBtX2xhbmd1YWdlOwogICAgIFN0cmlu
ZyBtX3NjcmlwdDsKICAgICBTdHJpbmcgbV9yZWdpb247Ci0gICAgU3RyaW5nIG1fY2FsZW5kYXI7
Ci0gICAgU3RyaW5nIG1fY2FzZUZpcnN0OwotICAgIFN0cmluZyBtX2NvbGxhdGlvbjsKLSAgICBT
dHJpbmcgbV9ob3VyQ3ljbGU7Ci0gICAgU3RyaW5nIG1fbnVtYmVyaW5nU3lzdGVtOworICAgIE9w
dGlvbmFsPFN0cmluZz4gbV9jYWxlbmRhcjsKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1fY2FzZUZp
cnN0OworICAgIE9wdGlvbmFsPFN0cmluZz4gbV9jb2xsYXRpb247CisgICAgT3B0aW9uYWw8U3Ry
aW5nPiBtX2hvdXJDeWNsZTsKKyAgICBPcHRpb25hbDxTdHJpbmc+IG1fbnVtYmVyaW5nU3lzdGVt
OwogICAgIFRyaVN0YXRlIG1fbnVtZXJpYyB7IFRyaVN0YXRlOjpJbmRldGVybWluYXRlIH07CiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTG9jYWxl
UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQ
cm90b3R5cGUuY3BwCmluZGV4IDRhOGI4NDM5OGViMDg1YjE2NjA0ZmU0MTQ5YmUxNTY4ODZkZDc5
OGQuLjgwZTA3MDUwM2RlYzkyMWI2NDJhNzdlNDJhNzk1MDcyMTg4MjZmYmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxMb2NhbGVQcm90b3R5cGUuY3Bw
CkBAIC0xNjYsNyArMTY2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9j
YWxlUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIoSlNHbG9iYWxPYmplY3QqIGcKICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkludGwuTG9jYWxlLnBy
b3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5p
dGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjYWxlbmRhciA9
IGxvY2FsZS0+Y2FsZW5kYXIoKTsKLSAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShjYWxlbmRhci5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmco
dm0sIGNhbGVuZGFyKSkpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6
ZW5jb2RlKGNhbGVuZGFyLmlzTnVsbCgpID8ganNVbmRlZmluZWQoKSA6IGpzU3RyaW5nKHZtLCBj
YWxlbmRhcikpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxv
Y2FsZS5wcm90b3R5cGUuY2FzZUZpcnN0CkBAIC0xODAsNyArMTgwLDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVyQ2FzZUZpcnN0KEpTR2xv
YmFsT2JqZWN0KgogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmNhc2VGaXJzdCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCiAgICAg
Y29uc3QgU3RyaW5nJiBjYXNlRmlyc3QgPSBsb2NhbGUtPmNhc2VGaXJzdCgpOwotICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNhc2VGaXJzdC5pc0VtcHR5KCkg
PyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhc2VGaXJzdCkpKTsKKyAgICBSRUxFQVNF
X0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShjYXNlRmlyc3QuaXNOdWxsKCkgPyBq
c1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGNhc2VGaXJzdCkpKTsKIH0KIAogLy8gaHR0cHM6
Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUuY29sbGF0aW9uCkBA
IC0xOTQsNyArMTk0LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxl
UHJvdG90eXBlR2V0dGVyQ29sbGF0aW9uKEpTR2xvYmFsT2JqZWN0KgogICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90
eXBlLmNvbGxhdGlvbiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlh
bGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCiAgICAgY29uc3QgU3RyaW5nJiBjb2xsYXRpb24gPSBs
b2NhbGUtPmNvbGxhdGlvbigpOwotICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGNvbGxhdGlvbi5pc0VtcHR5KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmco
dm0sIGNvbGxhdGlvbikpKTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6
OmVuY29kZShjb2xsYXRpb24uaXNOdWxsKCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0s
IGNvbGxhdGlvbikpKTsKIH0KIAogLy8gaHR0cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRs
LkxvY2FsZS5wcm90b3R5cGUuaG91ckN5Y2xlCkBAIC0yMDgsNyArMjA4LDcgQEAgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBJbnRsTG9jYWxlUHJvdG90eXBlR2V0dGVySG91ckN5Y2xlKEpT
R2xvYmFsT2JqZWN0KgogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiSW50bC5Mb2NhbGUucHJvdG90eXBlLmhvdXJDeWNsZSBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhbiBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBMb2NhbGUiX3MpOwogCiAg
ICAgY29uc3QgU3RyaW5nJiBob3VyQ3ljbGUgPSBsb2NhbGUtPmhvdXJDeWNsZSgpOwotICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGhvdXJDeWNsZS5pc0VtcHR5
KCkgPyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGhvdXJDeWNsZSkpKTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShob3VyQ3ljbGUuaXNOdWxsKCkg
PyBqc1VuZGVmaW5lZCgpIDoganNTdHJpbmcodm0sIGhvdXJDeWNsZSkpKTsKIH0KIAogLy8gaHR0
cHM6Ly90YzM5LmVzL2VjbWE0MDIvI3NlYy1JbnRsLkxvY2FsZS5wcm90b3R5cGUubnVtZXJpYwpA
QCAtMjM1LDcgKzIzNSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSW50bExvY2Fs
ZVByb3RvdHlwZUdldHRlck51bWJlcmluZ1N5c3RlbShKU0dsb2JhbE9iCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJJbnRsLkxvY2FsZS5wcm90
b3R5cGUubnVtYmVyaW5nU3lzdGVtIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGFuIG9iamVj
dCBpbml0aWFsaXplZCBhcyBhIExvY2FsZSJfcyk7CiAKICAgICBjb25zdCBTdHJpbmcmIG51bWJl
cmluZ1N5c3RlbSA9IGxvY2FsZS0+bnVtYmVyaW5nU3lzdGVtKCk7Ci0gICAgUkVMRUFTRV9BTkRf
UkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUobnVtYmVyaW5nU3lzdGVtLmlzRW1wdHkoKSA/
IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgbnVtYmVyaW5nU3lzdGVtKSkpOworICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKG51bWJlcmluZ1N5c3RlbS5p
c051bGwoKSA/IGpzVW5kZWZpbmVkKCkgOiBqc1N0cmluZyh2bSwgbnVtYmVyaW5nU3lzdGVtKSkp
OwogfQogCiAvLyBodHRwczovL3RjMzkuZXMvZWNtYTQwMi8jc2VjLUludGwuTG9jYWxlLnByb3Rv
dHlwZS5sYW5ndWFnZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0
LmNwcAppbmRleCAzMDFiZGQxM2ViNjcwM2EzOThkZGU2NGQ0YzQzODVhNDExMGUxZjA0Li4xYzZi
ZDJmMTc5NDc2MGRiYjIyN2JmNGMwNDg4MTBhMGRhMmZmNDdjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMTkwLDYgKzE5MCw0NyBAQCBTdHJ1
Y3R1cmUqIEludGxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xv
YmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZsYWdz
KSwgaW5mbygpKTsKIH0KIAorc3RhdGljIFZlY3RvcjxTdHJpbmdWaWV3PiB1bmljb2RlRXh0ZW5z
aW9uU3ViVGFncyhTdHJpbmdWaWV3IGV4dGVuc2lvbikKK3sKKyAgICAvLyBVbmljb2RlRXh0ZW5z
aW9uU3VidGFncyAoZXh0ZW5zaW9uKQorICAgIC8vIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNt
YTQwMi8jc2VjLXVuaWNvZGVleHRlbnNpb25zdWJ0YWdzCisKKyAgICBhdXRvIGV4dGVuc2lvbkxl
bmd0aCA9IGV4dGVuc2lvbi5sZW5ndGgoKTsKKyAgICBpZiAoZXh0ZW5zaW9uTGVuZ3RoIDwgMykK
KyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFZlY3RvcjxTdHJpbmdWaWV3PiBzdWJ0YWdzOwor
ICAgIHNpemVfdCBzdWJ0YWdTdGFydCA9IDM7IC8vIFNraXAgaW5pdGlhbCAtdS0uCisgICAgc2l6
ZV90IHZhbHVlU3RhcnQgPSAzOworICAgIGJvb2wgaXNMZWFkaW5nID0gdHJ1ZTsKKyAgICBmb3Ig
KHNpemVfdCBpbmRleCA9IHN1YnRhZ1N0YXJ0OyBpbmRleCA8IGV4dGVuc2lvbkxlbmd0aDsgKytp
bmRleCkgeworICAgICAgICBpZiAoZXh0ZW5zaW9uW2luZGV4XSA9PSAnLScpIHsKKyAgICAgICAg
ICAgIGlmIChpbmRleCAtIHN1YnRhZ1N0YXJ0ID09IDIpIHsKKyAgICAgICAgICAgICAgICAvLyBU
YWcgaXMgYSBrZXksIGZpcnN0IGFwcGVuZCBwcmlvciBrZXkncyB2YWx1ZSBpZiB0aGVyZSBpcyBv
bmUuCisgICAgICAgICAgICAgICAgaWYgKHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCA+IDEpCisg
ICAgICAgICAgICAgICAgICAgIHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcodmFs
dWVTdGFydCwgc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0IC0gMSkpOworICAgICAgICAgICAgICAg
IHN1YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcoc3VidGFnU3RhcnQsIGluZGV4IC0g
c3VidGFnU3RhcnQpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZVN0YXJ0ID0gaW5kZXggKyAxOwor
ICAgICAgICAgICAgICAgIGlzTGVhZGluZyA9IGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlm
IChpc0xlYWRpbmcpIHsKKyAgICAgICAgICAgICAgICAvLyBMZWFkaW5nIHN1YnRhZ3MgYmVmb3Jl
IGZpcnN0IGtleS4KKyAgICAgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNpb24uc3Vi
c3RyaW5nKHN1YnRhZ1N0YXJ0LCBpbmRleCAtIHN1YnRhZ1N0YXJ0KSk7CisgICAgICAgICAgICAg
ICAgdmFsdWVTdGFydCA9IGluZGV4ICsgMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN1
YnRhZ1N0YXJ0ID0gaW5kZXggKyAxOworICAgICAgICB9CisgICAgfQorICAgIGlmIChleHRlbnNp
b25MZW5ndGggLSBzdWJ0YWdTdGFydCA9PSAyKSB7CisgICAgICAgIC8vIFRyYWlsaW5nIGFuIGV4
dGVuc2lvbiBrZXksIGZpcnN0IGFwcGVuZCBwcmlvciBrZXkncyB2YWx1ZSBpZiB0aGVyZSBpcyBv
bmUuCisgICAgICAgIGlmIChzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgPiAxKQorICAgICAgICAg
ICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmluZyh2YWx1ZVN0YXJ0LCBzdWJ0YWdT
dGFydCAtIHZhbHVlU3RhcnQgLSAxKSk7CisgICAgICAgIHZhbHVlU3RhcnQgPSBzdWJ0YWdTdGFy
dDsKKyAgICB9CisgICAgLy8gQXBwZW5kIGZpbmFsIGtleSdzIHZhbHVlLgorICAgIHN1YnRhZ3Mu
YXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcodmFsdWVTdGFydCwgZXh0ZW5zaW9uTGVuZ3RoIC0g
dmFsdWVTdGFydCkpOworICAgIHJldHVybiBzdWJ0YWdzOworfQorCiBWZWN0b3I8Y2hhciwgMzI+
IGxvY2FsZUlEQnVmZmVyRm9yTGFuZ3VhZ2VUYWcoY29uc3QgQ1N0cmluZyYgdGFnKQogewogICAg
IGlmICghdGFnLmxlbmd0aCgpKQpAQCAtMjEyLDYgKzI1Myw3MSBAQCBWZWN0b3I8Y2hhciwgMzI+
IGxvY2FsZUlEQnVmZmVyRm9yTGFuZ3VhZ2VUYWcoY29uc3QgQ1N0cmluZyYgdGFnKQogICAgIHJl
dHVybiBidWZmZXI7CiB9CiAKK1ZlY3RvcjxjaGFyLCAzMj4gY2Fub25pY2FsaXplVW5pY29kZUV4
dGVuc2lvbnNBZnRlcklDVUxvY2FsZUNhbm9uaWNhbGl6YXRpb24oVmVjdG9yPGNoYXIsIDMyPiYm
IGJ1ZmZlcikKK3sKKyAgICBTdHJpbmdWaWV3IGxvY2FsZShidWZmZXIuZGF0YSgpLCBidWZmZXIu
c2l6ZSgpKTsKKyAgICBBU1NFUlQobG9jYWxlLmlzOEJpdCgpKTsKKyAgICBzaXplX3QgZXh0ZW5z
aW9uSW5kZXggPSBsb2NhbGUuZmluZCgiLXUtIik7CisgICAgaWYgKGV4dGVuc2lvbkluZGV4ID09
IG5vdEZvdW5kKQorICAgICAgICByZXR1cm4gV1RGTW92ZShidWZmZXIpOworCisgICAgLy8gU2lu
Y2UgSUNVJ3MgY2Fub25pY2FsaXphdGlvbiBpcyBpbmNvbXBsZXRlLCB3ZSBuZWVkIHRvIHBlcmZv
cm0gc29tZSBvZiBjYW5vbmljYWxpemF0aW9uIGhlcmUuCisgICAgc2l6ZV90IGV4dGVuc2lvbkxl
bmd0aCA9IGxvY2FsZS5sZW5ndGgoKSAtIGV4dGVuc2lvbkluZGV4OworICAgIHNpemVfdCBlbmQg
PSBleHRlbnNpb25JbmRleCArIDM7CisgICAgd2hpbGUgKGVuZCA8IGxvY2FsZS5sZW5ndGgoKSkg
eworICAgICAgICBlbmQgPSBsb2NhbGUuZmluZCgnLScsIGVuZCk7CisgICAgICAgIGlmIChlbmQg
PT0gbm90Rm91bmQpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgLy8gRm91bmQgYW5vdGhl
ciBzaW5nbGV0b24uCisgICAgICAgIGlmIChlbmQgKyAyIDwgbG9jYWxlLmxlbmd0aCgpICYmIGxv
Y2FsZVtlbmQgKyAyXSA9PSAnLScpIHsKKyAgICAgICAgICAgIGV4dGVuc2lvbkxlbmd0aCA9IGVu
ZCAtIGV4dGVuc2lvbkluZGV4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgZW5kKys7CisgICAgfQorCisgICAgVmVjdG9yPGNoYXIsIDMyPiByZXN1bHQ7CisgICAgcmVz
dWx0LmFwcGVuZChidWZmZXIuZGF0YSgpLCBleHRlbnNpb25JbmRleCArIDIpOyAvLyAiLXUiIGlz
IGluY2x1ZGVkLgorICAgIFN0cmluZ1ZpZXcgZXh0ZW5zaW9uID0gbG9jYWxlLnN1YnN0cmluZyhl
eHRlbnNpb25JbmRleCwgZXh0ZW5zaW9uTGVuZ3RoKTsKKyAgICBBU1NFUlQoZXh0ZW5zaW9uLmlz
OEJpdCgpKTsKKyAgICBhdXRvIHN1YnRhZ3MgPSB1bmljb2RlRXh0ZW5zaW9uU3ViVGFncyhleHRl
bnNpb24pOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHN1YnRhZ3Muc2l6
ZSgpOykgeworICAgICAgICBhdXRvIHN1YnRhZyA9IHN1YnRhZ3NbaW5kZXhdOworICAgICAgICBB
U1NFUlQoc3VidGFnLmlzOEJpdCgpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgnLScpOworICAg
ICAgICByZXN1bHQuYXBwZW5kKHN1YnRhZy5jaGFyYWN0ZXJzOCgpLCBzdWJ0YWcubGVuZ3RoKCkp
OworCisgICAgICAgIGlmIChzdWJ0YWcubGVuZ3RoKCkgIT0gMikgeworICAgICAgICAgICAgKytp
bmRleDsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIEFTU0VSVChz
dWJ0YWcubGVuZ3RoKCkgPT0gMik7CisKKyAgICAgICAgLy8gVGhpcyBpcyB1bmljb2RlIGV4dGVu
c2lvbiBrZXkuCisgICAgICAgIHVuc2lnbmVkIHZhbHVlSW5kZXhTdGFydCA9IGluZGV4ICsgMTsK
KyAgICAgICAgdW5zaWduZWQgdmFsdWVJbmRleEVuZCA9IHZhbHVlSW5kZXhTdGFydDsKKyAgICAg
ICAgZm9yICg7IHZhbHVlSW5kZXhFbmQgPCBzdWJ0YWdzLnNpemUoKTsgKyt2YWx1ZUluZGV4RW5k
KSB7CisgICAgICAgICAgICBpZiAoc3VidGFnc1t2YWx1ZUluZGV4RW5kXS5sZW5ndGgoKSA9PSAy
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIC8vIFt2YWx1ZUlu
ZGV4U3RhcnQsIHZhbHVlSW5kZXhFbmQpIGlzIHZhbHVlIG9mIHRoaXMgdW5pY29kZSBleHRlbnNp
b24uIElmIHRoZXJlIGlzIG5vIHZhbHVlLCB2YWx1ZUluZGV4U3RhcnQgPT0gdmFsdWVJbmRleEVu
ZC4KKworICAgICAgICBmb3IgKHVuc2lnbmVkIHZhbHVlSW5kZXggPSB2YWx1ZUluZGV4U3RhcnQ7
IHZhbHVlSW5kZXggPCB2YWx1ZUluZGV4RW5kOyArK3ZhbHVlSW5kZXgpIHsKKyAgICAgICAgICAg
IGF1dG8gdmFsdWUgPSBzdWJ0YWdzW3ZhbHVlSW5kZXhdOworICAgICAgICAgICAgaWYgKHZhbHVl
ICE9ICJ0cnVlIl9zKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnLScpOworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUuY2hhcmFjdGVyczgoKSwgdmFsdWUubGVu
Z3RoKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGluZGV4ID0gdmFsdWVJ
bmRleEVuZDsKKyAgICB9CisKKyAgICB1bnNpZ25lZCByZW1haW5pbmdTdGFydCA9IGV4dGVuc2lv
bkluZGV4ICsgZXh0ZW5zaW9uTGVuZ3RoOworICAgIHVuc2lnbmVkIHJlbWFpbmluZ0xlbmd0aCA9
IGJ1ZmZlci5zaXplKCkgLSByZW1haW5pbmdTdGFydDsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZl
ci5kYXRhKCkgKyByZW1haW5pbmdTdGFydCwgcmVtYWluaW5nTGVuZ3RoKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiBTdHJpbmcgbGFuZ3VhZ2VUYWdGb3JMb2NhbGVJRChjb25zdCBjaGFyKiBs
b2NhbGVJRCwgYm9vbCBpc0ltbW9ydGFsKQogewogICAgIFZlY3RvcjxjaGFyLCAzMj4gYnVmZmVy
OwpAQCAtMjE5LDEyICszMjUsMTUgQEAgU3RyaW5nIGxhbmd1YWdlVGFnRm9yTG9jYWxlSUQoY29u
c3QgY2hhciogbG9jYWxlSUQsIGJvb2wgaXNJbW1vcnRhbCkKICAgICBpZiAoVV9GQUlMVVJFKHN0
YXR1cykpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIC8vIFRoaXMgaXMgdXNlZCB0
byBzdG9yZSBpbnRvIHN0YXRpYyB2YXJpYWJsZXMgdGhhdCBtYXkgYmUgc2hhcmVkIGFjcm9zcyBK
U0MgZXhlY3V0aW9uIHRocmVhZHMuCi0gICAgLy8gVGhpcyBtdXN0IGJlIGltbW9ydGFsIHRvIG1h
a2UgY29uY3VycmVudCByZWYvZGVyZWYgc2FmZS4KLSAgICBpZiAoaXNJbW1vcnRhbCkKLSAgICAg
ICAgcmV0dXJuIFN0cmluZ0ltcGw6OmNyZWF0ZVN0YXRpY1N0cmluZ0ltcGwoYnVmZmVyLmRhdGEo
KSwgYnVmZmVyLnNpemUoKSk7CisgICAgYXV0byBjcmVhdGVSZXN1bHQgPSBbJl0oVmVjdG9yPGNo
YXIsIDMyPiYmIGJ1ZmZlcikgLT4gU3RyaW5nIHsKKyAgICAgICAgLy8gVGhpcyBpcyB1c2VkIHRv
IHN0b3JlIGludG8gc3RhdGljIHZhcmlhYmxlcyB0aGF0IG1heSBiZSBzaGFyZWQgYWNyb3NzIEpT
QyBleGVjdXRpb24gdGhyZWFkcy4KKyAgICAgICAgLy8gVGhpcyBtdXN0IGJlIGltbW9ydGFsIHRv
IG1ha2UgY29uY3VycmVudCByZWYvZGVyZWYgc2FmZS4KKyAgICAgICAgaWYgKGlzSW1tb3J0YWwp
CisgICAgICAgICAgICByZXR1cm4gU3RyaW5nSW1wbDo6Y3JlYXRlU3RhdGljU3RyaW5nSW1wbChi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICAgICAgcmV0dXJuIFN0cmluZyhidWZm
ZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICB9OwogCi0gICAgcmV0dXJuIFN0cmluZyhi
dWZmZXIuZGF0YSgpLCBidWZmZXIuc2l6ZSgpKTsKKyAgICByZXR1cm4gY3JlYXRlUmVzdWx0KGNh
bm9uaWNhbGl6ZVVuaWNvZGVFeHRlbnNpb25zQWZ0ZXJJQ1VMb2NhbGVDYW5vbmljYWxpemF0aW9u
KFdURk1vdmUoYnVmZmVyKSkpOwogfQogCiAvLyBFbnN1cmUgd2UgaGF2ZSB4eC1aWiB3aGVuZXZl
ciB3ZSBoYXZlIHh4LVl5eXktWlouCkBAIC02OTQsNDUgKzgwMyw2IEBAIHN0YXRpYyBNYXRjaGVy
UmVzdWx0IGJlc3RGaXRNYXRjaGVyKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0
IEhhc2hTZXQ8CiAgICAgcmV0dXJuIGxvb2t1cE1hdGNoZXIoZ2xvYmFsT2JqZWN0LCBhdmFpbGFi
bGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKTsKIH0KIAotc3RhdGljIHZvaWQgdW5pY29kZUV4
dGVuc2lvblN1YlRhZ3MoY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIFZlY3RvcjxTdHJpbmc+JiBz
dWJ0YWdzKQotewotICAgIC8vIFVuaWNvZGVFeHRlbnNpb25TdWJ0YWdzIChleHRlbnNpb24pCi0g
ICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hNDAyLyNzZWMtdW5pY29kZWV4dGVuc2lv
bnN1YnRhZ3MKLQotICAgIGF1dG8gZXh0ZW5zaW9uTGVuZ3RoID0gZXh0ZW5zaW9uLmxlbmd0aCgp
OwotICAgIGlmIChleHRlbnNpb25MZW5ndGggPCAzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBz
aXplX3Qgc3VidGFnU3RhcnQgPSAzOyAvLyBTa2lwIGluaXRpYWwgLXUtLgotICAgIHNpemVfdCB2
YWx1ZVN0YXJ0ID0gMzsKLSAgICBib29sIGlzTGVhZGluZyA9IHRydWU7Ci0gICAgZm9yIChzaXpl
X3QgaW5kZXggPSBzdWJ0YWdTdGFydDsgaW5kZXggPCBleHRlbnNpb25MZW5ndGg7ICsraW5kZXgp
IHsKLSAgICAgICAgaWYgKGV4dGVuc2lvbltpbmRleF0gPT0gJy0nKSB7Ci0gICAgICAgICAgICBp
ZiAoaW5kZXggLSBzdWJ0YWdTdGFydCA9PSAyKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGFnIGlz
IGEga2V5LCBmaXJzdCBhcHBlbmQgcHJpb3Iga2V5J3MgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgot
ICAgICAgICAgICAgICAgIGlmIChzdWJ0YWdTdGFydCAtIHZhbHVlU3RhcnQgPiAxKQotICAgICAg
ICAgICAgICAgICAgICBzdWJ0YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVlU3Rh
cnQsIHN1YnRhZ1N0YXJ0IC0gdmFsdWVTdGFydCAtIDEpKTsKLSAgICAgICAgICAgICAgICBzdWJ0
YWdzLmFwcGVuZChleHRlbnNpb24uc3Vic3RyaW5nKHN1YnRhZ1N0YXJ0LCBpbmRleCAtIHN1YnRh
Z1N0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgdmFsdWVTdGFydCA9IGluZGV4ICsgMTsKLSAgICAg
ICAgICAgICAgICBpc0xlYWRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoaXNM
ZWFkaW5nKSB7Ci0gICAgICAgICAgICAgICAgLy8gTGVhZGluZyBzdWJ0YWdzIGJlZm9yZSBmaXJz
dCBrZXkuCi0gICAgICAgICAgICAgICAgc3VidGFncy5hcHBlbmQoZXh0ZW5zaW9uLnN1YnN0cmlu
ZyhzdWJ0YWdTdGFydCwgaW5kZXggLSBzdWJ0YWdTdGFydCkpOwotICAgICAgICAgICAgICAgIHZh
bHVlU3RhcnQgPSBpbmRleCArIDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzdWJ0YWdT
dGFydCA9IGluZGV4ICsgMTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoZXh0ZW5zaW9uTGVu
Z3RoIC0gc3VidGFnU3RhcnQgPT0gMikgewotICAgICAgICAvLyBUcmFpbGluZyBhbiBleHRlbnNp
b24ga2V5LCBmaXJzdCBhcHBlbmQgcHJpb3Iga2V5J3MgdmFsdWUgaWYgdGhlcmUgaXMgb25lLgot
ICAgICAgICBpZiAoc3VidGFnU3RhcnQgLSB2YWx1ZVN0YXJ0ID4gMSkKLSAgICAgICAgICAgIHN1
YnRhZ3MuYXBwZW5kKGV4dGVuc2lvbi5zdWJzdHJpbmcodmFsdWVTdGFydCwgc3VidGFnU3RhcnQg
LSB2YWx1ZVN0YXJ0IC0gMSkpOwotICAgICAgICB2YWx1ZVN0YXJ0ID0gc3VidGFnU3RhcnQ7Ci0g
ICAgfQotICAgIC8vIEFwcGVuZCBmaW5hbCBrZXkncyB2YWx1ZS4KLSAgICBzdWJ0YWdzLmFwcGVu
ZChleHRlbnNpb24uc3Vic3RyaW5nKHZhbHVlU3RhcnQsIGV4dGVuc2lvbkxlbmd0aCAtIHZhbHVl
U3RhcnQpKTsKLX0KLQogY29uc3RleHByIEFTQ0lJTGl0ZXJhbCByZWxldmFudEV4dGVuc2lvbktl
eVN0cmluZyhSZWxldmFudEV4dGVuc2lvbktleSBrZXkpCiB7CiAgICAgc3dpdGNoIChrZXkpIHsK
QEAgLTc1Niw5ICs4MjYsOSBAQCBSZXNvbHZlZExvY2FsZSByZXNvbHZlTG9jYWxlKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPgogCiAgICAgU3RyaW5n
IGZvdW5kTG9jYWxlID0gbWF0Y2hlclJlc3VsdC5sb2NhbGU7CiAKLSAgICBWZWN0b3I8U3RyaW5n
PiBleHRlbnNpb25TdWJ0YWdzOworICAgIFZlY3RvcjxTdHJpbmdWaWV3PiBleHRlbnNpb25TdWJ0
YWdzOwogICAgIGlmICghbWF0Y2hlclJlc3VsdC5leHRlbnNpb24uaXNOdWxsKCkpCi0gICAgICAg
IHVuaWNvZGVFeHRlbnNpb25TdWJUYWdzKG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uLCBleHRlbnNp
b25TdWJ0YWdzKTsKKyAgICAgICAgZXh0ZW5zaW9uU3VidGFncyA9IHVuaWNvZGVFeHRlbnNpb25T
dWJUYWdzKG1hdGNoZXJSZXN1bHQuZXh0ZW5zaW9uKTsKIAogICAgIFJlc29sdmVkTG9jYWxlIHJl
c29sdmVkOwogICAgIHJlc29sdmVkLmRhdGFMb2NhbGUgPSBmb3VuZExvY2FsZTsKQEAgLTc3Niw5
ICs4NDYsMTAgQEAgUmVzb2x2ZWRMb2NhbGUgcmVzb2x2ZUxvY2FsZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBIYXNoU2V0PFN0cmluZz4KICAgICAgICAgICAgIHNpemVfdCBr
ZXlQb3MgPSBleHRlbnNpb25TdWJ0YWdzLmZpbmQoa2V5U3RyaW5nKTsKICAgICAgICAgICAgIGlm
IChrZXlQb3MgIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgICAgICBpZiAoa2V5UG9zICsgMSA8
IGV4dGVuc2lvblN1YnRhZ3Muc2l6ZSgpICYmIGV4dGVuc2lvblN1YnRhZ3Nba2V5UG9zICsgMV0u
bGVuZ3RoKCkgPiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgcmVxdWVz
dGVkVmFsdWUgPSBleHRlbnNpb25TdWJ0YWdzW2tleVBvcyArIDFdOwotICAgICAgICAgICAgICAg
ICAgICBpZiAoa2V5TG9jYWxlRGF0YS5jb250YWlucyhyZXF1ZXN0ZWRWYWx1ZSkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcmVxdWVzdGVkVmFsdWU7CisgICAgICAgICAgICAg
ICAgICAgIFN0cmluZ1ZpZXcgcmVxdWVzdGVkVmFsdWUgPSBleHRlbnNpb25TdWJ0YWdzW2tleVBv
cyArIDFdOworICAgICAgICAgICAgICAgICAgICBhdXRvIGRhdGFQb3MgPSBrZXlMb2NhbGVEYXRh
LmZpbmQocmVxdWVzdGVkVmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVBvcyAh
PSBub3RGb3VuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBrZXlMb2NhbGVE
YXRhW2RhdGFQb3NdOwogICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkRXh0ZW5zaW9u
QWRkaXRpb24gPSBtYWtlU3RyaW5nKCctJywga2V5U3RyaW5nLCAnLScsIHZhbHVlKTsKICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5TG9jYWxlRGF0
YS5jb250YWlucygidHJ1ZSJfcykpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lu
dGxPYmplY3QuaAppbmRleCBlYjE5MGQ3NmU2MzQ1ZWQzNmJiYjM1Y2I2NWYwMTUwMjg5ZDMwMWE2
Li5hOTU4MjA5NjM2Y2Q5NTY5NmNkODlhMGExMmFjYjI5Y2NlNGE0MTA2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xMTMsNiArMTEzLDggQEAgU3Ry
aW5nIGJlc3RBdmFpbGFibGVMb2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVM
b2NhbGVzLCBjb25zdCBTdHJpbmcKIHRlbXBsYXRlPHR5cGVuYW1lIFByZWRpY2F0ZT4gU3RyaW5n
IGJlc3RBdmFpbGFibGVMb2NhbGUoY29uc3QgU3RyaW5nJiByZXF1ZXN0ZWRMb2NhbGUsIFByZWRp
Y2F0ZSk7CiBWZWN0b3I8U3RyaW5nPiBudW1iZXJpbmdTeXN0ZW1zRm9yTG9jYWxlKGNvbnN0IFN0
cmluZyYgbG9jYWxlKTsKIAorVmVjdG9yPGNoYXIsIDMyPiBjYW5vbmljYWxpemVVbmljb2RlRXh0
ZW5zaW9uc0FmdGVySUNVTG9jYWxlQ2Fub25pY2FsaXphdGlvbihWZWN0b3I8Y2hhciwgMzI+JiYp
OworCiBib29sIGlzVW5pY29kZUxvY2FsZUlkZW50aWZpZXJUeXBlKFN0cmluZ1ZpZXcpOwogCiBi
b29sIGlzVW5pY29kZUxhbmd1YWdlU3VidGFnKFN0cmluZ1ZpZXcpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdElubGluZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3RJbmxpbmVzLmgKaW5kZXggZThlM2Y5MTBi
MDhmMTRjZjkzZDk3ZjYxNjJkMmNiYjRhMDcwZDY5ZS4uNDhlMzQwZDIyMTgzZDU2YWIxYjYxZDQ2
MzFmZTFhZmZmOTNiYjFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdElubGluZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0SW5saW5lcy5oCkBAIC0zNCw2ICszNCwxMiBAQAogCiBuYW1lc3BhY2UgSlND
IHsKIAordGVtcGxhdGU8dHlwZW5hbWUgU3RyaW5nVHlwZT4KK3N0YXRpYyBjb25zdGV4cHIgdWlu
dDMyX3QgY29tcHV0ZVR3b0NoYXJhY3RlcnMxNkNvZGUoY29uc3QgU3RyaW5nVHlwZSYgc3RyaW5n
KQoreworICAgIHJldHVybiBzdGF0aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nLmNoYXJhY3RlckF0
KDApKSB8IChzdGF0aWNfY2FzdDx1aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHN0cmlu
Zy5jaGFyYWN0ZXJBdCgxKSkpIDw8IDE2KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgUHJlZGlj
YXRlPiBTdHJpbmcgYmVzdEF2YWlsYWJsZUxvY2FsZShjb25zdCBTdHJpbmcmIGxvY2FsZSwgUHJl
ZGljYXRlIHByZWRpY2F0ZSkKIHsKICAgICAvLyBCZXN0QXZhaWxhYmxlTG9jYWxlIChhdmFpbGFi
bGVMb2NhbGVzLCBsb2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TdHJpbmdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nUHJvdG90eXBlLmNwcAppbmRleCAxZWYyY2IzMTVhNjA5ZDg1NDM5MmIyNDUzZjVjNDZj
MjU2Yzg0MjdkLi4xYTJkYzVmNThhMjkyMjQyNjAyYWYwMzMxYzRkYjE0M2EzODYzYjc5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAK
QEAgLTE1NDEsMTIgKzE1NDEsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmlu
Z1Byb3RvRnVuY0xvY2FsZUNvbXBhcmUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbAogICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbGxhdG9yLT5jb21wYXJlU3Ry
aW5ncyhnbG9iYWxPYmplY3QsIHN0cmluZywgdGhhdCkpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5h
bWUgU3RyaW5nVHlwZT4KLXN0YXRpYyBjb25zdGV4cHIgdWludDMyX3QgY29tcHV0ZVR3b0NoYXJh
Y3RlcnMxNkNvZGUoY29uc3QgU3RyaW5nVHlwZSYgc3RyaW5nKQotewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1aW50MTZfdD4oc3RyaW5nLmNoYXJhY3RlckF0KDApKSB8IChzdGF0aWNfY2FzdDx1
aW50MzJfdD4oc3RhdGljX2Nhc3Q8dWludDE2X3Q+KHN0cmluZy5jaGFyYWN0ZXJBdCgxKSkpIDw8
IDE2KTsKLX0KLQogZW51bSBjbGFzcyBDYXNlQ29udmVyc2lvbk1vZGUgewogICAgIFVwcGVyLAog
ICAgIExvd2VyLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3Lmgg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA5MjBmYmZiN2QxZjNkMDk0
NTZmZjQxOTMzNDRiMjAxMjE0YTBlMDFlLi44NDAyNGVlNzRjZTk1MTVhMzEyNzFmZjJkYjk4MjAx
ZjQyMWJkNjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtNzksNiArNzksNyBAQCBj
bGFzcyBTdHJpbmdWaWV3IGZpbmFsIHsKICAgICBleHBsaWNpdCBvcGVyYXRvciBib29sKCkgY29u
c3Q7CiAgICAgYm9vbCBpc051bGwoKSBjb25zdDsKIAorICAgIFVDaGFyIGNoYXJhY3RlckF0KHVu
c2lnbmVkIGluZGV4KSBjb25zdDsKICAgICBVQ2hhciBvcGVyYXRvcltdKHVuc2lnbmVkIGluZGV4
KSBjb25zdDsKIAogICAgIGNsYXNzIENvZGVVbml0czsKQEAgLTQ5OSw3ICs1MDAsNyBAQCBpbmxp
bmUgU3RyaW5nVmlldyBTdHJpbmdWaWV3OjpzdWJzdHJpbmcodW5zaWduZWQgc3RhcnQsIHVuc2ln
bmVkIGxlbmd0aCkgY29uc3QKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1pbmxpbmUgVUNoYXIg
U3RyaW5nVmlldzo6b3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK2lubGluZSBVQ2hh
ciBTdHJpbmdWaWV3OjpjaGFyYWN0ZXJBdCh1bnNpZ25lZCBpbmRleCkgY29uc3QKIHsKICAgICBB
U1NFUlQoaW5kZXggPCBsZW5ndGgoKSk7CiAgICAgaWYgKGlzOEJpdCgpKQpAQCAtNTA3LDYgKzUw
OCwxMSBAQCBpbmxpbmUgVUNoYXIgU3RyaW5nVmlldzo6b3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRl
eCkgY29uc3QKICAgICByZXR1cm4gY2hhcmFjdGVyczE2KClbaW5kZXhdOwogfQogCitpbmxpbmUg
VUNoYXIgU3RyaW5nVmlldzo6b3BlcmF0b3JbXSh1bnNpZ25lZCBpbmRleCkgY29uc3QKK3sKKyAg
ICByZXR1cm4gY2hhcmFjdGVyQXQoaW5kZXgpOworfQorCiBpbmxpbmUgYm9vbCBTdHJpbmdWaWV3
Ojpjb250YWlucyhVQ2hhciBjaGFyYWN0ZXIpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGZpbmQoY2hh
cmFjdGVyKSAhPSBub3RGb3VuZDsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMjVmYzgyYTFlNTc0NjBlODAzYWY2ZDgyOTBjMWRhY2VkNWU5
ZTZjOC4uYzI1OGUzZDZlYzkzNDljYWU1ZWZlODEzODRiOGFiNWM5Nzg1ZTY5MiAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MyBAQAorMjAyMC0wOS0xMSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisg
ICAgICAgIFtKU0NdIENhbm9uaWNhbGl6ZSAidHJ1ZSIgdW5pY29kZSBleHRlbnNpb24gdHlwZSB2
YWx1ZSB0byAiIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjE2MjI0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBzdHJlc3MvaW50bC1jb2xsYXRvci1jby1leHRlbnNpb24uanM6CisgICAgICAgIChleHBs
aWNpdFRydWVCZWZvcmVJQ1U2Nyk6IERlbGV0ZWQuCisgICAgICAgICogc3RyZXNzL2ludGwtY29s
bGF0b3IuanM6CisgICAgICAgIChzaG91bGRCZS50ZXN0Q29sbGF0b3IuSW50bC5Db2xsYXRvcik6
CisgICAgICAgIChleHBsaWNpdFRydWVCZWZvcmVJQ1U2Nyk6IERlbGV0ZWQuCisgICAgICAgICog
c3RyZXNzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanM6CisgICAgICAgICogc3RyZXNzL2ludGwtbG9j
YWxlLmpzOgorICAgICAgICAqIHN0cmVzcy9pbnRsLW51bWJlcmZvcm1hdC5qczoKKyAgICAgICAg
KiBzdHJlc3MvaW50bC1vYmplY3QuanM6CisgICAgICAgICogc3RyZXNzL2ludGwtcGx1cmFscnVs
ZXMuanM6CisgICAgICAgICogc3RyZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzOgorICAg
ICAgICAqIHRlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWw6CisKIDIwMjAtMDktMTEgIEFsZXhleSBT
aHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIFVwZGF0ZSB0ZXN0MjYy
IHRvIGNvbW1pdCAzMjM5MDViNzBlNjQKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwt
Y29sbGF0b3ItY28tZXh0ZW5zaW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1jb2xsYXRvci1j
by1leHRlbnNpb24uanMKaW5kZXggYzE0ODc4NDBiNDlhZTliZWNmYTNlNGRiZmU1NzE4ZTVhMjBm
NjQ3ZS4uNTIxMjFiM2NhNzUyNWE2ZDEzNWY5OGZkNjU1YmE3NTg4OGEzNWQ5MyAxMDA2NDQKLS0t
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1jb2xsYXRvci1jby1leHRlbnNpb24uanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1jb2xsYXRvci1jby1leHRlbnNpb24uanMKQEAgLTE1LDEwICsxNSw2
IEBAIGZ1bmN0aW9uIHNob3VsZEJlQXJyYXkoYWN0dWFsLCBleHBlY3RlZCkgewogICAgIH0KIH0K
IAotZnVuY3Rpb24gZXhwbGljaXRUcnVlQmVmb3JlSUNVNjcoKSB7Ci0gICAgcmV0dXJuICR2bS5p
Y3VWZXJzaW9uKCkgPCA2NyA/ICctdHJ1ZScgOiAnJzsKLX0KLQogc2hvdWxkQmVBcnJheShbIkFF
IiwgIlx1MDBDNCJdLnNvcnQobmV3IEludGwuQ29sbGF0b3IoImRlIiwge3VzYWdlOiAic29ydCJ9
KS5jb21wYXJlKSwgWyJcdTAwQzQiLCAiQUUiXSk7CiBzaG91bGRCZUFycmF5KFsiQUUiLCAiXHUw
MEM0Il0uc29ydChuZXcgSW50bC5Db2xsYXRvcigiZGUiLCB7dXNhZ2U6ICJzZWFyY2gifSkuY29t
cGFyZSksIFsiQUUiLCAiXHUwMEM0Il0pOwogc2hvdWxkQmUobmV3IEludGwuQ29sbGF0b3IoImRl
Iiwge3VzYWdlOiAic29ydCJ9KS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUsICJkZSIpOwpAQCAt
NDAsOCArMzYsOCBAQCBmdW5jdGlvbiBleHBsaWNpdFRydWVCZWZvcmVJQ1U2NygpIHsKIAogc2hv
dWxkQmUobmV3IEludGwuQ29sbGF0b3IoImVuLVVTLXgtdHdhaW4iLCB7dXNhZ2U6ICJzZWFyY2gi
fSkucmVzb2x2ZWRPcHRpb25zKCkubG9jYWxlLCAiZW4tVVMiKTsKIAotc2hvdWxkQmUobmV3IElu
dGwuQ29sbGF0b3IoImRlLXUta24iLCB7dXNhZ2U6ICJzb3J0In0pLnJlc29sdmVkT3B0aW9ucygp
LmxvY2FsZSwgImRlLXUta24iICsgZXhwbGljaXRUcnVlQmVmb3JlSUNVNjcoKSk7Ci1zaG91bGRC
ZShuZXcgSW50bC5Db2xsYXRvcigiZGUtdS1rbiIsIHt1c2FnZTogInNlYXJjaCJ9KS5yZXNvbHZl
ZE9wdGlvbnMoKS5sb2NhbGUsICJkZS11LWtuIiArIGV4cGxpY2l0VHJ1ZUJlZm9yZUlDVTY3KCkp
Oworc2hvdWxkQmUobmV3IEludGwuQ29sbGF0b3IoImRlLXUta24iLCB7dXNhZ2U6ICJzb3J0In0p
LnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSwgImRlLXUta24iKTsKK3Nob3VsZEJlKG5ldyBJbnRs
LkNvbGxhdG9yKCJkZS11LWtuIiwge3VzYWdlOiAic2VhcmNoIn0pLnJlc29sdmVkT3B0aW9ucygp
LmxvY2FsZSwgImRlLXUta24iKTsKIAogc2hvdWxkQmVBcnJheShbImEiLCAiYWUiLCAiw6QiLCAi
w6YiXS5zb3J0KG5ldyBJbnRsLkNvbGxhdG9yKCJkZS11LWNvLXBob25lYmsiKS5jb21wYXJlKSwg
WyJhIiwgImFlIiwgIsOkIiwgIsOmIl0pOwogc2hvdWxkQmVBcnJheShbImEiLCAiYWUiLCAiw6Qi
LCAiw6YiXS5zb3J0KG5ldyBJbnRsLkNvbGxhdG9yKCJkZSIpLmNvbXBhcmUpLCBbImEiLCAiw6Qi
LCAiYWUiLCAiw6YiXSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWNvbGxhdG9y
LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1jb2xsYXRvci5qcwppbmRleCBhMmU0MDUwMTRmNTU1
NTAyODU2ZTIxZDBmYmQ1MGM0YWY5NmFjMDQ4Li5iMGMxMjg3MWMyZDg1OGQxMjVlZjI5MzkwM2Nl
NDdiYWZiMzI3NzAwIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWNvbGxhdG9yLmpz
CisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtY29sbGF0b3IuanMKQEAgLTE5LDEwICsxOSw2IEBA
IGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewogICAgICAgICB0aHJvdyBu
ZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOwogfQogCi1mdW5jdGlvbiBl
eHBsaWNpdFRydWVCZWZvcmVJQ1U2NygpIHsKLSAgICByZXR1cm4gJHZtLmljdVZlcnNpb24oKSA8
IDY3ID8gJy10cnVlJyA6ICcnOwotfQotCiAvLyAxMC4xIFRoZSBJbnRsLkNvbGxhdG9yIENvbnN0
cnVjdG9yCiAKIC8vIFRoZSBJbnRsLkNvbGxhdG9yIGNvbnN0cnVjdG9yIGlzIGEgc3RhbmRhcmQg
YnVpbHQtaW4gcHJvcGVydHkgb2YgdGhlIEludGwgb2JqZWN0LgpAQCAtODUsOCArODEsOCBAQCBm
dW5jdGlvbiB0ZXN0Q29sbGF0b3IoY29sbGF0b3IsIHBvc3NpYmxlT3B0aW9uRGlmZmVyZW5jZXMp
IHsKIHNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdkZS11LWNvLXBob25lYmsn
KSwgW3tsb2NhbGU6ICdkZS11LWNvLXBob25lYmsnLCBjb2xsYXRpb246ICdwaG9uZWJrJ30sIHts
b2NhbGU6ICdkZSd9XSksIHRydWUpOwogCiAvLyBUaGUgJ2tuJyBrZXkgaXMgcHJvY2Vzc2VkIGNv
cnJlY3RseS4KLXNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdlbi11LWtuJyks
IFt7bG9jYWxlOiAnZW4tdS1rbicgKyBleHBsaWNpdFRydWVCZWZvcmVJQ1U2NygpLCBudW1lcmlj
OiB0cnVlfV0pLCB0cnVlKTsKLXNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdl
bi11LWtuLXRydWUnKSwgW3tsb2NhbGU6ICdlbi11LWtuJyArIGV4cGxpY2l0VHJ1ZUJlZm9yZUlD
VTY3KCksIG51bWVyaWM6IHRydWV9XSksIHRydWUpOworc2hvdWxkQmUodGVzdENvbGxhdG9yKElu
dGwuQ29sbGF0b3IoJ2VuLXUta24nKSwgW3tsb2NhbGU6ICdlbi11LWtuJywgbnVtZXJpYzogdHJ1
ZX1dKSwgdHJ1ZSk7CitzaG91bGRCZSh0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4tdS1r
bi10cnVlJyksIFt7bG9jYWxlOiAnZW4tdS1rbicsIG51bWVyaWM6IHRydWV9XSksIHRydWUpOwog
c2hvdWxkQmUodGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2VuLXUta24tZmFsc2UnKSwgW3ts
b2NhbGU6ICdlbi11LWtuLWZhbHNlJywgbnVtZXJpYzogZmFsc2V9XSksIHRydWUpOwogc2hvdWxk
QmUodGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2VuLXUta24tYWJjZCcpLCBbe2xvY2FsZTog
J2VuJ31dKSwgdHJ1ZSk7CiAKQEAgLTE1MCw3ICsxNDYsNyBAQCBmdW5jdGlvbiB0ZXN0Q29sbGF0
b3IoY29sbGF0b3IsIHBvc3NpYmxlT3B0aW9uRGlmZmVyZW5jZXMpIHsKIC8vIE9wdGlvbnMgb3Zl
cnJpZGUgdGhlIGxhbmd1YWdlIHRhZy4KIHNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxh
dG9yKCdlbi11LWtuLXRydWUnLCB7bnVtZXJpYzogZmFsc2V9KSwgW3tsb2NhbGU6ICdlbicsIG51
bWVyaWM6IGZhbHNlfV0pLCB0cnVlKTsKIHNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxh
dG9yKCdlbi11LWtuLWZhbHNlJywge251bWVyaWM6IHRydWV9KSwgW3tsb2NhbGU6ICdlbicsIG51
bWVyaWM6IHRydWV9XSksIHRydWUpOwotc2hvdWxkQmUodGVzdENvbGxhdG9yKEludGwuQ29sbGF0
b3IoJ2VuLXUta24tdHJ1ZScsIHtudW1lcmljOiB0cnVlfSksIFt7bG9jYWxlOiAnZW4tdS1rbicg
KyBleHBsaWNpdFRydWVCZWZvcmVJQ1U2NygpLCBudW1lcmljOiB0cnVlfV0pLCB0cnVlKTsKK3No
b3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdlbi11LWtuLXRydWUnLCB7bnVtZXJp
YzogdHJ1ZX0pLCBbe2xvY2FsZTogJ2VuLXUta24nLCBudW1lcmljOiB0cnVlfV0pLCB0cnVlKTsK
IHNob3VsZEJlKHRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdlbi11LWtuLWZhbHNlJywge251
bWVyaWM6IGZhbHNlfSksIFt7bG9jYWxlOiAnZW4tdS1rbi1mYWxzZScsIG51bWVyaWM6IGZhbHNl
fV0pLCB0cnVlKTsKIAogLy8gT3B0aW9ucyBhbmQgZXh0ZW5zaW9uIGtleXMgYXJlIHByb2Nlc3Nl
ZCBjb3JyZWN0bHkuCkBAIC0xOTIsNyArMTg4LDcgQEAgZnVuY3Rpb24gdGVzdENvbGxhdG9yKGNv
bGxhdG9yLCBwb3NzaWJsZU9wdGlvbkRpZmZlcmVuY2VzKSB7CiAgICAgSlNPTi5zdHJpbmdpZnko
SW50bC5Db2xsYXRvci5zdXBwb3J0ZWRMb2NhbGVzT2YoJ0VuLWxhVG4tdXMtdmFyaUFudC1mT09i
YXItMWFiYy1VLWtuLXRSdWUtQS1hYS1hYWEteC1SRVNFUlZFRCcpKSwKICAgICAkdm0uaWN1VmVy
c2lvbigpID49IDY3CiAgICAgICAgID8gJ1siZW4tTGF0bi1VUy0xYWJjLWZvb2Jhci12YXJpYW50
LWEtYWEtYWFhLXUta24teC1yZXNlcnZlZCJdJwotICAgICAgICA6ICdbImVuLUxhdG4tVVMtdmFy
aWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtuLXRydWUteC1yZXNlcnZlZCJdJworICAgICAg
ICA6ICdbImVuLUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtuLXgtcmVz
ZXJ2ZWQiXScKICk7CiAvLyBUaHJvd3Mgb24gcHJvYmxlbXMgd2l0aCBsZW5ndGgsIGdldCwgb3Ig
dG9TdHJpbmcuCiBzaG91bGRUaHJvdygoKSA9PiBJbnRsLkNvbGxhdG9yLnN1cHBvcnRlZExvY2Fs
ZXNPZihPYmplY3QuY3JlYXRlKG51bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhyb3cgRXJyb3Io
KSB9IH0gfSkpLCBFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLWRhdGV0
aW1lZm9ybWF0LmpzIGIvSlNUZXN0cy9zdHJlc3MvaW50bC1kYXRldGltZWZvcm1hdC5qcwppbmRl
eCBiYzE0ZTE5OTgxODhhZWI0MTUxMGRlZGRhOTVkYWUxM2M1NmJjM2FlLi4wNjFmNzk3NzIwMjYx
OTg5YTYwOWRlMGE5ZDdlMmFhZTIxNmI1YTQxIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9p
bnRsLWRhdGV0aW1lZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtZGF0ZXRpbWVm
b3JtYXQuanMKQEAgLTg0LDcgKzg0LDcgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JUeXBlKSB7CiAgICAgSlNPTi5zdHJpbmdpZnkoSW50bC5EYXRlVGltZUZvcm1hdC5zdXBwb3J0
ZWRMb2NhbGVzT2YoJ0VuLWxhVG4tdXMtdmFyaUFudC1mT09iYXItMWFiYy1VLWtuLXRSdWUtQS1h
YS1hYWEteC1SRVNFUlZFRCcpKSwKICAgICAkdm0uaWN1VmVyc2lvbigpID49IDY3CiAgICAgICAg
ID8gJ1siZW4tTGF0bi1VUy0xYWJjLWZvb2Jhci12YXJpYW50LWEtYWEtYWFhLXUta24teC1yZXNl
cnZlZCJdJwotICAgICAgICA6ICdbImVuLUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFh
LWFhYS11LWtuLXRydWUteC1yZXNlcnZlZCJdJworICAgICAgICA6ICdbImVuLUxhdG4tVVMtdmFy
aWFudC1mb29iYXItMWFiYy1hLWFhLWFhYS11LWtuLXgtcmVzZXJ2ZWQiXScKICk7CiAvLyBUaHJv
d3Mgb24gcHJvYmxlbXMgd2l0aCBsZW5ndGgsIGdldCwgb3IgdG9TdHJpbmcuCiBzaG91bGRUaHJv
dygoKSA9PiBJbnRsLkRhdGVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihPYmplY3QuY3Jl
YXRlKG51bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSks
IEVycm9yKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbG9jYWxlLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvaW50bC1sb2NhbGUuanMKaW5kZXggMDRlNTI1OTc5ZmRjMGM0ODQ0ZDEzMzBi
ZTZkNTRkM2QzNWMwYzUxZC4uZGVmMTA4YzQwODQ1NzViOTQyZGIxNDYyMzY0ZWRiNDNkNmJhZGQ5
MCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1sb2NhbGUuanMKKysrIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1sb2NhbGUuanMKQEAgLTE1MCw3ICsxNTAsNyBAQCBmdW5jdGlvbiBzaG91
bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKICAgICBuZXcgSW50bC5Mb2NhbGUoJ0VuLWxhVG4t
dXMtdmFyaUFudC1mT09iYXItMWFiYy1VLWtuLXRSdWUtQS1hYS1hYWEteC1SRVNFUlZFRCcpLnRv
U3RyaW5nKCksCiAgICAgJHZtLmljdVZlcnNpb24oKSA+PSA2NwogICAgICAgICA/ICdlbi1MYXRu
LVVTLTFhYmMtZm9vYmFyLXZhcmlhbnQtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkJwotICAgICAg
ICA6ICdlbi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1hYWEtdS1rbi10cnVlLXgt
cmVzZXJ2ZWQnCisgICAgICAgIDogJ2VuLUxhdG4tVVMtdmFyaWFudC1mb29iYXItMWFiYy1hLWFh
LWFhYS11LWtuLXgtcmVzZXJ2ZWQnCiApOwogc2hvdWxkQmUobmV3IEludGwuTG9jYWxlKCdjZWwt
Z2F1bGlzaCcsIHsgc2NyaXB0OiAnQXJhYicsIG51bWJlcmluZ1N5c3RlbTogJ2d1anInIH0pLnRv
U3RyaW5nKCksICd4dGctQXJhYi11LW51LWd1anIteC1jZWwtZ2F1bGlzaCcpOwogc2hvdWxkQmUo
bmV3IEludGwuTG9jYWxlKCdlbi1MYXRuLVVTLXUtY2EtZ3JlZ29yeS1jby1waG9uZWJrLWhjLWgx
Mi1rZi11cHBlci1rbi1mYWxzZS1udS1sYXRuJykudG9TdHJpbmcoKSwgJ2VuLUxhdG4tVVMtdS1j
YS1ncmVnb3J5LWNvLXBob25lYmstaGMtaDEyLWtmLXVwcGVyLWtuLWZhbHNlLW51LWxhdG4nKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtbnVtYmVyZm9ybWF0LmpzIGIvSlNUZXN0
cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKaW5kZXggZmFjYWRjYTBlMzE1NGU2ZWVhZmIy
MzEyZWRhZmI5OTNiZTNiZjYxOS4uNTZjNTc3NDE3NjQ1ZjRjYmJiOGQxMTZjZDE1YzIzNjc0ZWVk
MDlmOSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKKysr
IGIvSlNUZXN0cy9zdHJlc3MvaW50bC1udW1iZXJmb3JtYXQuanMKQEAgLTIyNSw3ICsyMjUsNyBA
QCBmdW5jdGlvbiB0ZXN0TnVtYmVyRm9ybWF0KG51bWJlckZvcm1hdCwgcG9zc2libGVEaWZmZXJl
bmNlcykgewogICAgIEpTT04uc3RyaW5naWZ5KEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExv
Y2FsZXNPZignRW4tbGFUbi11cy12YXJpQW50LWZPT2Jhci0xYWJjLVUta24tdFJ1ZS1BLWFhLWFh
YS14LVJFU0VSVkVEJykpLAogICAgICR2bS5pY3VWZXJzaW9uKCkgPj0gNjcKICAgICAgICAgPyAn
WyJlbi1MYXRuLVVTLTFhYmMtZm9vYmFyLXZhcmlhbnQtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVk
Il0nCi0gICAgICAgIDogJ1siZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFh
LXUta24tdHJ1ZS14LXJlc2VydmVkIl0nCisgICAgICAgIDogJ1siZW4tTGF0bi1VUy12YXJpYW50
LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24teC1yZXNlcnZlZCJdJwogKTsKIC8vIFRocm93cyBv
biBwcm9ibGVtcyB3aXRoIGxlbmd0aCwgZ2V0LCBvciB0b1N0cmluZy4KIHNob3VsZFRocm93KCgp
ID0+IEludGwuTnVtYmVyRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZihPYmplY3QuY3JlYXRlKG51
bGwsIHsgbGVuZ3RoOiB7IGdldCgpIHsgdGhyb3cgbmV3IEVycm9yKCk7IH0gfSB9KSksIEVycm9y
KTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2ludGwtb2JqZWN0LmpzIGIvSlNUZXN0cy9z
dHJlc3MvaW50bC1vYmplY3QuanMKaW5kZXggNDBjZmY2NjEyZDE0YmJhNThlZTFhOWFhNzllMDhl
ZWVmZWJhZGUwZC4uMDM5MGY4YzczOGY4ZTE4YTFjZjVlNjJlMGJjODI3ZTlkNDQzZmIwYSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1vYmplY3QuanMKKysrIGIvSlNUZXN0cy9zdHJl
c3MvaW50bC1vYmplY3QuanMKQEAgLTcyLDcgKzcyLDcgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3co
ZnVuYywgZXJyb3JUeXBlKSB7CiAgICAgSlNPTi5zdHJpbmdpZnkoSW50bC5nZXRDYW5vbmljYWxM
b2NhbGVzKCdFbi1sYVRuLXVzLXZhcmlBbnQtZk9PYmFyLTFhYmMtVS1rbi10UnVlLUEtYWEtYWFh
LXgtUkVTRVJWRUQnKSksCiAgICAgJHZtLmljdVZlcnNpb24oKSA+PSA2NwogICAgICAgICA/ICdb
ImVuLUxhdG4tVVMtMWFiYy1mb29iYXItdmFyaWFudC1hLWFhLWFhYS11LWtuLXgtcmVzZXJ2ZWQi
XScKLSAgICAgICAgOiAnWyJlbi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1hYWEt
dS1rbi10cnVlLXgtcmVzZXJ2ZWQiXScKKyAgICAgICAgOiAnWyJlbi1MYXRuLVVTLXZhcmlhbnQt
Zm9vYmFyLTFhYmMtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkIl0nCiApOwogLy8gVGhyb3dzIG9u
IHByb2JsZW1zIHdpdGggbGVuZ3RoLCBnZXQsIG9yIHRvU3RyaW5nLgogc2hvdWxkVGhyb3coKCkg
PT4gSW50bC5nZXRDYW5vbmljYWxMb2NhbGVzKE9iamVjdC5jcmVhdGUobnVsbCwgeyBsZW5ndGg6
IHsgZ2V0KCkgeyB0aHJvdyBuZXcgRXJyb3IoKTsgfSB9IH0pKSwgRXJyb3IpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtcGx1cmFscnVsZXMuanMKaW5kZXggYTEzNmQ0NmY0MWFkNDI3ZTVkZGJjMWFhYTY0NGExMWY1
MTI1NDNiYy4uYTQzOGVhY2UxZDY2NDdhMDlkNDE2NTYyNjcxMjFjY2Q0ODUwNWUwNyAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvaW50bC1wbHVyYWxydWxlcy5qcworKysgYi9KU1Rlc3RzL3N0
cmVzcy9pbnRsLXBsdXJhbHJ1bGVzLmpzCkBAIC04Myw3ICs4Myw3IEBAIGZ1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewogICAgIEpTT04uc3RyaW5naWZ5KEludGwuUGx1cmFs
UnVsZXMuc3VwcG9ydGVkTG9jYWxlc09mKCdFbi1sYVRuLXVzLXZhcmlBbnQtZk9PYmFyLTFhYmMt
VS1rbi10UnVlLUEtYWEtYWFhLXgtUkVTRVJWRUQnKSksCiAgICAgJHZtLmljdVZlcnNpb24oKSA+
PSA2NwogICAgICAgICA/ICdbImVuLUxhdG4tVVMtMWFiYy1mb29iYXItdmFyaWFudC1hLWFhLWFh
YS11LWtuLXgtcmVzZXJ2ZWQiXScKLSAgICAgICAgOiAnWyJlbi1MYXRuLVVTLXZhcmlhbnQtZm9v
YmFyLTFhYmMtYS1hYS1hYWEtdS1rbi10cnVlLXgtcmVzZXJ2ZWQiXScKKyAgICAgICAgOiAnWyJl
bi1MYXRuLVVTLXZhcmlhbnQtZm9vYmFyLTFhYmMtYS1hYS1hYWEtdS1rbi14LXJlc2VydmVkIl0n
CiApOwogLy8gVGhyb3dzIG9uIHByb2JsZW1zIHdpdGggbGVuZ3RoLCBnZXQsIG9yIHRvU3RyaW5n
Lgogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5QbHVyYWxSdWxlcy5zdXBwb3J0ZWRMb2NhbGVzT2Yo
T2JqZWN0LmNyZWF0ZShudWxsLCB7IGxlbmd0aDogeyBnZXQoKSB7IHRocm93IG5ldyBFcnJvcigp
OyB9IH0gfSkpLCBFcnJvcik7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9pbnRsLXJlbGF0
aXZldGltZWZvcm1hdC5qcyBiL0pTVGVzdHMvc3RyZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0
LmpzCmluZGV4IDQ1MDI4MmZiOTEzM2JjNzQzM2JlY2Q2ZjEyZjE2N2VjZDZlMjMyYTguLjhjMTQz
NDZkMGJmNzNiODA2NjM3MTVkZTU4NTYyMzhiOWU1MDczMTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMv
c3RyZXNzL2ludGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL2lu
dGwtcmVsYXRpdmV0aW1lZm9ybWF0LmpzCkBAIC02Nyw3ICs2Nyw3IEBAIGZ1bmN0aW9uIHNob3Vs
ZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewogICAgIEpTT04uc3RyaW5naWZ5KEludGwuUmVsYXRp
dmVUaW1lRm9ybWF0LnN1cHBvcnRlZExvY2FsZXNPZignRW4tbGFUbi11cy12YXJpQW50LWZPT2Jh
ci0xYWJjLVUta24tdFJ1ZS1BLWFhLWFhYS14LVJFU0VSVkVEJykpLAogICAgICR2bS5pY3VWZXJz
aW9uKCkgPj0gNjcKICAgICAgICAgPyAnWyJlbi1MYXRuLVVTLTFhYmMtZm9vYmFyLXZhcmlhbnQt
YS1hYS1hYWEtdS1rbi14LXJlc2VydmVkIl0nCi0gICAgICAgIDogJ1siZW4tTGF0bi1VUy12YXJp
YW50LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24tdHJ1ZS14LXJlc2VydmVkIl0nCisgICAgICAg
IDogJ1siZW4tTGF0bi1VUy12YXJpYW50LWZvb2Jhci0xYWJjLWEtYWEtYWFhLXUta24teC1yZXNl
cnZlZCJdJwogKTsKIAogc2hvdWxkVGhyb3coKCkgPT4gSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQu
c3VwcG9ydGVkTG9jYWxlc09mKCduby1ib2snKSwgUmFuZ2VFcnJvcik7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0
YXRpb25zLnlhbWwKaW5kZXggMjUzMjEwNzYxYjViMDcxNWY3NWRmYmViMjAxOGE4ZTJhZDhlYTg0
NS4uOTk1MDM4OWIwNjI4NWIxODc1ZTNjMzUxMWU2MWUyYzIwODM2YmFjMCAxMDA2NDQKLS0tIGEv
SlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9l
eHBlY3RhdGlvbnMueWFtbApAQCAtMTQ1Miw5ICsxNDUyLDYgQEAgdGVzdC9idWlsdC1pbnMvVHlw
ZWRBcnJheUNvbnN0cnVjdG9ycy9vZi9jdXN0b20tY3Rvci5qczoKIHRlc3QvYnVpbHQtaW5zL1R5
cGVkQXJyYXlDb25zdHJ1Y3RvcnMvb2YvbmV3LWluc3RhbmNlLXVzaW5nLWN1c3RvbS1jdG9yLmpz
OgogICBkZWZhdWx0OiAnVHlwZUVycm9yOiBUeXBlZEFycmF5Lm9mIHJlcXVpcmVzIGl0cyB0aGlz
IGFyZ3VtZW50IHRvIHN1YmNsYXNzIGEgVHlwZWRBcnJheSBjb25zdHJ1Y3RvciAoVGVzdGluZyB3
aXRoIEZsb2F0NjRBcnJheS4pJwogICBzdHJpY3QgbW9kZTogJ1R5cGVFcnJvcjogVHlwZWRBcnJh
eS5vZiByZXF1aXJlcyBpdHMgdGhpcyBhcmd1bWVudCB0byBzdWJjbGFzcyBhIFR5cGVkQXJyYXkg
Y29uc3RydWN0b3IgKFRlc3Rpbmcgd2l0aCBGbG9hdDY0QXJyYXkuKScKLXRlc3QvaW50bDQwMi9D
b2xsYXRvci9taXNzaW5nLXVuaWNvZGUtZXh0LXZhbHVlLWRlZmF1bHRzLXRvLXRydWUuanM6Ci0g
IGRlZmF1bHQ6ICJUZXN0MjYyRXJyb3I6IFwia24tdHJ1ZVwiIGlzIHJldHVybmVkIGluIGxvY2Fs
ZSwgYnV0IHNob3VsZG4ndCBiZS4gRXhwZWN0ZWQgU2FtZVZhbHVlKMKrN8K7LCDCqy0xwrspIHRv
IGJlIHRydWUiCi0gIHN0cmljdCBtb2RlOiAiVGVzdDI2MkVycm9yOiBcImtuLXRydWVcIiBpcyBy
ZXR1cm5lZCBpbiBsb2NhbGUsIGJ1dCBzaG91bGRuJ3QgYmUuIEV4cGVjdGVkIFNhbWVWYWx1ZSjC
qzfCuywgwqstMcK7KSB0byBiZSB0cnVlIgogdGVzdC9pbnRsNDAyL0RhdGVUaW1lRm9ybWF0L3By
b3RvdHlwZS9mb3JtYXQvdGltZWRhdGVzdHlsZS1lbi5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogUmVzdWx0IGZvciBmdWxsIHdpdGgge30gRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMTQ6MTI6
NDcgUE0gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuywgwqsxNDoxMjo0NyBDb29yZGluYXRl
ZCBVbml2ZXJzYWwgVGltZcK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogUmVzdWx0IGZvciBmdWxsIHdpdGgge30gRXhwZWN0ZWQgU2FtZVZhbHVlKMKrMTQ6MTI6
NDcgUE0gQ29vcmRpbmF0ZWQgVW5pdmVyc2FsIFRpbWXCuywgwqsxNDoxMjo0NyBDb29yZGluYXRl
ZCBVbml2ZXJzYWwgVGltZcK7KSB0byBiZSB0cnVlJwpAQCAtMTQ5Nyw5ICsxNDk0LDYgQEAgdGVz
dC9pbnRsNDAyL0ludGwvZ2V0Q2Fub25pY2FsTG9jYWxlcy91bmljb2RlLWV4dC1jYW5vbmljYWxp
emUtcmVnaW9uLmpzOgogdGVzdC9pbnRsNDAyL0ludGwvZ2V0Q2Fub25pY2FsTG9jYWxlcy91bmlj
b2RlLWV4dC1jYW5vbmljYWxpemUtc3ViZGl2aXNpb24uanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYy
RXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZC1OTy11LXNkLW5vMjPCuywgwqt1bmQtTk8t
dS1zZC1ubzUwwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBF
eHBlY3RlZCBTYW1lVmFsdWUowqt1bmQtTk8tdS1zZC1ubzIzwrssIMKrdW5kLU5PLXUtc2Qtbm81
MMK7KSB0byBiZSB0cnVlJwotdGVzdC9pbnRsNDAyL0ludGwvZ2V0Q2Fub25pY2FsTG9jYWxlcy91
bmljb2RlLWV4dC1jYW5vbmljYWxpemUteWVzLXRvLXRydWUuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0
MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3VuZC11LWtiLXRydWXCuywgwqt1bmQtdS1r
YsK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrdW5kLXUta2ItdHJ1ZcK7LCDCq3VuZC11LWtiwrspIHRvIGJlIHRydWUnCiB0
ZXN0L2ludGw0MDIvSW50bC9nZXRDYW5vbmljYWxMb2NhbGVzL3VuaWNvZGUtZXh0LWtleS13aXRo
LWRpZ2l0LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUo
wqtlbi11LTBjLXllc8K7LCDCq2VuLXUtMGPCuykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6
ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUtMGMteWVzwrssIMKrZW4t
dS0wY8K7KSB0byBiZSB0cnVlJwpAQCAtMTUwOSwyMSArMTUwMywxMiBAQCB0ZXN0L2ludGw0MDIv
TG9jYWxlL2NvbnN0cnVjdG9yLWFwcGx5LW9wdGlvbnMtY2Fub25pY2FsaXplcy10d2ljZS5qczoK
IHRlc3QvaW50bDQwMi9Mb2NhbGUvY29uc3RydWN0b3Itbm9uLWlhbmEtY2Fub24uanM6CiAgIGRl
ZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgibW8iKS5tYXhpbWl6ZSgpLnRv
U3RyaW5nKCkgcmV0dXJucyAicm8tTGF0bi1STyIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrcm/Cuywg
wqtyby1MYXRuLVJPwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBuZXcgSW50bC5Mb2NhbGUoIm1vIikubWF4aW1pemUoKS50b1N0cmluZygpIHJldHVybnMgInJv
LUxhdG4tUk8iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq3JvwrssIMKrcm8tTGF0bi1ST8K7KSB0byBi
ZSB0cnVlJwotdGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1vcHRpb25zLW51bWVyaWMt
dW5kZWZpbmVkLmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUo
ImVuLXUta24tdHJ1ZSIsIHtudW1lcmljOiB1bmRlZmluZWR9KS50b1N0cmluZygpIHJldHVybnMg
ImVuLXUta24iIEV4cGVjdGVkIFNhbWVWYWx1ZSjCq2VuLXUta24tdHJ1ZcK7LCDCq2VuLXUta27C
uykgdG8gYmUgdHJ1ZScKLSAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxv
Y2FsZSgiZW4tdS1rbi10cnVlIiwge251bWVyaWM6IHVuZGVmaW5lZH0pLnRvU3RyaW5nKCkgcmV0
dXJucyAiZW4tdS1rbiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS1rbi10cnVlwrssIMKrZW4t
dS1rbsK7KSB0byBiZSB0cnVlJwotdGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci1vcHRp
b25zLW51bWVyaWMtdmFsaWQuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRs
LkxvY2FsZSgiZW4iLCB7bnVtZXJpYzogdHJ1ZX0pLnRvU3RyaW5nKCkgcmV0dXJucyAidHJ1ZSIg
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4tdS1rbi10cnVlwrssIMKrZW4tdS1rbsK7KSB0byBiZSB0
cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogbmV3IEludGwuTG9jYWxlKCJlbiIs
IHtudW1lcmljOiB0cnVlfSkudG9TdHJpbmcoKSByZXR1cm5zICJ0cnVlIiBFeHBlY3RlZCBTYW1l
VmFsdWUowqtlbi11LWtuLXRydWXCuywgwqtlbi11LWtuwrspIHRvIGJlIHRydWUnCiB0ZXN0L2lu
dGw0MDIvTG9jYWxlL2NvbnN0cnVjdG9yLW9wdGlvbnMtcmVnaW9uLXZhbGlkLmpzOgogICBkZWZh
dWx0OiAiVGVzdDI2MkVycm9yOiBuZXcgSW50bC5Mb2NhbGUoJ2VuJywge3JlZ2lvbjogXCI1NTRc
In0pLnRvU3RyaW5nKCkgcmV0dXJucyBcImVuLU5aXCIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZW4t
NTU0wrssIMKrZW4tTlrCuykgdG8gYmUgdHJ1ZSIKICAgc3RyaWN0IG1vZGU6ICJUZXN0MjYyRXJy
b3I6IG5ldyBJbnRsLkxvY2FsZSgnZW4nLCB7cmVnaW9uOiBcIjU1NFwifSkudG9TdHJpbmcoKSBy
ZXR1cm5zIFwiZW4tTlpcIiBFeHBlY3RlZCBTYW1lVmFsdWUowqtlbi01NTTCuywgwqtlbi1OWsK7
KSB0byBiZSB0cnVlIgogdGVzdC9pbnRsNDAyL0xvY2FsZS9jb25zdHJ1Y3Rvci10YWcuanM6CiAg
IGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxvY2FsZSgic2wtUk9aQUotQklTS0Ut
MTk5NCIpLnRvU3RyaW5nKCkgcmV0dXJucyAic2wtMTk5NC1iaXNrZS1yb3phaiIgRXhwZWN0ZWQg
U2FtZVZhbHVlKMKrc2wtcm96YWotYmlza2UtMTk5NMK7LCDCq3NsLTE5OTQtYmlza2Utcm96YWrC
uykgdG8gYmUgdHJ1ZScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJyb3I6IG5ldyBJbnRsLkxv
Y2FsZSgic2wtUk9aQUotQklTS0UtMTk5NCIpLnRvU3RyaW5nKCkgcmV0dXJucyAic2wtMTk5NC1i
aXNrZS1yb3phaiIgRXhwZWN0ZWQgU2FtZVZhbHVlKMKrc2wtcm96YWotYmlza2UtMTk5NMK7LCDC
q3NsLTE5OTQtYmlza2Utcm96YWrCuykgdG8gYmUgdHJ1ZScKLXRlc3QvaW50bDQwMi9Mb2NhbGUv
Z2V0dGVycy5qczoKLSAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVl
KMKrZGUtTGF0bi1ERS11LWNhLWdyZWdvcnktY28tcGhvbmViay1oYy1oMjMta2YtdHJ1ZS1rbi1m
YWxzZS1udS1sYXRuwrssIMKrZGUtTGF0bi1ERS11LWNhLWdyZWdvcnktY28tcGhvbmViay1oYy1o
MjMta2Yta24tZmFsc2UtbnUtbGF0bsK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMKrZGUtTGF0bi1ERS11LWNhLWdyZWdvcnkt
Y28tcGhvbmViay1oYy1oMjMta2YtdHJ1ZS1rbi1mYWxzZS1udS1sYXRuwrssIMKrZGUtTGF0bi1E
RS11LWNhLWdyZWdvcnktY28tcGhvbmViay1oYy1oMjMta2Yta24tZmFsc2UtbnUtbGF0bsK7KSB0
byBiZSB0cnVlJwogdGVzdC9pbnRsNDAyL0xvY2FsZS9saWtlbHktc3VidGFncy1ncmFuZGZhdGhl
cmVkLmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUowqtj
bW7Cuywgwqt6aMK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
RXhwZWN0ZWQgU2FtZVZhbHVlKMKrY21uwrssIMKremjCuykgdG8gYmUgdHJ1ZScK
</data>

          </attachment>
      

    </bug>

</bugzilla>