<?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>182434</bug_id>
          
          <creation_ts>2018-02-02 08:08:12 -0800</creation_ts>
          <short_desc>[JSC] Clean up ArraySpeciesCreate</short_desc>
          <delta_ts>2020-07-04 13:09:31 -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>JavaScriptCore</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>
          <dependson>182493</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>guijemont</cc>
    
    <cc>guijemont+jsc-armv7-ews</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</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>1395855</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-02 08:08:12 -0800</bug_when>
    <thetext>[JSC] Clean up ArraySpeciesCreate</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395858</commentid>
    <comment_count>1</comment_count>
      <attachid>332969</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-02 08:23:14 -0800</bug_when>
    <thetext>Created attachment 332969
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395872</commentid>
    <comment_count>2</comment_count>
      <attachid>332969</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-02 08:46:16 -0800</bug_when>
    <thetext>Comment on attachment 332969
Patch

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

r=me if perf is neutral

&gt; Source/JavaScriptCore/ChangeLog:10
&gt; +        We have duplicate code in filter, map, concatSlowPath.
&gt; +        This patch creates a new global private function @arraySpeciesCreate,
&gt; +        and use it.

I thought we duplicated the code for perf reasons. Is this a slowdown anywhere?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395879</commentid>
    <comment_count>3</comment_count>
      <attachid>332969</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-02 09:11:25 -0800</bug_when>
    <thetext>Comment on attachment 332969
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:10
&gt;&gt; +        and use it.
&gt; 
&gt; I thought we duplicated the code for perf reasons. Is this a slowdown anywhere?

It does not show performance regression in microbenchmarks and Octane at least.

array-prototype-map       26.6705+-0.4800           26.1032+-0.2851          might be 1.0217x faster

typescript     x2     620.55935+-11.16048       619.50969+-10.22278</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395880</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-02 09:12:29 -0800</bug_when>
    <thetext>Committed r228012: &lt;https://trac.webkit.org/changeset/228012&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395881</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-02-02 09:13:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/37158348&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396355</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-05 10:08:52 -0800</bug_when>
    <thetext>This appears to be a 2-4% ARES6 regression across Mac and iOS. Can we roll it out to verify?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396356</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-05 10:09:14 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #6)
&gt; This appears to be a 2-4% ARES6 regression across Mac and iOS. Can we roll
&gt; it out to verify?

Ima just roll it out. I&apos;ll update this bug when I get definitive data after the rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396358</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-05 10:10:03 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 182493</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396580</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-05 15:18:37 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #7)
&gt; (In reply to Saam Barati from comment #6)
&gt; &gt; This appears to be a 2-4% ARES6 regression across Mac and iOS. Can we roll
&gt; &gt; it out to verify?
&gt; 
&gt; Ima just roll it out. I&apos;ll update this bug when I get definitive data after
&gt; the rollout.

I&apos;ve confirmed that my rollout progressed ARES6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549678</commentid>
    <comment_count>10</comment_count>
      <attachid>373352</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2019-07-02 12:39:48 -0700</bug_when>
    <thetext>Created attachment 373352
Patch

Fix native `speciesConstructArray` and expose it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549695</commentid>
    <comment_count>11</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-02 13:25:11 -0700</bug_when>
    <thetext>(In reply to Alexey Shvayka from comment #10)
&gt; Created attachment 373352 [details]
&gt; Patch
&gt; 
&gt; Fix native `speciesConstructArray` and expose it.

Can you measure JetStream2, specifically ARES-6?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549700</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2019-07-02 13:49:09 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #11)
&gt; 
&gt; Can you measure JetStream2, specifically ARES-6?

Already did:
  [trunk] average of 25.19ms (21 samples, lowest: 23.95ms)
  [patch] average of 24.31ms (11 samples, lowest: 23.33ms)

~3.6% ARES progression (overall score, release build).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549712</commentid>
    <comment_count>13</comment_count>
      <attachid>373352</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-02 14:16:23 -0700</bug_when>
    <thetext>Comment on attachment 373352
Patch

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

r=me with fixes.

&gt; Source/JavaScriptCore/ChangeLog:13
&gt; +

Let&apos;s paste the measurement result here to tell that this is measured and it is not intended to cause the performance regression.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:242
&gt; +                &amp;&amp; jsDynamicCast&lt;ArrayConstructor*&gt;(vm, constructorObject);

Use `inherit&lt;ArrayConstructor&gt;` instead.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:272
&gt; +    JSObject* object = asObject(exec-&gt;argument(0));

Let&apos;s use uncheckedArgument(0) because we know all the caller of arrayProtoFuncSpeciesCreate passes the first argument.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:273
&gt; +    auto length = static_cast&lt;uint64_t&gt;(exec-&gt;argument(1).asNumber());

Use `uint64_t` instead of `auto` here. JSC codebase likes writing a type explicitly.
And use `uncheckedArgument(1)` too.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:278
&gt; +        return encodedJSValue();

Use `{}` for the newer code.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:283
&gt; +    auto unsignedLength = static_cast&lt;unsigned&gt;(length);
&gt; +    if (unsignedLength != length) {

Comparing with `std::numeric_limits&lt;unsigned&gt;::max()` is better since it describes the intent explicitly.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:285
&gt; +        return encodedJSValue();

Ditto.

&gt; Source/JavaScriptCore/runtime/ArrayPrototype.cpp:290
&gt; +    JSObject* result = constructEmptyArray(exec, nullptr, unsignedLength);
&gt; +    RETURN_IF_EXCEPTION(scope, encodedJSValue());
&gt; +    RELEASE_AND_RETURN(scope, JSValue::encode(result));

Do things like,

RELEASE_AND_RETURN(scope, JSValue::encode(constructEmptyArray(exec, nullptr, unsignedLength)));

The L289&apos;s exception check is not necessary if we write this code like the above one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549722</commentid>
    <comment_count>14</comment_count>
      <attachid>373352</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-07-02 14:41:15 -0700</bug_when>
    <thetext>Comment on attachment 373352
Patch

Attachment 373352 did not pass jsc-ews (mac):
Output: https://webkit-queues.webkit.org/results/12643623

New failing tests:
stress/array-flatmap.js.ftl-eager-no-cjit-b3o1
stress/array-flatten.js.no-ftl
stress/array-flatmap.js.bytecode-cache
stress/array-flatten.js.mini-mode
stress/array-flatten.js.ftl-no-cjit-b3o0
stress/array-flatten.js.ftl-no-cjit-small-pool
stress/array-flatmap.js.ftl-no-cjit-validate-sampling-profiler
stress/array-species-create-should-handle-masquerader.js.ftl-no-cjit-b3o0
stress/array-species-create-should-handle-masquerader.js.mini-mode
stress/array-flatten.js.ftl-no-cjit-no-put-stack-validate
stress/array-species-create-should-handle-masquerader.js.dfg-eager-no-cjit-validate
stress/array-species-create-should-handle-masquerader.js.ftl-no-cjit-no-put-stack-validate
stress/array-flatmap.js.dfg-eager-no-cjit-validate
stress/array-species-create-should-handle-masquerader.js.ftl-eager-no-cjit-b3o1
stress/array-flatten.js.dfg-eager
stress/array-species-create-should-handle-masquerader.js.default
stress/array-species-create-should-handle-masquerader.js.bytecode-cache
stress/array-flatten.js.no-cjit-validate-phases
stress/array-flatten.js.ftl-eager-no-cjit-b3o1
stress/array-flatmap.js.no-ftl
stress/array-species-create-should-handle-masquerader.js.ftl-no-cjit-validate-sampling-profiler
stress/array-flatten.js.ftl-no-cjit-no-inline-validate
stress/array-flatmap.js.ftl-no-cjit-no-inline-validate
stress/array-flatten.js.no-cjit-collect-continuously
stress/array-flatmap.js.default
stress/array-flatmap.js.mini-mode
stress/array-flatten.js.ftl-no-cjit-validate-sampling-profiler
stress/array-flatmap.js.ftl-no-cjit-no-put-stack-validate
stress/array-flatmap.js.dfg-eager
stress/array-species-create-should-handle-masquerader.js.no-cjit-validate-phases
stress/array-flatten.js.default
stress/array-flatten.js.bytecode-cache
stress/array-species-create-should-handle-masquerader.js.no-ftl
stress/array-flatten.js.no-llint
stress/array-flatmap.js.ftl-eager-no-cjit
stress/array-flatmap.js.ftl-eager
stress/array-flatmap.js.no-llint
stress/array-species-create-should-handle-masquerader.js.dfg-maximal-flush-validate-no-cjit
stress/array-flatmap.js.no-cjit-collect-continuously
stress/array-flatmap.js.ftl-no-cjit-small-pool
stress/array-flatmap.js.no-cjit-validate-phases
stress/array-species-create-should-handle-masquerader.js.ftl-eager-no-cjit
stress/array-flatten.js.dfg-eager-no-cjit-validate
stress/array-flatten.js.ftl-eager-no-cjit
stress/array-species-create-should-handle-masquerader.js.ftl-no-cjit-no-inline-validate
stress/array-flatten.js.ftl-eager
stress/array-species-create-should-handle-masquerader.js.ftl-eager
stress/array-species-create-should-handle-masquerader.js.no-llint
stress/array-flatten.js.dfg-maximal-flush-validate-no-cjit
stress/array-flatmap.js.ftl-no-cjit-b3o0
stress/array-species-create-should-handle-masquerader.js.no-cjit-collect-continuously
stress/array-flatmap.js.dfg-maximal-flush-validate-no-cjit
stress/array-species-create-should-handle-masquerader.js.ftl-no-cjit-small-pool
stress/array-species-create-should-handle-masquerader.js.dfg-eager
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1549724</commentid>
    <comment_count>15</comment_count>
      <attachid>373352</attachid>
    <who name="jsc-armv7 EWS">guijemont+jsc-armv7-ews</who>
    <bug_when>2019-07-02 14:48:32 -0700</bug_when>
    <thetext>Comment on attachment 373352
Patch

Attachment 373352 did not pass jsc-armv7-ews (jsc-only):
Output: https://webkit-queues.webkit.org/results/12643649

New failing tests:
stress/array-flatten.js.mini-mode
stress/array-species-create-should-handle-masquerader.js.mini-mode
stress/array-species-create-should-handle-masquerader.js.dfg-eager-no-cjit-validate
stress/array-flatmap.js.no-cjit-collect-continuously
stress/array-species-create-should-handle-masquerader.js.default
stress/array-flatten.js.no-cjit-validate-phases
stress/array-flatten.js.no-cjit-collect-continuously
stress/array-flatmap.js.default
stress/array-flatmap.js.mini-mode
stress/array-species-create-should-handle-masquerader.js.no-cjit-validate-phases
stress/array-flatten.js.default
stress/array-flatten.js.no-llint
stress/array-species-create-should-handle-masquerader.js.dfg-eager
stress/array-flatmap.js.no-llint
stress/array-species-create-should-handle-masquerader.js.dfg-maximal-flush-validate-no-cjit
stress/array-flatten.js.dfg-eager
stress/array-flatmap.js.dfg-eager-no-cjit-validate
stress/array-flatten.js.dfg-eager-no-cjit-validate
stress/array-flatmap.js.no-cjit-validate-phases
stress/array-flatmap.js.dfg-eager
stress/array-species-create-should-handle-masquerader.js.no-llint
stress/array-flatten.js.dfg-maximal-flush-validate-no-cjit
stress/array-species-create-should-handle-masquerader.js.no-cjit-collect-continuously
stress/array-flatmap.js.dfg-maximal-flush-validate-no-cjit
apiTests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550471</commentid>
    <comment_count>16</comment_count>
      <attachid>373523</attachid>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2019-07-05 12:24:49 -0700</bug_when>
    <thetext>Created attachment 373523
Patch

Address review notes and adjust tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550477</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Shvayka">ashvayka</who>
    <bug_when>2019-07-05 12:37:25 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #13)
&gt; Comment on attachment 373352 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=373352&amp;action=review
&gt; 
&gt; r=me with fixes.

Thank you for thorough review, Yusuke. Code looks way better now.

&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:13
&gt; &gt; +
&gt; 
&gt; Let&apos;s paste the measurement result here to tell that this is measured and it
&gt; is not intended to cause the performance regression.
&gt; 

I&apos;ve repeated ARES-6 in more &quot;sterile&quot; environment (after reboot, no running apps, Wi-Fi off):
  same result (trunk: 23.24ms, patch: 23.26ms) for &quot;cold&quot; runs (10 runs, 3 samples, 90s interval between runs)
  1% progression (trunk: 25.41ms, patch: 25.07ms) for &quot;hot&quot; runs (10 runs, 100 samples, no timeout)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550496</commentid>
    <comment_count>18</comment_count>
      <attachid>373523</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-07-05 13:26:08 -0700</bug_when>
    <thetext>Comment on attachment 373523
Patch

Clearing flags on attachment: 373523

Committed r247173: &lt;https://trac.webkit.org/changeset/247173&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1550522</commentid>
    <comment_count>19</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-07-05 14:30:36 -0700</bug_when>
    <thetext>Committed r247175: &lt;https://trac.webkit.org/changeset/247175&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332969</attachid>
            <date>2018-02-02 08:23:14 -0800</date>
            <delta_ts>2018-02-02 08:46:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182434-20180203012328.patch</filename>
            <type>text/plain</type>
            <size>5633</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI3OTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZDkzYTllNTAwOWQ3YzkxODEzNzhkOGIzZGRlNDgzOWM1ZmViNDM5Li5mZWJjMjUwMzkzMDM0ODdk
YTI4OTk3M2ZjNTQ3OTNkMTc4OTUzMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxOC0wMi0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBDbGVhbiB1cCBBcnJheVNwZWNpZXNDcmVhdGUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjQzNAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlIGhhdmUgZHVwbGlj
YXRlIGNvZGUgaW4gZmlsdGVyLCBtYXAsIGNvbmNhdFNsb3dQYXRoLgorICAgICAgICBUaGlzIHBh
dGNoIGNyZWF0ZXMgYSBuZXcgZ2xvYmFsIHByaXZhdGUgZnVuY3Rpb24gQGFycmF5U3BlY2llc0Ny
ZWF0ZSwKKyAgICAgICAgYW5kIHVzZSBpdC4KKworICAgICAgICAqIGJ1aWx0aW5zL0FycmF5UHJv
dG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5hcnJheVNwZWNpZXNDcmVhdGUpOgor
ICAgICAgICAoZmlsdGVyKToKKyAgICAgICAgKG1hcCk6CisgICAgICAgIChnbG9iYWxQcml2YXRl
LmNvbmNhdFNsb3dQYXRoKToKKwogMjAxOC0wMi0wMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBw
bGUuY29tPgogCiAgICAgICAgIFF1ZXVlIGEgbWljcm90YXNrIHdoZW4gYSB3YWl0VW50aWwoKSBw
cm9taXNlIGlzIHNldHRsZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9BcnJheVByb3RvdHlwZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9B
cnJheVByb3RvdHlwZS5qcwppbmRleCA1ZTU1N2I4NzFkNjViZDU2MDhiMTczODRlNzBhM2Y5OTdl
MzE4YjM4Li40ZGRhYjAzZjU0YTZlZTg1OTliOTcwNDk0ZTQxNzBjYjM2MzFjMjY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXJyYXlQcm90b3R5cGUuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCkBAIC0x
NjQsMzggKzE2NCw0NCBAQCBmdW5jdGlvbiBmb3JFYWNoKGNhbGxiYWNrIC8qLCB0aGlzQXJnICov
KQogICAgIH0KIH0KIAotZnVuY3Rpb24gZmlsdGVyKGNhbGxiYWNrIC8qLCB0aGlzQXJnICovKQor
QGdsb2JhbFByaXZhdGUKK2Z1bmN0aW9uIGFycmF5U3BlY2llc0NyZWF0ZShhcnJheSwgbGVuZ3Ro
KQogewogICAgICJ1c2Ugc3RyaWN0IjsKIAotICAgIHZhciBhcnJheSA9IEB0b09iamVjdCh0aGlz
LCAiQXJyYXkucHJvdG90eXBlLmZpbHRlciByZXF1aXJlcyB0aGF0IHx0aGlzfCBub3QgYmUgbnVs
bCBvciB1bmRlZmluZWQiKTsKLSAgICB2YXIgbGVuZ3RoID0gQHRvTGVuZ3RoKGFycmF5Lmxlbmd0
aCk7Ci0KLSAgICBpZiAodHlwZW9mIGNhbGxiYWNrICE9PSAiZnVuY3Rpb24iKQotICAgICAgICBA
dGhyb3dUeXBlRXJyb3IoIkFycmF5LnByb3RvdHlwZS5maWx0ZXIgY2FsbGJhY2sgbXVzdCBiZSBh
IGZ1bmN0aW9uIik7Ci0gICAgCi0gICAgdmFyIHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7Ci0KLSAg
ICAvLyBEbyA5LjQuMi4zIEFycmF5U3BlY2llc0NyZWF0ZQotICAgIHZhciByZXN1bHQ7CiAgICAg
dmFyIGNvbnN0cnVjdG9yOworICAgIHZhciBhcnJheUNvbnN0cnVjdG9ySW5SZWFsbSA9IEBBcnJh
eTsKICAgICBpZiAoQGlzQXJyYXkoYXJyYXkpKSB7CiAgICAgICAgIGNvbnN0cnVjdG9yID0gYXJy
YXkuY29uc3RydWN0b3I7CiAgICAgICAgIC8vIFdlIGhhdmUgdGhpcyBjaGVjayBzbyB0aGF0IGlm
IHNvbWUgYXJyYXkgZnJvbSBhIGRpZmZlcmVudCBnbG9iYWwgb2JqZWN0CiAgICAgICAgIC8vIGNh
bGxzIHRoaXMgbWFwIHRoZXkgZG9uJ3QgZ2V0IGFuIGFycmF5IHdpdGggdGhlIEFycmF5LnByb3Rv
dHlwZSBvZiB0aGUKICAgICAgICAgLy8gb3RoZXIgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgaWYg
KEBpc0FycmF5Q29uc3RydWN0b3IoY29uc3RydWN0b3IpICYmIEBBcnJheSAhPT0gY29uc3RydWN0
b3IpCisgICAgICAgIGlmIChAaXNBcnJheUNvbnN0cnVjdG9yKGNvbnN0cnVjdG9yKSAmJiBhcnJh
eUNvbnN0cnVjdG9ySW5SZWFsbSAhPT0gY29uc3RydWN0b3IpCiAgICAgICAgICAgICBjb25zdHJ1
Y3RvciA9IEB1bmRlZmluZWQ7Ci0gICAgICAgIGlmIChAaXNPYmplY3QoY29uc3RydWN0b3IpKSB7
CisgICAgICAgIGVsc2UgaWYgKEBpc09iamVjdChjb25zdHJ1Y3RvcikpIHsKICAgICAgICAgICAg
IGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3IuQHNwZWNpZXNTeW1ib2w7CiAgICAgICAgICAgICBp
ZiAoY29uc3RydWN0b3IgPT09IG51bGwpCiAgICAgICAgICAgICAgICAgY29uc3RydWN0b3IgPSBA
dW5kZWZpbmVkOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQEFy
cmF5IHx8IGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAgICAgICByZXN1bHQgPSBAbmV3
QXJyYXlXaXRoU2l6ZSgwKTsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IG5ldyBjb25zdHJ1
Y3RvcigwKTsKKyAgICBpZiAoY29uc3RydWN0b3IgPT09IGFycmF5Q29uc3RydWN0b3JJblJlYWxt
IHx8IGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQorICAgICAgICByZXR1cm4gQG5ld0FycmF5
V2l0aFNpemUobGVuZ3RoKTsKKyAgICByZXR1cm4gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7Cit9
CisKK2Z1bmN0aW9uIGZpbHRlcihjYWxsYmFjayAvKiwgdGhpc0FyZyAqLykKK3sKKyAgICAidXNl
IHN0cmljdCI7CisKKyAgICB2YXIgYXJyYXkgPSBAdG9PYmplY3QodGhpcywgIkFycmF5LnByb3Rv
dHlwZS5maWx0ZXIgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVk
Iik7CisgICAgdmFyIGxlbmd0aCA9IEB0b0xlbmd0aChhcnJheS5sZW5ndGgpOworCisgICAgaWYg
KHR5cGVvZiBjYWxsYmFjayAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAgQHRocm93VHlwZUVycm9y
KCJBcnJheS5wcm90b3R5cGUuZmlsdGVyIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwor
ICAgIAorICAgIHZhciB0aGlzQXJnID0gQGFyZ3VtZW50KDEpOworCisgICAgdmFyIHJlc3VsdCA9
IEBhcnJheVNwZWNpZXNDcmVhdGUoYXJyYXksIDApOwogCiAgICAgdmFyIG5leHRJbmRleCA9IDA7
CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewpAQCAtMjIyLDI2ICsyMjgs
NyBAQCBmdW5jdGlvbiBtYXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgCiAgICAgdmFy
IHRoaXNBcmcgPSBAYXJndW1lbnQoMSk7CiAKLSAgICAvLyBEbyA5LjQuMi4zIEFycmF5U3BlY2ll
c0NyZWF0ZQotICAgIHZhciByZXN1bHQ7Ci0gICAgdmFyIGNvbnN0cnVjdG9yOwotICAgIGlmIChA
aXNBcnJheShhcnJheSkpIHsKLSAgICAgICAgY29uc3RydWN0b3IgPSBhcnJheS5jb25zdHJ1Y3Rv
cjsKLSAgICAgICAgLy8gV2UgaGF2ZSB0aGlzIGNoZWNrIHNvIHRoYXQgaWYgc29tZSBhcnJheSBm
cm9tIGEgZGlmZmVyZW50IGdsb2JhbCBvYmplY3QKLSAgICAgICAgLy8gY2FsbHMgdGhpcyBtYXAg
dGhleSBkb24ndCBnZXQgYW4gYXJyYXkgd2l0aCB0aGUgQXJyYXkucHJvdG90eXBlIG9mIHRoZQot
ICAgICAgICAvLyBvdGhlciBnbG9iYWwgb2JqZWN0LgotICAgICAgICBpZiAoQGlzQXJyYXlDb25z
dHJ1Y3Rvcihjb25zdHJ1Y3RvcikgJiYgQEFycmF5ICE9PSBjb25zdHJ1Y3RvcikKLSAgICAgICAg
ICAgIGNvbnN0cnVjdG9yID0gQHVuZGVmaW5lZDsKLSAgICAgICAgaWYgKEBpc09iamVjdChjb25z
dHJ1Y3RvcikpIHsKLSAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gY29uc3RydWN0b3IuQHNwZWNp
ZXNTeW1ib2w7Ci0gICAgICAgICAgICBpZiAoY29uc3RydWN0b3IgPT09IG51bGwpCi0gICAgICAg
ICAgICAgICAgY29uc3RydWN0b3IgPSBAdW5kZWZpbmVkOwotICAgICAgICB9Ci0gICAgfQotICAg
IGlmIChjb25zdHJ1Y3RvciA9PT0gQEFycmF5IHx8IGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVk
KQotICAgICAgICByZXN1bHQgPSBAbmV3QXJyYXlXaXRoU2l6ZShsZW5ndGgpOwotICAgIGVsc2UK
LSAgICAgICAgcmVzdWx0ID0gbmV3IGNvbnN0cnVjdG9yKGxlbmd0aCk7CisgICAgdmFyIHJlc3Vs
dCA9IEBhcnJheVNwZWNpZXNDcmVhdGUoYXJyYXksIGxlbmd0aCk7CiAKICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIGlmICghKGkgaW4gYXJyYXkpKQpAQCAt
NjE3LDI4ICs2MDQsMTAgQEAgZnVuY3Rpb24gY29uY2F0U2xvd1BhdGgoKQogCiAgICAgdmFyIGN1
cnJlbnRFbGVtZW50ID0gQHRvT2JqZWN0KHRoaXMsICJBcnJheS5wcm90b3R5cGUuY29uY2F0IHJl
cXVpcmVzIHRoYXQgfHRoaXN8IG5vdCBiZSBudWxsIG9yIHVuZGVmaW5lZCIpOwogCi0gICAgdmFy
IGNvbnN0cnVjdG9yOwotICAgIGlmIChAaXNBcnJheShjdXJyZW50RWxlbWVudCkpIHsKLSAgICAg
ICAgY29uc3RydWN0b3IgPSBjdXJyZW50RWxlbWVudC5jb25zdHJ1Y3RvcjsKLSAgICAgICAgLy8g
V2UgaGF2ZSB0aGlzIGNoZWNrIHNvIHRoYXQgaWYgc29tZSBhcnJheSBmcm9tIGEgZGlmZmVyZW50
IGdsb2JhbCBvYmplY3QKLSAgICAgICAgLy8gY2FsbHMgdGhpcyBtYXAgdGhleSBkb24ndCBnZXQg
YW4gYXJyYXkgd2l0aCB0aGUgQXJyYXkucHJvdG90eXBlIG9mIHRoZQotICAgICAgICAvLyBvdGhl
ciBnbG9iYWwgb2JqZWN0LgotICAgICAgICBpZiAoQGlzQXJyYXlDb25zdHJ1Y3Rvcihjb25zdHJ1
Y3RvcikgJiYgQEFycmF5ICE9PSBjb25zdHJ1Y3RvcikKLSAgICAgICAgICAgIGNvbnN0cnVjdG9y
ID0gQHVuZGVmaW5lZDsKLSAgICAgICAgZWxzZSBpZiAoQGlzT2JqZWN0KGNvbnN0cnVjdG9yKSkg
ewotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci5Ac3BlY2llc1N5bWJvbDsK
LSAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gbnVsbCkKLSAgICAgICAgICAgICAgICBj
b25zdHJ1Y3RvciA9IEBBcnJheTsKLSAgICAgICAgfQotICAgIH0KKyAgICB2YXIgcmVzdWx0ID0g
QGFycmF5U3BlY2llc0NyZWF0ZShjdXJyZW50RWxlbWVudCwgMCk7CisgICAgdmFyIHJlc3VsdElz
QXJyYXkgPSBAaXNKU0FycmF5KHJlc3VsdCk7CiAKICAgICB2YXIgYXJnQ291bnQgPSBhcmd1bWVu
dHMubGVuZ3RoOwotICAgIHZhciByZXN1bHQ7Ci0gICAgaWYgKGNvbnN0cnVjdG9yID09PSBAQXJy
YXkgfHwgY29uc3RydWN0b3IgPT09IEB1bmRlZmluZWQpCi0gICAgICAgIHJlc3VsdCA9IEBuZXdB
cnJheVdpdGhTaXplKDApOwotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gbmV3IGNvbnN0cnVj
dG9yKDApOwotICAgIHZhciByZXN1bHRJc0FycmF5ID0gQGlzSlNBcnJheShyZXN1bHQpOwogCiAg
ICAgdmFyIHJlc3VsdEluZGV4ID0gMDsKICAgICB2YXIgYXJnSW5kZXggPSAwOwo=
</data>
<flag name="review"
          id="351891"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373352</attachid>
            <date>2019-07-02 12:39:48 -0700</date>
            <delta_ts>2019-07-05 12:39:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182434-20190702223934.patch</filename>
            <type>text/plain</type>
            <size>17867</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDcwNTYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEyIEBACisyMDE5LTA3LTAyICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDbGVhbiB1cCBBcnJheVNwZWNpZXNDcmVhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjQzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogdGVzdDI2
Mi9leHBlY3RhdGlvbnMueWFtbDogTWFyayA0IHRlc3QgY2FzZXMgYXMgcGFzc2luZy4KKwogMjAx
OS0wNy0wMSAgSnVzdGluIE1pY2hhdWQgIDxqdXN0aW5fbWljaGF1ZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgW1dhc20tUmVmZXJlbmNlc10gRGlzYWJsZSByZWZlcmVuY2VzIGJ5IGRlZmF1bHQKSW5k
ZXg6IEpTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rl
c3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHJldmlzaW9uIDI0NzA1NSkKKysrIEpTVGVz
dHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbAkod29ya2luZyBjb3B5KQpAQCAtNjYwLDkgKzY2
MCw2IEBAIHRlc3QvYnVpbHQtaW5zL0FycmF5L3Byb3RvdHlwZS9wdXNoL3Rocm8KIHRlc3QvYnVp
bHQtaW5zL0FycmF5L3Byb3RvdHlwZS9yZXZlcnNlL2xlbmd0aC1leGNlZWRpbmctaW50ZWdlci1s
aW1pdC13aXRoLXByb3h5LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBh
IFN0b3BSZXZlcnNlIGJ1dCBnb3QgYSBUZXN0MjYyRXJyb3InCiAgIHN0cmljdCBtb2RlOiAnVGVz
dDI2MkVycm9yOiBFeHBlY3RlZCBhIFN0b3BSZXZlcnNlIGJ1dCBnb3QgYSBUZXN0MjYyRXJyb3In
Ci10ZXN0L2J1aWx0LWlucy9BcnJheS9wcm90b3R5cGUvc2xpY2UvY3JlYXRlLXByb3RvLWZyb20t
Y3Rvci1yZWFsbS1ub24tYXJyYXkuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVj
dGVkIFNhbWVWYWx1ZSjDgsKrw4LCuywgw4LCq1tvYmplY3QgT2JqZWN0XcOCwrspIHRvIGJlIHRy
dWUnCi0gIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LC
q8OCwrssIMOCwqtbb2JqZWN0IE9iamVjdF3DgsK7KSB0byBiZSB0cnVlJwogdGVzdC9idWlsdC1p
bnMvQXJyYXkvcHJvdG90eXBlL3NsaWNlL2xlbmd0aC1leGNlZWRpbmctaW50ZWdlci1saW1pdC1w
cm94aWVkLWFycmF5LmpzOgogICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBbXSBh
bmQgWzkwMDcxOTkyNTQ3NDA5ODksIDkwMDcxOTkyNTQ3NDA5OTBdIHRvIGhhdmUgdGhlIHNhbWUg
Y29udGVudHMuIHNsaWNlKDkwMDcxOTkyNTQ3NDA5ODkpJwogICBzdHJpY3QgbW9kZTogJ1Rlc3Qy
NjJFcnJvcjogRXhwZWN0ZWQgW10gYW5kIFs5MDA3MTk5MjU0NzQwOTg5LCA5MDA3MTk5MjU0NzQw
OTkwXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRlbnRzLiBzbGljZSg5MDA3MTk5MjU0NzQwOTg5KScK
QEAgLTY3OCw5ICs2NzUsNiBAQCB0ZXN0L2J1aWx0LWlucy9BcnJheS9wcm90b3R5cGUvc3BsaWNl
L1MxCiB0ZXN0L2J1aWx0LWlucy9BcnJheS9wcm90b3R5cGUvc3BsaWNlL2NsYW1wcy1sZW5ndGgt
dG8taW50ZWdlci1saW1pdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogTGVuZ3RoIGlz
IDIqKjUzIC0gMSBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqzQyOTQ5NjcyOTXDgsK7LCDDgsKrOTAw
NzE5OTI1NDc0MDk5McOCwrspIHRvIGJlIHRydWUnCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVy
cm9yOiBMZW5ndGggaXMgMioqNTMgLSAxIEV4cGVjdGVkIFNhbWVWYWx1ZSjDgsKrNDI5NDk2NzI5
NcOCwrssIMOCwqs5MDA3MTk5MjU0NzQwOTkxw4LCuykgdG8gYmUgdHJ1ZScKLXRlc3QvYnVpbHQt
aW5zL0FycmF5L3Byb3RvdHlwZS9zcGxpY2UvY3JlYXRlLXByb3RvLWZyb20tY3Rvci1yZWFsbS1u
b24tYXJyYXkuanM6Ci0gIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IEV4cGVjdGVkIFNhbWVWYWx1
ZSjDgsKrw4LCuywgw4LCq1tvYmplY3QgT2JqZWN0XcOCwrspIHRvIGJlIHRydWUnCi0gIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LCq8OCwrssIMOCwqtb
b2JqZWN0IE9iamVjdF3DgsK7KSB0byBiZSB0cnVlJwogdGVzdC9idWlsdC1pbnMvQXJyYXkvcHJv
dG90eXBlL3NwbGljZS9jcmVhdGUtcHJveHkuanM6CiAgIGRlZmF1bHQ6ICdUeXBlRXJyb3I6IEF0
dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuJwogICBzdHJpY3QgbW9kZTog
J1R5cGVFcnJvcjogQXR0ZW1wdGVkIHRvIGFzc2lnbiB0byByZWFkb25seSBwcm9wZXJ0eS4nCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0NzA1NSkKKysrIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAor
MjAxOS0wNy0wMiAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFpbC5jb20+CisKKyAg
ICAgICAgW0pTQ10gQ2xlYW4gdXAgQXJyYXlTcGVjaWVzQ3JlYXRlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODI0MzQKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIGR1cGxpY2F0ZSBjb2RlIGlu
IGFycmF5U3BlY2llc0NyZWF0ZSwgZmlsdGVyLCBtYXAsIGNvbmNhdFNsb3dQYXRoIG9mIEFycmF5
UHJvdG90eXBlLmpzCisgICAgICAgIGFuZCBzcGVjaWVzQ29uc3RydWN0QXJyYXkgb2YgQXJyYXlQ
cm90b3R5cGUuY3BwLiBUaGlzIHBhdGNoIGZpeGVzIGNyb3NzLXJlYWxtIEFycmF5IGNvbnN0cnVj
dG9yCisgICAgICAgIGRldGVjdGlvbiBpbiBuYXRpdmUgc3BlY2llc0NvbnN0cnVjdEFycmF5LCB1
cGdyYWRlcyBgbGVuZ3RoYCB0eXBlIHRvIGNvcnJlY3RseSBoYW5kbGUgbGFyZ2UgaW50ZWdlcnMs
CisgICAgICAgIGFuZCBleHBvc2VzIGl0IGFzIEBhcnJheVNwZWNpZXNDcmVhdGUuIEFsc28gcmVt
b3ZlcyBub3cgdW51c2VkIEBpc0FycmF5Q29uc3RydWN0b3IgcHJpdmF0ZSBmdW5jdGlvbi4KKyAg
ICAgICAgTmF0aXZlIHNwZWNpZXNDb25zdHJ1Y3RBcnJheSBpcyBwcmVmZXJyZWQgYmVjYXVzZSBp
dCBoYXMgZmFzdCBwYXRoIHZpYSBzcGVjaWVzV2F0Y2hwb2ludElzVmFsaWQuCisKKyAgICAgICAg
KiBidWlsdGlucy9BcnJheVByb3RvdHlwZS5qczoKKyAgICAgICAgKGZpbHRlcik6CisgICAgICAg
IChtYXApOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jb25jYXRTbG93UGF0aCk6CisgICAgICAg
IChnbG9iYWxQcml2YXRlLmFycmF5U3BlY2llc0NyZWF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
YnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlDb25zdHJ1Y3RvclByaXZhdGVGdW5jSXNBcnJh
eUNvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0FycmF5Q29uc3RydWN0
b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpT
Qzo6YXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5
UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKwogMjAxOS0wNy0wMiAgUGF1bG8gTWF0
b3MgIDxwbWF0b3NAbGlua2kudG9vbHM+CiAKICAgICAgICAgRml4IHR5cG8gaW4gaWYvZWxzZSBi
bG9jayBhbmQgcmVtb3ZlIGRlYWQgYXNzaWdubWVudApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwkocmV2aXNpb24gMjQ3MDU1KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNzUsMjcgKzE3NSw3IEBAIGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFjayAv
KiwgdGhpc0FyZyAqLykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUu
ZmlsdGVyIGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlz
QXJnID0gQGFyZ3VtZW50KDEpOwotCi0gICAgLy8gRG8gOS40LjIuMyBBcnJheVNwZWNpZXNDcmVh
dGUKLSAgICB2YXIgcmVzdWx0OwotICAgIHZhciBjb25zdHJ1Y3RvcjsKLSAgICBpZiAoQGlzQXJy
YXkoYXJyYXkpKSB7Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gYXJyYXkuY29uc3RydWN0b3I7Ci0g
ICAgICAgIC8vIFdlIGhhdmUgdGhpcyBjaGVjayBzbyB0aGF0IGlmIHNvbWUgYXJyYXkgZnJvbSBh
IGRpZmZlcmVudCBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIC8vIGNhbGxzIHRoaXMgbWFwIHRoZXkg
ZG9uJ3QgZ2V0IGFuIGFycmF5IHdpdGggdGhlIEFycmF5LnByb3RvdHlwZSBvZiB0aGUKLSAgICAg
ICAgLy8gb3RoZXIgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgaWYgKEBBcnJheSAhPT0gY29uc3Ry
dWN0b3IgJiYgQGlzQXJyYXlDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpCi0gICAgICAgICAgICBj
b25zdHJ1Y3RvciA9IEB1bmRlZmluZWQ7Ci0gICAgICAgIGlmIChAaXNPYmplY3QoY29uc3RydWN0
b3IpKSB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLkBzcGVjaWVzU3lt
Ym9sOwotICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBudWxsKQotICAgICAgICAgICAg
ICAgIGNvbnN0cnVjdG9yID0gQHVuZGVmaW5lZDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAo
Y29uc3RydWN0b3IgPT09IEBBcnJheSB8fCBjb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKLSAg
ICAgICAgcmVzdWx0ID0gQG5ld0FycmF5V2l0aFNpemUoMCk7Ci0gICAgZWxzZQotICAgICAgICBy
ZXN1bHQgPSBuZXcgY29uc3RydWN0b3IoMCk7CisgICAgdmFyIHJlc3VsdCA9IEBhcnJheVNwZWNp
ZXNDcmVhdGUoYXJyYXksIDApOwogCiAgICAgdmFyIG5leHRJbmRleCA9IDA7CiAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewpAQCAtMjIxLDI3ICsyMDEsNyBAQCBmdW5jdGlv
biBtYXAoY2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigi
QXJyYXkucHJvdG90eXBlLm1hcCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKICAgICAK
ICAgICB2YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKLQotICAgIC8vIERvIDkuNC4yLjMgQXJy
YXlTcGVjaWVzQ3JlYXRlCi0gICAgdmFyIHJlc3VsdDsKLSAgICB2YXIgY29uc3RydWN0b3I7Ci0g
ICAgaWYgKEBpc0FycmF5KGFycmF5KSkgewotICAgICAgICBjb25zdHJ1Y3RvciA9IGFycmF5LmNv
bnN0cnVjdG9yOwotICAgICAgICAvLyBXZSBoYXZlIHRoaXMgY2hlY2sgc28gdGhhdCBpZiBzb21l
IGFycmF5IGZyb20gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdAotICAgICAgICAvLyBjYWxscyB0
aGlzIG1hcCB0aGV5IGRvbid0IGdldCBhbiBhcnJheSB3aXRoIHRoZSBBcnJheS5wcm90b3R5cGUg
b2YgdGhlCi0gICAgICAgIC8vIG90aGVyIGdsb2JhbCBvYmplY3QuCi0gICAgICAgIGlmIChAQXJy
YXkgIT09IGNvbnN0cnVjdG9yICYmIEBpc0FycmF5Q29uc3RydWN0b3IoY29uc3RydWN0b3IpKQot
ICAgICAgICAgICAgY29uc3RydWN0b3IgPSBAdW5kZWZpbmVkOwotICAgICAgICBpZiAoQGlzT2Jq
ZWN0KGNvbnN0cnVjdG9yKSkgewotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rv
ci5Ac3BlY2llc1N5bWJvbDsKLSAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gbnVsbCkK
LSAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IEB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgaWYgKGNvbnN0cnVjdG9yID09PSBAQXJyYXkgfHwgY29uc3RydWN0b3IgPT09IEB1
bmRlZmluZWQpCi0gICAgICAgIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKGxlbmd0aCk7Ci0g
ICAgZWxzZQotICAgICAgICByZXN1bHQgPSBuZXcgY29uc3RydWN0b3IobGVuZ3RoKTsKKyAgICB2
YXIgcmVzdWx0ID0gQGFycmF5U3BlY2llc0NyZWF0ZShhcnJheSwgbGVuZ3RoKTsKIAogICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKCEoaSBpbiBhcnJh
eSkpCkBAIC02MjAsMjggKzU4MCw5IEBAIGZ1bmN0aW9uIGNvbmNhdFNsb3dQYXRoKCkKICAgICAi
dXNlIHN0cmljdCI7CiAKICAgICB2YXIgY3VycmVudEVsZW1lbnQgPSBAdG9PYmplY3QodGhpcywg
IkFycmF5LnByb3RvdHlwZS5jb25jYXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwg
b3IgdW5kZWZpbmVkIik7Ci0KLSAgICB2YXIgY29uc3RydWN0b3I7Ci0gICAgaWYgKEBpc0FycmF5
KGN1cnJlbnRFbGVtZW50KSkgewotICAgICAgICBjb25zdHJ1Y3RvciA9IGN1cnJlbnRFbGVtZW50
LmNvbnN0cnVjdG9yOwotICAgICAgICAvLyBXZSBoYXZlIHRoaXMgY2hlY2sgc28gdGhhdCBpZiBz
b21lIGFycmF5IGZyb20gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdAotICAgICAgICAvLyBjYWxs
cyB0aGlzIG1hcCB0aGV5IGRvbid0IGdldCBhbiBhcnJheSB3aXRoIHRoZSBBcnJheS5wcm90b3R5
cGUgb2YgdGhlCi0gICAgICAgIC8vIG90aGVyIGdsb2JhbCBvYmplY3QuCi0gICAgICAgIGlmIChA
QXJyYXkgIT09IGNvbnN0cnVjdG9yICYmIEBpc0FycmF5Q29uc3RydWN0b3IoY29uc3RydWN0b3Ip
KQotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBAdW5kZWZpbmVkOwotICAgICAgICBlbHNlIGlm
IChAaXNPYmplY3QoY29uc3RydWN0b3IpKSB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNv
bnN0cnVjdG9yLkBzcGVjaWVzU3ltYm9sOwotICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09
PSBudWxsKQotICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQEFycmF5OwotICAgICAgICB9
Ci0gICAgfQotCiAgICAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICB2YXIg
cmVzdWx0OwotICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQEFycmF5IHx8IGNvbnN0cnVjdG9yID09
PSBAdW5kZWZpbmVkKQotICAgICAgICByZXN1bHQgPSBAbmV3QXJyYXlXaXRoU2l6ZSgwKTsKLSAg
ICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IG5ldyBjb25zdHJ1Y3RvcigwKTsKKworICAgIHZhciBy
ZXN1bHQgPSBAYXJyYXlTcGVjaWVzQ3JlYXRlKGN1cnJlbnRFbGVtZW50LCAwKTsKICAgICB2YXIg
cmVzdWx0SXNBcnJheSA9IEBpc0pTQXJyYXkocmVzdWx0KTsKIAogICAgIHZhciByZXN1bHRJbmRl
eCA9IDA7CkBAIC03NDQsMzMgKzY4NSw2IEBAIGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0LCBz
dGFydCAvKiwgZW4KIH0KIAogQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIGFycmF5U3BlY2llc0Ny
ZWF0ZShhcnJheSwgbGVuZ3RoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlz
QXJyYXkoYXJyYXkpKQotICAgICAgICByZXR1cm4gQG5ld0FycmF5V2l0aFNpemUobGVuZ3RoKTsK
LQotICAgIHZhciBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVjdG9yOwotICAgIHZhciBhcnJh
eUNvbnN0cnVjdG9ySW5SZWFsbSA9IEBBcnJheTsKLSAgICAvLyBXZSBoYXZlIHRoaXMgY2hlY2sg
c28gdGhhdCBpZiBzb21lIGFycmF5IGZyb20gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdAotICAg
IC8vIGNhbGxzIHRoaXMgbWFwIHRoZXkgZG9uJ3QgZ2V0IGFuIGFycmF5IHdpdGggdGhlIEFycmF5
LnByb3RvdHlwZSBvZiB0aGUKLSAgICAvLyBvdGhlciBnbG9iYWwgb2JqZWN0LgotICAgIGlmIChh
cnJheUNvbnN0cnVjdG9ySW5SZWFsbSAhPT0gY29uc3RydWN0b3IgJiYgQGlzQXJyYXlDb25zdHJ1
Y3Rvcihjb25zdHJ1Y3RvcikpCi0gICAgICAgIHJldHVybiBAbmV3QXJyYXlXaXRoU2l6ZShsZW5n
dGgpOwotCi0gICAgaWYgKEBpc09iamVjdChjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgY29uc3Ry
dWN0b3IgPSBjb25zdHJ1Y3Rvci5Ac3BlY2llc1N5bWJvbDsKLSAgICAgICAgaWYgKEBpc1VuZGVm
aW5lZE9yTnVsbChjb25zdHJ1Y3RvcikpCi0gICAgICAgICAgICByZXR1cm4gQG5ld0FycmF5V2l0
aFNpemUobGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoY29uc3RydWN0b3IgPT09IGFycmF5Q29u
c3RydWN0b3JJblJlYWxtIHx8IGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAgICAgICBy
ZXR1cm4gQG5ld0FycmF5V2l0aFNpemUobGVuZ3RoKTsKLSAgICByZXR1cm4gbmV3IGNvbnN0cnVj
dG9yKGxlbmd0aCk7Ci19Ci0KLUBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBmbGF0SW50b0FycmF5
KHRhcmdldCwgc291cmNlLCBzb3VyY2VMZW5ndGgsIHRhcmdldEluZGV4LCBkZXB0aCkKIHsKICAg
ICAidXNlIHN0cmljdCI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVp
bHRpbk5hbWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5z
L0J1aWx0aW5OYW1lcy5oCShyZXZpc2lvbiAyNDcwNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHQpIFwKICAgICBt
YWNybyhhcnJheUl0ZXJhdG9ySXNEb25lKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvcktpbmQp
IFwKKyAgICBtYWNybyhhcnJheVNwZWNpZXNDcmVhdGUpIFwKICAgICBtYWNybyhhc3NlcnQpIFwK
ICAgICBtYWNybyhjaGFyQ29kZUF0KSBcCiAgICAgbWFjcm8oZXhlY3V0b3IpIFwKQEAgLTEzMiw3
ICsxMzMsNiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhoYXNJbnN0YW5jZUJvdW5kRnVu
Y3Rpb24pIFwKICAgICBtYWNybyhpbnN0YW5jZU9mKSBcCiAgICAgbWFjcm8oaXNBcnJheVNsb3cp
IFwKLSAgICBtYWNybyhpc0FycmF5Q29uc3RydWN0b3IpIFwKICAgICBtYWNybyhpc0NvbnN0cnVj
dG9yKSBcCiAgICAgbWFjcm8oY29uY2F0TWVtY3B5KSBcCiAgICAgbWFjcm8oYXBwZW5kTWVtY3B5
KSBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9y
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNv
bnN0cnVjdG9yLmNwcAkocmV2aXNpb24gMjQ3MDU1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxMCAr
MTQ2LDQgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cgogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzQXJyYXlTbG93SW5saW5lKGV4ZWMsIGpz
Q2FzdDxQcm94eU9iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKIH0KIAot
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJ
c0FycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMt
PnZtKCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oanNEeW5hbWljQ2Fz
dDxBcnJheUNvbnN0cnVjdG9yKj4odm0sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpOwot
fQotCiB9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI0NzA1NSkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5
KQpAQCAtNTgsNyArNTgsNiBAQCBwcml2YXRlOgogCiBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdp
dGhTaXplUXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsK
IAotRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1
bmNJc0FycmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KEV4ZWNTdGF0ZSop
OwogYm9vbCBpc0FycmF5U2xvdyhFeGVjU3RhdGUqLCBQcm94eU9iamVjdCogYXJndW1lbnQpOwog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5
cGUuY3BwCShyZXZpc2lvbiAyNDcwNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBl
bnVtIGNsYXNzIFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQgewogICAgIENyZWF0ZWRPYmplY3QKIH07
CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0
LCBKU09iamVjdCo+IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTT2Jq
ZWN0KiB0aGlzT2JqZWN0LCB1bnNpZ25lZCBsZW5ndGgpCitzdGF0aWMgQUxXQVlTX0lOTElORSBz
dGQ6OnBhaXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzQ29uc3Ry
dWN0QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgdWludDY0X3Qg
bGVuZ3RoKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOwpAQCAtMjM4LDE0ICsyMzgsMTYgQEAgc3RhdGljIEFMV0FZ
U19JTkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDbwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBleGNlcHRpb25SZXN1bHQoKSk7CiAgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc0Nv
bnN0cnVjdG9yKHZtKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yT2JqZWN0
ID0ganNDYXN0PEpTT2JqZWN0Kj4oY29uc3RydWN0b3IpOwotICAgICAgICAgICAgaWYgKGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSAhPSBjb25zdHJ1Y3Rvck9iamVjdC0+Z2xvYmFsT2JqZWN0
KHZtKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0
cnVjdFJlc3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOzsKKyAgICAgICAgICAgIGJvb2wgaXNBcnJh
eUNvbnN0cnVjdG9yRnJvbUFub3RoZXJSZWFsbSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3Qo
KSAhPSBjb25zdHJ1Y3Rvck9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKQorICAgICAgICAgICAgICAg
ICYmIGpzRHluYW1pY0Nhc3Q8QXJyYXlDb25zdHJ1Y3Rvcio+KHZtLCBjb25zdHJ1Y3Rvck9iamVj
dCk7CisgICAgICAgICAgICBpZiAoaXNBcnJheUNvbnN0cnVjdG9yRnJvbUFub3RoZXJSZWFsbSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb25zdHJ1
Y3Rvci5pc09iamVjdCgpKSB7CiAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9y
LmdldChleGVjLCB2bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sKTsKICAgICAgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKICAgICAgICAg
ICAgIGlmIChjb25zdHJ1Y3Rvci5pc051bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Rk
OjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOzsK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAg
ICAgLy8gSWYgaXNBcnJheSBpcyBmYWxzZSwgcmV0dXJuID8gQXJyYXlDcmVhdGUobGVuZ3RoKS4K
QEAgLTI2Myw2ICsyNjUsMzEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPFNwZWNp
ZXNDbwogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpD
cmVhdGVkT2JqZWN0LCBuZXdPYmplY3QpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAg
Vk0mIHZtID0gZXhlYy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDAp
KTsKKyAgICBhdXRvIGxlbmd0aCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihleGVjLT5hcmd1bWVu
dCgxKS5hc051bWJlcigpKTsKKworICAgIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0
LCBKU09iamVjdCo+IHNwZWNpZXNSZXN1bHQgPSBzcGVjaWVzQ29uc3RydWN0QXJyYXkoZXhlYywg
b2JqZWN0LCBsZW5ndGgpOworICAgIEVYQ0VQVElPTl9BU1NFUlQoISFzY29wZS5leGNlcHRpb24o
KSA9PSAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpFeGNl
cHRpb24pKTsKKyAgICBpZiAoVU5MSUtFTFkoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVz
Q29uc3RydWN0UmVzdWx0OjpFeGNlcHRpb24pKQorICAgICAgICByZXR1cm4gZW5jb2RlZEpTVmFs
dWUoKTsKKyAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVz
dWx0OjpDcmVhdGVkT2JqZWN0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNwZWNp
ZXNSZXN1bHQuc2Vjb25kKTsKKworICAgIGF1dG8gdW5zaWduZWRMZW5ndGggPSBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4obGVuZ3RoKTsKKyAgICBpZiAodW5zaWduZWRMZW5ndGggIT0gbGVuZ3RoKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihleGVjLCBzY29wZSwgIkFycmF5IHNpemUgaXMgbm90
IGEgc21hbGwgZW5vdWdoIHBvc2l0aXZlIGludGVnZXIuIl9zKTsKKyAgICAgICAgcmV0dXJuIGVu
Y29kZWRKU1ZhbHVlKCk7CisgICAgfQorCisgICAgSlNPYmplY3QqIHJlc3VsdCA9IGNvbnN0cnVj
dEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgdW5zaWduZWRMZW5ndGgpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCkpOworfQorCiBzdGF0aWMgaW5saW5l
IHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0T3JFbmQoRXhlY1N0YXRlKiBl
eGVjLCBpbnQgYXJndW1lbnQsIHVuc2lnbmVkIGxlbmd0aCwgdW5zaWduZWQgdW5kZWZpbmVkVmFs
dWUgPSAwKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudChhcmd1bWVudCk7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBl
LmgJKHJldmlzaW9uIDI0NzA1NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAor
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUo
RXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5j
VG9TdHJpbmcoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jVmFsdWVzKEV4ZWNTdGF0ZSopOwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRNZW1jcHkoRXhlY1N0YXRlKik7CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShy
ZXZpc2lvbiAyNDcwNTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwOCw3ICs5MDgsNiBAQCBwdXREaXJlY3RX
aXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVyCiAjaWYgRU5BQkxFKElOVEwpCiAgICAgSlNG
dW5jdGlvbiogcHJpdmF0ZUZ1bmNEYXRlVGltZUZvcm1hdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1bmNEYXRlVGltZUZvcm1hdCk7CiAjZW5kaWYK
LSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lzQXJyYXlDb25zdHJ1Y3RvciA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRl
RnVuY0lzQXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc0Fy
cmF5U2xvdyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5
Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KTsKICAgICBKU0Z1bmN0aW9uKiBwcml2
YXRlRnVuY0NvbmNhdE1lbWNweSA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3Ry
aW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0NvbmNhdE1lbWNweSk7CiAgICAgSlNGdW5jdGlv
biogcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkgPSBKU0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMs
IDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkpOwpAQCAtOTg4
LDkgKzk4Nyw5IEBAIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAg
ICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LkludGVybmFsUHJvbWlzZVByaXZhdGVOYW1lKCksIGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9y
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAKICAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnJlcGVhdENoYXJhY3Rl
clByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCks
IHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3RlciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmFycmF5U3BlY2llc0NyZWF0ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIGFycmF5UHJvdG9GdW5jU3BlY2llc0Ny
ZWF0ZSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpE
b250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFs
UHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlQcml2
YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yLT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFt
ZXMtPmlzQXJyYXkpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAg
IEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0Fy
cmF5U2xvd1ByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNBcnJheVNsb3csIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlDb25zdHJ1Y3RvclByaXZhdGVOYW1l
KCksIHByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVz
LT5idWlsdGluTmFtZXMoKS5jb25jYXRNZW1jcHlQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0Nv
bmNhdE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBH
bG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwZW5k
TWVtY3B5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHksIFByb3BlcnR5QXR0
cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKIAo=
</data>
<flag name="review"
          id="389119"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
    <flag name="commit-queue"
          id="389120"
          type_id="3"
          status="-"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373523</attachid>
            <date>2019-07-05 12:24:49 -0700</date>
            <delta_ts>2019-07-05 13:26:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-182434-20190705222447.patch</filename>
            <type>text/plain</type>
            <size>19661</size>
            <attacher name="Alexey Shvayka">ashvayka</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNDcxNjcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE5LTA3LTA1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNo
QGdtYWlsLmNvbT4KKworICAgICAgICBbSlNDXSBDbGVhbiB1cCBBcnJheVNwZWNpZXNDcmVhdGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjQzNAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkanVzdHMg
ZXJyb3IgbWVzc2FnZSBleHBlY3RhdGlvbnMgaW4gc3RyZXNzIHRlc3RzLgorCisgICAgICAgICog
c3RyZXNzL2FycmF5LWZsYXRtYXAuanM6CisgICAgICAgICogc3RyZXNzL2FycmF5LWZsYXR0ZW4u
anM6CisgICAgICAgICogc3RyZXNzL2FycmF5LXNwZWNpZXMtY3JlYXRlLXNob3VsZC1oYW5kbGUt
bWFzcXVlcmFkZXIuanM6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDogTWFy
ayA0IHRlc3QgY2FzZXMgYXMgcGFzc2luZy4KKwogMjAxOS0wNy0wMiAgTWljaGFlbCBTYWJvZmYg
IDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAgICBFeGNlcHRpb24gZnJvbSBGb3IuLm9mIGxv
b3AgYXNzaWdubWVudCBlbGltaW5hdGVzIFREWiBjaGVja3MgaW4gc3Vic2VxdWVudCBjb2RlCklu
ZGV4OiBKU1Rlc3RzL3N0cmVzcy9hcnJheS1mbGF0bWFwLmpzCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVz
dHMvc3RyZXNzL2FycmF5LWZsYXRtYXAuanMJKHJldmlzaW9uIDI0NzE2NCkKKysrIEpTVGVzdHMv
c3RyZXNzL2FycmF5LWZsYXRtYXAuanMJKHdvcmtpbmcgY29weSkKQEAgLTY2LDcgKzY2LDcgQEAg
YXJyYXkyLmNvbnN0cnVjdG9yID0gMDsKIAogc2hvdWxkVGhyb3coKCkgPT4gewogICAgIGZsYXRN
YXAuY2FsbChhcnJheTIsICgpID0+IHt9KTsKLX0sIGBUeXBlRXJyb3I6IDAgaXMgbm90IGEgY29u
c3RydWN0b3JgKTsKK30sIGBUeXBlRXJyb3I6IFNwZWNpZXMgY29uc3RydWN0aW9uIGRpZCBub3Qg
Z2V0IGEgdmFsaWQgY29uc3RydWN0b3JgKTsKIAogdmFyIGFycmF5MiA9IG5ldyByZWFsbS5BcnJh
eTsKIGFycmF5Mi5jb25zdHJ1Y3RvciA9IHVuZGVmaW5lZDsKSW5kZXg6IEpTVGVzdHMvc3RyZXNz
L2FycmF5LWZsYXR0ZW4uanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvYXJyYXktZmxh
dHRlbi5qcwkocmV2aXNpb24gMjQ3MTY0KQorKysgSlNUZXN0cy9zdHJlc3MvYXJyYXktZmxhdHRl
bi5qcwkod29ya2luZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBhcnJheTIuY29uc3RydWN0b3Ig
PSAwOwogCiBzaG91bGRUaHJvdygoKSA9PiB7CiAgICAgZmxhdC5jYWxsKGFycmF5Mik7Ci19LCBg
VHlwZUVycm9yOiAwIGlzIG5vdCBhIGNvbnN0cnVjdG9yYCk7Cit9LCBgVHlwZUVycm9yOiBTcGVj
aWVzIGNvbnN0cnVjdGlvbiBkaWQgbm90IGdldCBhIHZhbGlkIGNvbnN0cnVjdG9yYCk7CiAKIHZh
ciBhcnJheTIgPSBuZXcgcmVhbG0uQXJyYXk7CiBhcnJheTIuY29uc3RydWN0b3IgPSB1bmRlZmlu
ZWQ7CkluZGV4OiBKU1Rlc3RzL3N0cmVzcy9hcnJheS1zcGVjaWVzLWNyZWF0ZS1zaG91bGQtaGFu
ZGxlLW1hc3F1ZXJhZGVyLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2FycmF5LXNw
ZWNpZXMtY3JlYXRlLXNob3VsZC1oYW5kbGUtbWFzcXVlcmFkZXIuanMJKHJldmlzaW9uIDI0NzE2
NCkKKysrIEpTVGVzdHMvc3RyZXNzL2FycmF5LXNwZWNpZXMtY3JlYXRlLXNob3VsZC1oYW5kbGUt
bWFzcXVlcmFkZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTE3LDUgKzE3LDUgQEAgbm9JbmxpbmUo
c2hvdWxkVGhyb3cpOwogZm9yICh2YXIgaSA9IDA7IGkgPCAxZTU7ICsraSkgewogICAgIHNob3Vs
ZFRocm93KCgpID0+IHsKICAgICAgICAgbmV3IChjbGFzcyBleHRlbmRzIEFycmF5IHsgc3RhdGlj
IGdldCBbU3ltYm9sLnNwZWNpZXNdKCkgeyByZXR1cm4gbWFrZU1hc3F1ZXJhZGVyKCk7IH0gfSko
MSwgMiwgMykuZmxhdCgpLmNvbnN0cnVjdG9yCi0gICAgfSwgYFR5cGVFcnJvcjogTWFzcXVlcmFk
ZXIgaXMgbm90IGEgY29uc3RydWN0b3JgKTsKKyAgICB9LCBgVHlwZUVycm9yOiBTcGVjaWVzIGNv
bnN0cnVjdGlvbiBkaWQgbm90IGdldCBhIHZhbGlkIGNvbnN0cnVjdG9yYCk7CiB9CkluZGV4OiBK
U1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy90
ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCShyZXZpc2lvbiAyNDcxNjQpCisrKyBKU1Rlc3RzL3Rl
c3QyNjIvZXhwZWN0YXRpb25zLnlhbWwJKHdvcmtpbmcgY29weSkKQEAgLTY2MCw5ICs2NjAsNiBA
QCB0ZXN0L2J1aWx0LWlucy9BcnJheS9wcm90b3R5cGUvcHVzaC90aHJvCiB0ZXN0L2J1aWx0LWlu
cy9BcnJheS9wcm90b3R5cGUvcmV2ZXJzZS9sZW5ndGgtZXhjZWVkaW5nLWludGVnZXItbGltaXQt
d2l0aC1wcm94eS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgYSBTdG9w
UmV2ZXJzZSBidXQgZ290IGEgVGVzdDI2MkVycm9yJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJF
cnJvcjogRXhwZWN0ZWQgYSBTdG9wUmV2ZXJzZSBidXQgZ290IGEgVGVzdDI2MkVycm9yJwotdGVz
dC9idWlsdC1pbnMvQXJyYXkvcHJvdG90eXBlL3NsaWNlL2NyZWF0ZS1wcm90by1mcm9tLWN0b3It
cmVhbG0tbm9uLWFycmF5LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBT
YW1lVmFsdWUow4LCq8OCwrssIMOCwqtbb2JqZWN0IE9iamVjdF3DgsK7KSB0byBiZSB0cnVlJwot
ICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMOCwqvDgsK7
LCDDgsKrW29iamVjdCBPYmplY3Rdw4LCuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVpbHQtaW5zL0Fy
cmF5L3Byb3RvdHlwZS9zbGljZS9sZW5ndGgtZXhjZWVkaW5nLWludGVnZXItbGltaXQtcHJveGll
ZC1hcnJheS5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgW10gYW5kIFs5
MDA3MTk5MjU0NzQwOTg5LCA5MDA3MTk5MjU0NzQwOTkwXSB0byBoYXZlIHRoZSBzYW1lIGNvbnRl
bnRzLiBzbGljZSg5MDA3MTk5MjU0NzQwOTg5KScKICAgc3RyaWN0IG1vZGU6ICdUZXN0MjYyRXJy
b3I6IEV4cGVjdGVkIFtdIGFuZCBbOTAwNzE5OTI1NDc0MDk4OSwgOTAwNzE5OTI1NDc0MDk5MF0g
dG8gaGF2ZSB0aGUgc2FtZSBjb250ZW50cy4gc2xpY2UoOTAwNzE5OTI1NDc0MDk4OSknCkBAIC02
NzgsOSArNjc1LDYgQEAgdGVzdC9idWlsdC1pbnMvQXJyYXkvcHJvdG90eXBlL3NwbGljZS9TMQog
dGVzdC9idWlsdC1pbnMvQXJyYXkvcHJvdG90eXBlL3NwbGljZS9jbGFtcHMtbGVuZ3RoLXRvLWlu
dGVnZXItbGltaXQuanM6CiAgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IExlbmd0aCBpcyAyKio1
MyAtIDEgRXhwZWN0ZWQgU2FtZVZhbHVlKMOCwqs0Mjk0OTY3Mjk1w4LCuywgw4LCqzkwMDcxOTky
NTQ3NDA5OTHDgsK7KSB0byBiZSB0cnVlJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
TGVuZ3RoIGlzIDIqKjUzIC0gMSBFeHBlY3RlZCBTYW1lVmFsdWUow4LCqzQyOTQ5NjcyOTXDgsK7
LCDDgsKrOTAwNzE5OTI1NDc0MDk5McOCwrspIHRvIGJlIHRydWUnCi10ZXN0L2J1aWx0LWlucy9B
cnJheS9wcm90b3R5cGUvc3BsaWNlL2NyZWF0ZS1wcm90by1mcm9tLWN0b3ItcmVhbG0tbm9uLWFy
cmF5LmpzOgotICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBFeHBlY3RlZCBTYW1lVmFsdWUow4LC
q8OCwrssIMOCwqtbb2JqZWN0IE9iamVjdF3DgsK7KSB0byBiZSB0cnVlJwotICBzdHJpY3QgbW9k
ZTogJ1Rlc3QyNjJFcnJvcjogRXhwZWN0ZWQgU2FtZVZhbHVlKMOCwqvDgsK7LCDDgsKrW29iamVj
dCBPYmplY3Rdw4LCuykgdG8gYmUgdHJ1ZScKIHRlc3QvYnVpbHQtaW5zL0FycmF5L3Byb3RvdHlw
ZS9zcGxpY2UvY3JlYXRlLXByb3h5LmpzOgogICBkZWZhdWx0OiAnVHlwZUVycm9yOiBBdHRlbXB0
ZWQgdG8gYXNzaWduIHRvIHJlYWRvbmx5IHByb3BlcnR5LicKICAgc3RyaWN0IG1vZGU6ICdUeXBl
RXJyb3I6IEF0dGVtcHRlZCB0byBhc3NpZ24gdG8gcmVhZG9ubHkgcHJvcGVydHkuJwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNDcxNjQpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTkt
MDctMDUgIEFsZXhleSBTaHZheWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgorCisgICAgICAg
IFtKU0NdIENsZWFuIHVwIEFycmF5U3BlY2llc0NyZWF0ZQorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgyNDM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2UgaGF2ZSBkdXBsaWNhdGUgY29kZSBpbiBhcnJh
eVNwZWNpZXNDcmVhdGUsIGZpbHRlciwgbWFwLCBjb25jYXRTbG93UGF0aCBvZiBBcnJheVByb3Rv
dHlwZS5qcworICAgICAgICBhbmQgc3BlY2llc0NvbnN0cnVjdEFycmF5IG9mIEFycmF5UHJvdG90
eXBlLmNwcC4gVGhpcyBwYXRjaCBmaXhlcyBjcm9zcy1yZWFsbSBBcnJheSBjb25zdHJ1Y3Rvcgor
ICAgICAgICBkZXRlY3Rpb24gaW4gbmF0aXZlIHNwZWNpZXNDb25zdHJ1Y3RBcnJheSwgdXBncmFk
ZXMgYGxlbmd0aGAgdHlwZSB0byBjb3JyZWN0bHkgaGFuZGxlIGxhcmdlIGludGVnZXJzLAorICAg
ICAgICBhbmQgZXhwb3NlcyBpdCBhcyBAYXJyYXlTcGVjaWVzQ3JlYXRlLiBBbHNvIHJlbW92ZXMg
bm93IHVudXNlZCBAaXNBcnJheUNvbnN0cnVjdG9yIHByaXZhdGUgZnVuY3Rpb24uCisgICAgICAg
IE5hdGl2ZSBzcGVjaWVzQ29uc3RydWN0QXJyYXkgaXMgcHJlZmVycmVkIGJlY2F1c2UgaXQgaGFz
IGZhc3QgcGF0aCB2aWEgc3BlY2llc1dhdGNocG9pbnRJc1ZhbGlkLgorCisgICAgICAgIFRob3Jv
dWdobHkgYmVuY2htYXJrZWQ6IHRoaXMgY2hhbmdlIHByb2dyZXNzZXMgQVJFUy02IGJ5IDAtMSUu
CisKKyAgICAgICAgKiBidWlsdGlucy9BcnJheVByb3RvdHlwZS5qczoKKyAgICAgICAgKGZpbHRl
cik6CisgICAgICAgIChtYXApOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5jb25jYXRTbG93UGF0
aCk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLmFycmF5U3BlY2llc0NyZWF0ZSk6IERlbGV0ZWQu
CisgICAgICAgICogYnVpbHRpbnMvQnVpbHRpbk5hbWVzLmg6CisgICAgICAgICogcnVudGltZS9B
cnJheUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlDb25zdHJ1Y3RvclByaXZh
dGVGdW5jSXNBcnJheUNvbnN0cnVjdG9yKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNTcGVjaWVzQ3JlYXRlKToKKyAgICAgICAgKiBy
dW50aW1lL0FycmF5UHJvdG90eXBlLmg6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKwogMjAxOS0wNy0w
NSAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMjQ3MTE1LgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J1
aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9idWlsdGlucy9BcnJheVByb3RvdHlwZS5qcwkocmV2aXNpb24gMjQ3MTY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FycmF5UHJvdG90eXBlLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzUsMjcgKzE3NSw3IEBAIGZ1bmN0aW9uIGZpbHRlcihjYWxsYmFjayAvKiwgdGhp
c0FyZyAqLykKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJBcnJheS5wcm90b3R5cGUuZmlsdGVy
IGNhbGxiYWNrIG11c3QgYmUgYSBmdW5jdGlvbiIpOwogICAgIAogICAgIHZhciB0aGlzQXJnID0g
QGFyZ3VtZW50KDEpOwotCi0gICAgLy8gRG8gOS40LjIuMyBBcnJheVNwZWNpZXNDcmVhdGUKLSAg
ICB2YXIgcmVzdWx0OwotICAgIHZhciBjb25zdHJ1Y3RvcjsKLSAgICBpZiAoQGlzQXJyYXkoYXJy
YXkpKSB7Ci0gICAgICAgIGNvbnN0cnVjdG9yID0gYXJyYXkuY29uc3RydWN0b3I7Ci0gICAgICAg
IC8vIFdlIGhhdmUgdGhpcyBjaGVjayBzbyB0aGF0IGlmIHNvbWUgYXJyYXkgZnJvbSBhIGRpZmZl
cmVudCBnbG9iYWwgb2JqZWN0Ci0gICAgICAgIC8vIGNhbGxzIHRoaXMgbWFwIHRoZXkgZG9uJ3Qg
Z2V0IGFuIGFycmF5IHdpdGggdGhlIEFycmF5LnByb3RvdHlwZSBvZiB0aGUKLSAgICAgICAgLy8g
b3RoZXIgZ2xvYmFsIG9iamVjdC4KLSAgICAgICAgaWYgKEBBcnJheSAhPT0gY29uc3RydWN0b3Ig
JiYgQGlzQXJyYXlDb25zdHJ1Y3Rvcihjb25zdHJ1Y3RvcikpCi0gICAgICAgICAgICBjb25zdHJ1
Y3RvciA9IEB1bmRlZmluZWQ7Ci0gICAgICAgIGlmIChAaXNPYmplY3QoY29uc3RydWN0b3IpKSB7
Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLkBzcGVjaWVzU3ltYm9sOwot
ICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBudWxsKQotICAgICAgICAgICAgICAgIGNv
bnN0cnVjdG9yID0gQHVuZGVmaW5lZDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoY29uc3Ry
dWN0b3IgPT09IEBBcnJheSB8fCBjb25zdHJ1Y3RvciA9PT0gQHVuZGVmaW5lZCkKLSAgICAgICAg
cmVzdWx0ID0gQG5ld0FycmF5V2l0aFNpemUoMCk7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQg
PSBuZXcgY29uc3RydWN0b3IoMCk7CisgICAgdmFyIHJlc3VsdCA9IEBhcnJheVNwZWNpZXNDcmVh
dGUoYXJyYXksIDApOwogCiAgICAgdmFyIG5leHRJbmRleCA9IDA7CiAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgewpAQCAtMjIxLDI3ICsyMDEsNyBAQCBmdW5jdGlvbiBtYXAo
Y2FsbGJhY2sgLyosIHRoaXNBcmcgKi8pCiAgICAgICAgIEB0aHJvd1R5cGVFcnJvcigiQXJyYXku
cHJvdG90eXBlLm1hcCBjYWxsYmFjayBtdXN0IGJlIGEgZnVuY3Rpb24iKTsKICAgICAKICAgICB2
YXIgdGhpc0FyZyA9IEBhcmd1bWVudCgxKTsKLQotICAgIC8vIERvIDkuNC4yLjMgQXJyYXlTcGVj
aWVzQ3JlYXRlCi0gICAgdmFyIHJlc3VsdDsKLSAgICB2YXIgY29uc3RydWN0b3I7Ci0gICAgaWYg
KEBpc0FycmF5KGFycmF5KSkgewotICAgICAgICBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVj
dG9yOwotICAgICAgICAvLyBXZSBoYXZlIHRoaXMgY2hlY2sgc28gdGhhdCBpZiBzb21lIGFycmF5
IGZyb20gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdAotICAgICAgICAvLyBjYWxscyB0aGlzIG1h
cCB0aGV5IGRvbid0IGdldCBhbiBhcnJheSB3aXRoIHRoZSBBcnJheS5wcm90b3R5cGUgb2YgdGhl
Ci0gICAgICAgIC8vIG90aGVyIGdsb2JhbCBvYmplY3QuCi0gICAgICAgIGlmIChAQXJyYXkgIT09
IGNvbnN0cnVjdG9yICYmIEBpc0FycmF5Q29uc3RydWN0b3IoY29uc3RydWN0b3IpKQotICAgICAg
ICAgICAgY29uc3RydWN0b3IgPSBAdW5kZWZpbmVkOwotICAgICAgICBpZiAoQGlzT2JqZWN0KGNv
bnN0cnVjdG9yKSkgewotICAgICAgICAgICAgY29uc3RydWN0b3IgPSBjb25zdHJ1Y3Rvci5Ac3Bl
Y2llc1N5bWJvbDsKLSAgICAgICAgICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gbnVsbCkKLSAgICAg
ICAgICAgICAgICBjb25zdHJ1Y3RvciA9IEB1bmRlZmluZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0g
ICAgaWYgKGNvbnN0cnVjdG9yID09PSBAQXJyYXkgfHwgY29uc3RydWN0b3IgPT09IEB1bmRlZmlu
ZWQpCi0gICAgICAgIHJlc3VsdCA9IEBuZXdBcnJheVdpdGhTaXplKGxlbmd0aCk7Ci0gICAgZWxz
ZQotICAgICAgICByZXN1bHQgPSBuZXcgY29uc3RydWN0b3IobGVuZ3RoKTsKKyAgICB2YXIgcmVz
dWx0ID0gQGFycmF5U3BlY2llc0NyZWF0ZShhcnJheSwgbGVuZ3RoKTsKIAogICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgaWYgKCEoaSBpbiBhcnJheSkpCkBA
IC02MjAsMjggKzU4MCw5IEBAIGZ1bmN0aW9uIGNvbmNhdFNsb3dQYXRoKCkKICAgICAidXNlIHN0
cmljdCI7CiAKICAgICB2YXIgY3VycmVudEVsZW1lbnQgPSBAdG9PYmplY3QodGhpcywgIkFycmF5
LnByb3RvdHlwZS5jb25jYXQgcmVxdWlyZXMgdGhhdCB8dGhpc3wgbm90IGJlIG51bGwgb3IgdW5k
ZWZpbmVkIik7Ci0KLSAgICB2YXIgY29uc3RydWN0b3I7Ci0gICAgaWYgKEBpc0FycmF5KGN1cnJl
bnRFbGVtZW50KSkgewotICAgICAgICBjb25zdHJ1Y3RvciA9IGN1cnJlbnRFbGVtZW50LmNvbnN0
cnVjdG9yOwotICAgICAgICAvLyBXZSBoYXZlIHRoaXMgY2hlY2sgc28gdGhhdCBpZiBzb21lIGFy
cmF5IGZyb20gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdAotICAgICAgICAvLyBjYWxscyB0aGlz
IG1hcCB0aGV5IGRvbid0IGdldCBhbiBhcnJheSB3aXRoIHRoZSBBcnJheS5wcm90b3R5cGUgb2Yg
dGhlCi0gICAgICAgIC8vIG90aGVyIGdsb2JhbCBvYmplY3QuCi0gICAgICAgIGlmIChAQXJyYXkg
IT09IGNvbnN0cnVjdG9yICYmIEBpc0FycmF5Q29uc3RydWN0b3IoY29uc3RydWN0b3IpKQotICAg
ICAgICAgICAgY29uc3RydWN0b3IgPSBAdW5kZWZpbmVkOwotICAgICAgICBlbHNlIGlmIChAaXNP
YmplY3QoY29uc3RydWN0b3IpKSB7Ci0gICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVj
dG9yLkBzcGVjaWVzU3ltYm9sOwotICAgICAgICAgICAgaWYgKGNvbnN0cnVjdG9yID09PSBudWxs
KQotICAgICAgICAgICAgICAgIGNvbnN0cnVjdG9yID0gQEFycmF5OwotICAgICAgICB9Ci0gICAg
fQotCiAgICAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aDsKLSAgICB2YXIgcmVzdWx0
OwotICAgIGlmIChjb25zdHJ1Y3RvciA9PT0gQEFycmF5IHx8IGNvbnN0cnVjdG9yID09PSBAdW5k
ZWZpbmVkKQotICAgICAgICByZXN1bHQgPSBAbmV3QXJyYXlXaXRoU2l6ZSgwKTsKLSAgICBlbHNl
Ci0gICAgICAgIHJlc3VsdCA9IG5ldyBjb25zdHJ1Y3RvcigwKTsKKworICAgIHZhciByZXN1bHQg
PSBAYXJyYXlTcGVjaWVzQ3JlYXRlKGN1cnJlbnRFbGVtZW50LCAwKTsKICAgICB2YXIgcmVzdWx0
SXNBcnJheSA9IEBpc0pTQXJyYXkocmVzdWx0KTsKIAogICAgIHZhciByZXN1bHRJbmRleCA9IDA7
CkBAIC03NDQsMzMgKzY4NSw2IEBAIGZ1bmN0aW9uIGNvcHlXaXRoaW4odGFyZ2V0LCBzdGFydCAv
KiwgZW4KIH0KIAogQGdsb2JhbFByaXZhdGUKLWZ1bmN0aW9uIGFycmF5U3BlY2llc0NyZWF0ZShh
cnJheSwgbGVuZ3RoKQotewotICAgICJ1c2Ugc3RyaWN0IjsKLQotICAgIGlmICghQGlzQXJyYXko
YXJyYXkpKQotICAgICAgICByZXR1cm4gQG5ld0FycmF5V2l0aFNpemUobGVuZ3RoKTsKLQotICAg
IHZhciBjb25zdHJ1Y3RvciA9IGFycmF5LmNvbnN0cnVjdG9yOwotICAgIHZhciBhcnJheUNvbnN0
cnVjdG9ySW5SZWFsbSA9IEBBcnJheTsKLSAgICAvLyBXZSBoYXZlIHRoaXMgY2hlY2sgc28gdGhh
dCBpZiBzb21lIGFycmF5IGZyb20gYSBkaWZmZXJlbnQgZ2xvYmFsIG9iamVjdAotICAgIC8vIGNh
bGxzIHRoaXMgbWFwIHRoZXkgZG9uJ3QgZ2V0IGFuIGFycmF5IHdpdGggdGhlIEFycmF5LnByb3Rv
dHlwZSBvZiB0aGUKLSAgICAvLyBvdGhlciBnbG9iYWwgb2JqZWN0LgotICAgIGlmIChhcnJheUNv
bnN0cnVjdG9ySW5SZWFsbSAhPT0gY29uc3RydWN0b3IgJiYgQGlzQXJyYXlDb25zdHJ1Y3Rvcihj
b25zdHJ1Y3RvcikpCi0gICAgICAgIHJldHVybiBAbmV3QXJyYXlXaXRoU2l6ZShsZW5ndGgpOwot
Ci0gICAgaWYgKEBpc09iamVjdChjb25zdHJ1Y3RvcikpIHsKLSAgICAgICAgY29uc3RydWN0b3Ig
PSBjb25zdHJ1Y3Rvci5Ac3BlY2llc1N5bWJvbDsKLSAgICAgICAgaWYgKEBpc1VuZGVmaW5lZE9y
TnVsbChjb25zdHJ1Y3RvcikpCi0gICAgICAgICAgICByZXR1cm4gQG5ld0FycmF5V2l0aFNpemUo
bGVuZ3RoKTsKLSAgICB9Ci0KLSAgICBpZiAoY29uc3RydWN0b3IgPT09IGFycmF5Q29uc3RydWN0
b3JJblJlYWxtIHx8IGNvbnN0cnVjdG9yID09PSBAdW5kZWZpbmVkKQotICAgICAgICByZXR1cm4g
QG5ld0FycmF5V2l0aFNpemUobGVuZ3RoKTsKLSAgICByZXR1cm4gbmV3IGNvbnN0cnVjdG9yKGxl
bmd0aCk7Ci19Ci0KLUBnbG9iYWxQcml2YXRlCiBmdW5jdGlvbiBmbGF0SW50b0FycmF5KHRhcmdl
dCwgc291cmNlLCBzb3VyY2VMZW5ndGgsIHRhcmdldEluZGV4LCBkZXB0aCkKIHsKICAgICAidXNl
IHN0cmljdCI7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQnVpbHRpbk5h
bWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0J1aWx0
aW5OYW1lcy5oCShyZXZpc2lvbiAyNDcxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVp
bHRpbnMvQnVpbHRpbk5hbWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvck5leHQpIFwKICAgICBtYWNybyhh
cnJheUl0ZXJhdG9ySXNEb25lKSBcCiAgICAgbWFjcm8oYXJyYXlJdGVyYXRvcktpbmQpIFwKKyAg
ICBtYWNybyhhcnJheVNwZWNpZXNDcmVhdGUpIFwKICAgICBtYWNybyhhc3NlcnQpIFwKICAgICBt
YWNybyhjaGFyQ29kZUF0KSBcCiAgICAgbWFjcm8oZXhlY3V0b3IpIFwKQEAgLTEzMiw3ICsxMzMs
NiBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhoYXNJbnN0YW5jZUJvdW5kRnVuY3Rpb24p
IFwKICAgICBtYWNybyhpbnN0YW5jZU9mKSBcCiAgICAgbWFjcm8oaXNBcnJheVNsb3cpIFwKLSAg
ICBtYWNybyhpc0FycmF5Q29uc3RydWN0b3IpIFwKICAgICBtYWNybyhpc0NvbnN0cnVjdG9yKSBc
CiAgICAgbWFjcm8oY29uY2F0TWVtY3B5KSBcCiAgICAgbWFjcm8oYXBwZW5kTWVtY3B5KSBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVjdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheUNvbnN0cnVj
dG9yLmNwcAkocmV2aXNpb24gMjQ3MTY0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvQXJyYXlDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0NiwxMCArMTQ2LDQg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cgogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGlzQXJyYXlTbG93SW5saW5lKGV4ZWMsIGpzQ2FzdDxQ
cm94eU9iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpKTsKIH0KIAotRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0FycmF5
Q29uc3RydWN0b3IoRXhlY1N0YXRlKiBleGVjKQotewotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oanNEeW5hbWljQ2FzdDxBcnJh
eUNvbnN0cnVjdG9yKj4odm0sIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSkpOwotfQotCiB9
IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Fy
cmF5Q29uc3RydWN0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9BcnJheUNvbnN0cnVjdG9yLmgJKHJldmlzaW9uIDI0NzE2NCkKKysrIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5Q29uc3RydWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAt
NTgsNyArNTgsNiBAQCBwcml2YXRlOgogCiBKU0FycmF5KiBjb25zdHJ1Y3RBcnJheVdpdGhTaXpl
UXVpcmsoRXhlY1N0YXRlKiwgQXJyYXlBbGxvY2F0aW9uUHJvZmlsZSosIEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBsZW5ndGgsIEpTVmFsdWUgcHJvdG90eXBlID0gSlNWYWx1ZSgpKTsKIAotRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUNvbnN0cnVjdG9yUHJpdmF0ZUZ1bmNJc0Fy
cmF5Q29uc3RydWN0b3IoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlTbG93KEV4ZWNTdGF0ZSopOwogYm9v
bCBpc0FycmF5U2xvdyhFeGVjU3RhdGUqLCBQcm94eU9iamVjdCogYXJndW1lbnQpOwogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJheVByb3RvdHlwZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3Bw
CShyZXZpc2lvbiAyNDcxNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9BcnJh
eVByb3RvdHlwZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw3ICsyMTMsNyBAQCBlbnVtIGNs
YXNzIFNwZWNpZXNDb25zdHJ1Y3RSZXN1bHQgewogICAgIENyZWF0ZWRPYmplY3QKIH07CiAKLXN0
YXRpYyBBTFdBWVNfSU5MSU5FIHN0ZDo6cGFpcjxTcGVjaWVzQ29uc3RydWN0UmVzdWx0LCBKU09i
amVjdCo+IHNwZWNpZXNDb25zdHJ1Y3RBcnJheShFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiB0
aGlzT2JqZWN0LCB1bnNpZ25lZCBsZW5ndGgpCitzdGF0aWMgQUxXQVlTX0lOTElORSBzdGQ6OnBh
aXI8U3BlY2llc0NvbnN0cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzQ29uc3RydWN0QXJy
YXkoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogdGhpc09iamVjdCwgdWludDY0X3QgbGVuZ3Ro
KQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOwpAQCAtMjM4LDE0ICsyMzgsMTYgQEAgc3RhdGljIEFMV0FZU19JTkxJ
TkUgc3RkOjpwYWlyPFNwZWNpZXNDbwogICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCBleGNlcHRpb25SZXN1bHQoKSk7CiAgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc0NvbnN0cnVj
dG9yKHZtKSkgewogICAgICAgICAgICAgSlNPYmplY3QqIGNvbnN0cnVjdG9yT2JqZWN0ID0ganND
YXN0PEpTT2JqZWN0Kj4oY29uc3RydWN0b3IpOwotICAgICAgICAgICAgaWYgKGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSAhPSBjb25zdHJ1Y3Rvck9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKSkK
LSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOzsKKyAgICAgICAgICAgIGJvb2wgaXNBcnJheUNvbnN0
cnVjdG9yRnJvbUFub3RoZXJSZWFsbSA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSAhPSBj
b25zdHJ1Y3Rvck9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKQorICAgICAgICAgICAgICAgICYmIGNv
bnN0cnVjdG9yT2JqZWN0LT5pbmhlcml0czxBcnJheUNvbnN0cnVjdG9yPih2bSk7CisgICAgICAg
ICAgICBpZiAoaXNBcnJheUNvbnN0cnVjdG9yRnJvbUFub3RoZXJSZWFsbSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBh
dGgsIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgICAgIGlmIChjb25zdHJ1Y3Rvci5pc09iamVj
dCgpKSB7CiAgICAgICAgICAgICBjb25zdHJ1Y3RvciA9IGNvbnN0cnVjdG9yLmdldChleGVjLCB2
bS5wcm9wZXJ0eU5hbWVzLT5zcGVjaWVzU3ltYm9sKTsKICAgICAgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIGV4Y2VwdGlvblJlc3VsdCgpKTsKICAgICAgICAgICAgIGlmIChjb25z
dHJ1Y3Rvci5pc051bGwoKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
U3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBhdGgsIG51bGxwdHIpOzsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RmFzdFBh
dGgsIG51bGxwdHIpOwogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gSWYgaXNB
cnJheSBpcyBmYWxzZSwgcmV0dXJuID8gQXJyYXlDcmVhdGUobGVuZ3RoKS4KQEAgLTI2Myw2ICsy
NjUsMjggQEAgc3RhdGljIEFMV0FZU19JTkxJTkUgc3RkOjpwYWlyPFNwZWNpZXNDbwogICAgIHJl
dHVybiBzdGQ6Om1ha2VfcGFpcihTcGVjaWVzQ29uc3RydWN0UmVzdWx0OjpDcmVhdGVkT2JqZWN0
LCBuZXdPYmplY3QpOwogfQogCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJv
dG9GdW5jU3BlY2llc0NyZWF0ZShFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgVk0mIHZtID0gZXhl
Yy0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAg
SlNPYmplY3QqIG9iamVjdCA9IGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsK
KyAgICB1aW50NjRfdCBsZW5ndGggPSBzdGF0aWNfY2FzdDx1aW50NjRfdD4oZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMSkuYXNOdW1iZXIoKSk7CisKKyAgICBzdGQ6OnBhaXI8U3BlY2llc0NvbnN0
cnVjdFJlc3VsdCwgSlNPYmplY3QqPiBzcGVjaWVzUmVzdWx0ID0gc3BlY2llc0NvbnN0cnVjdEFy
cmF5KGV4ZWMsIG9iamVjdCwgbGVuZ3RoKTsKKyAgICBFWENFUFRJT05fQVNTRVJUKCEhc2NvcGUu
ZXhjZXB0aW9uKCkgPT0gKHNwZWNpZXNSZXN1bHQuZmlyc3QgPT0gU3BlY2llc0NvbnN0cnVjdFJl
c3VsdDo6RXhjZXB0aW9uKSk7CisgICAgaWYgKFVOTElLRUxZKHNwZWNpZXNSZXN1bHQuZmlyc3Qg
PT0gU3BlY2llc0NvbnN0cnVjdFJlc3VsdDo6RXhjZXB0aW9uKSkKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICBpZiAoc3BlY2llc1Jlc3VsdC5maXJzdCA9PSBTcGVjaWVzQ29uc3RydWN0UmVzdWx0
OjpDcmVhdGVkT2JqZWN0KQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNwZWNpZXNS
ZXN1bHQuc2Vjb25kKTsKKworICAgIGlmIChsZW5ndGggPiBzdGQ6Om51bWVyaWNfbGltaXRzPHVu
c2lnbmVkPjo6bWF4KCkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGV4ZWMsIHNjb3BlLCAi
QXJyYXkgc2l6ZSBpcyBub3QgYSBzbWFsbCBlbm91Z2ggcG9zaXRpdmUgaW50ZWdlci4iX3MpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKGNvbnN0cnVjdEVtcHR5QXJyYXkoZXhlYywgbnVsbHB0ciwgbGVu
Z3RoKSkpOworfQorCiBzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZEluZGV4
RnJvbVN0YXJ0T3JFbmQoRXhlY1N0YXRlKiBleGVjLCBpbnQgYXJndW1lbnQsIHVuc2lnbmVkIGxl
bmd0aCwgdW5zaWduZWQgdW5kZWZpbmVkVmFsdWUgPSAwKQogewogICAgIEpTVmFsdWUgdmFsdWUg
PSBleGVjLT5hcmd1bWVudChhcmd1bWVudCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9BcnJheVByb3RvdHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHJldmlzaW9uIDI0NzE2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0FycmF5UHJvdG90eXBlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUwLDYgKzUwLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0m
LCBKU0dsb2JhbE9iamVjdCopOwogfTsKIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBh
cnJheVByb3RvRnVuY1NwZWNpZXNDcmVhdGUoRXhlY1N0YXRlKik7CiBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVG9TdHJpbmcoRXhlY1N0YXRlKik7CiBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jVmFsdWVzKEV4ZWNTdGF0ZSopOwog
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvUHJpdmF0ZUZ1bmNDb25jYXRN
ZW1jcHkoRXhlY1N0YXRlKik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCShyZXZpc2lvbiAyNDcxNjQpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTkwOCw3ICs5MDgsNiBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVy
CiAjaWYgRU5BQkxFKElOVEwpCiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNEYXRlVGltZUZv
cm1hdCA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGdsb2JhbEZ1
bmNEYXRlVGltZUZvcm1hdCk7CiAjZW5kaWYKLSAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0lz
QXJyYXlDb25zdHJ1Y3RvciA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5n
KCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlDb25zdHJ1Y3Rvcik7CiAgICAg
SlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNJc0FycmF5U2xvdyA9IEpTRnVuY3Rpb246OmNyZWF0ZSh2
bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5Q29uc3RydWN0b3JQcml2YXRlRnVuY0lzQXJyYXlT
bG93KTsKICAgICBKU0Z1bmN0aW9uKiBwcml2YXRlRnVuY0NvbmNhdE1lbWNweSA9IEpTRnVuY3Rp
b246OmNyZWF0ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGFycmF5UHJvdG9Qcml2YXRlRnVuY0Nv
bmNhdE1lbWNweSk7CiAgICAgSlNGdW5jdGlvbiogcHJpdmF0ZUZ1bmNBcHBlbmRNZW1jcHkgPSBK
U0Z1bmN0aW9uOjpjcmVhdGUodm0sIHRoaXMsIDAsIFN0cmluZygpLCBhcnJheVByb3RvUHJpdmF0
ZUZ1bmNBcHBlbmRNZW1jcHkpOwpAQCAtOTg4LDkgKzk4Nyw5IEBAIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXIKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnBy
b3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLkludGVybmFsUHJvbWlzZVByaXZhdGVOYW1lKCks
IGludGVybmFsUHJvbWlzZUNvbnN0cnVjdG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSksCiAKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1
aWx0aW5OYW1lcygpLnJlcGVhdENoYXJhY3RlclByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNy
ZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5nKCksIHN0cmluZ1Byb3RvRnVuY1JlcGVhdENoYXJhY3Rl
ciksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKKyAgICAgICAgR2xvYmFsUHJv
cGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmFycmF5U3BlY2llc0Ny
ZWF0ZVByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywgMiwgU3RyaW5n
KCksIGFycmF5UHJvdG9GdW5jU3BlY2llc0NyZWF0ZSksIFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6
OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMt
PmJ1aWx0aW5OYW1lcygpLmlzQXJyYXlQcml2YXRlTmFtZSgpLCBhcnJheUNvbnN0cnVjdG9yLT5n
ZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzQXJyYXkpLCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0
cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0
eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pc0FycmF5U2xvd1ByaXZhdGVOYW1lKCksIHByaXZhdGVG
dW5jSXNBcnJheVNsb3csIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKLSAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLmlz
QXJyYXlDb25zdHJ1Y3RvclByaXZhdGVOYW1lKCksIHByaXZhdGVGdW5jSXNBcnJheUNvbnN0cnVj
dG9yLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFBy
b3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5jb25jYXRNZW1jcHlQ
cml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY0NvbmNhdE1lbWNweSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpLAogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkuYXBwZW5kTWVtY3B5UHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1
bmNBcHBlbmRNZW1jcHksIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>