<?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>203454</bug_id>
          
          <creation_ts>2019-10-26 00:24:36 -0700</creation_ts>
          <short_desc>[JSC] Optimize Promise runtime functions</short_desc>
          <delta_ts>2019-10-29 20:12:48 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ews-watchlist</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>1584204</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-26 00:24:36 -0700</bug_when>
    <thetext>[JSC] Optimize Promise runtime functions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584205</commentid>
    <comment_count>1</comment_count>
      <attachid>382005</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-26 00:26:36 -0700</bug_when>
    <thetext>Created attachment 382005
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584208</commentid>
    <comment_count>2</comment_count>
      <attachid>382006</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-26 01:20:09 -0700</bug_when>
    <thetext>Created attachment 382006
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584209</commentid>
    <comment_count>3</comment_count>
      <attachid>382007</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-26 01:42:15 -0700</bug_when>
    <thetext>Created attachment 382007
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584210</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-26 01:48:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/56644056&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584216</commentid>
    <comment_count>5</comment_count>
      <attachid>382007</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-26 02:39:34 -0700</bug_when>
    <thetext>Comment on attachment 382007
Patch

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

&gt; Source/JavaScriptCore/builtins/AsyncFunctionPrototype.js:53
&gt;      @resolveWithoutPromise(value,
&gt; -        function(value) { @asyncFunctionResume(generator, promise, value, @GeneratorResumeModeNormal); },
&gt; -        function(error) { @asyncFunctionResume(generator, promise, error, @GeneratorResumeModeThrow); });
&gt; +        function(value) { @asyncFunctionResume(capturedGenerator, capturedPromise, value, @GeneratorResumeModeNormal); },
&gt; +        function(error) { @asyncFunctionResume(capturedGenerator, capturedPromise, error, @GeneratorResumeModeThrow); });

I&apos;m also planning to introduce some special promise-reaction here to avoid 2 function allocations (that is never phantom-ed since it is posted to the next microtask, so we should avoid allocation manually as much as possible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584220</commentid>
    <comment_count>6</comment_count>
      <attachid>382007</attachid>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2019-10-26 04:06:44 -0700</bug_when>
    <thetext>Comment on attachment 382007
Patch

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

New failing tests:
mozilla-tests.yaml/js1_5/Array/regress-101964.js.mozilla-ftl-eager-no-cjit-validate-phases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584520</commentid>
    <comment_count>7</comment_count>
      <attachid>382007</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-10-28 11:43:59 -0700</bug_when>
    <thetext>Comment on attachment 382007
Patch

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

&gt;&gt; Source/JavaScriptCore/builtins/AsyncFunctionPrototype.js:53
&gt;&gt; +        function(error) { @asyncFunctionResume(capturedGenerator, capturedPromise, error, @GeneratorResumeModeThrow); });
&gt; 
&gt; I&apos;m also planning to introduce some special promise-reaction here to avoid 2 function allocations (that is never phantom-ed since it is posted to the next microtask, so we should avoid allocation manually as much as possible).

Yeah, seems like this could be global private method. I guess we&apos;d need to handle them specially though to make sure we pass the state.

&gt; Source/JavaScriptCore/builtins/PromiseConstructor.js:269
&gt; +    var @reject = function @reject(reason) {
&gt;          return @rejectPromiseWithFirstResolvingFunctionCallCheck(capturedPromise, reason);
&gt; -    }
&gt; +    };

Why make this change?

&gt; Source/JavaScriptCore/builtins/PromiseOperations.js:96
&gt; +        return {
&gt; +            @resolve: @resolve,
&gt; +            @reject: @reject,
&gt; +            @promise: promise,
&gt; +        };

Can you just do `return { @resolve, @reject, @promise: promise }` or does that not work for private identifiers?

&gt; JSTests/microbenchmarks/promise-reject.js:3
&gt; +drainMicrotasks();

I don&apos;t think you need this? Don&apos;t we drain microtasks before exiting anyway?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584538</commentid>
    <comment_count>8</comment_count>
      <attachid>382007</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-28 12:31:48 -0700</bug_when>
    <thetext>Comment on attachment 382007
Patch

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

Thanks, soon, I&apos;ll upload the patch again.

&gt;&gt;&gt; Source/JavaScriptCore/builtins/AsyncFunctionPrototype.js:53
&gt;&gt;&gt; +        function(error) { @asyncFunctionResume(capturedGenerator, capturedPromise, error, @GeneratorResumeModeThrow); });
&gt;&gt; 
&gt;&gt; I&apos;m also planning to introduce some special promise-reaction here to avoid 2 function allocations (that is never phantom-ed since it is posted to the next microtask, so we should avoid allocation manually as much as possible).
&gt; 
&gt; Yeah, seems like this could be global private method. I guess we&apos;d need to handle them specially though to make sure we pass the state.

Yeah. I think we can create a reaction which holds generator and promise. Then chain this reaction to promise&apos;s queue, and it will be resolved appropriately.
Then, we can avoid three allocations here,

1. One for fullfill handler,
2. One for reject handler,
3. One for lexical environment holding capturedGenerator and capturedPromise.

&gt;&gt; Source/JavaScriptCore/builtins/PromiseConstructor.js:269
&gt;&gt; +    };
&gt; 
&gt; Why make this change?

It is hacky but this reduces bytecode size to make bytecodes of this function tight to make inlining available. I&apos;m planning to make global private function resolution as constant loading and make this bytecode further smaller.

&gt;&gt; Source/JavaScriptCore/builtins/PromiseOperations.js:96
&gt;&gt; +        };
&gt; 
&gt; Can you just do `return { @resolve, @reject, @promise: promise }` or does that not work for private identifiers?

I&apos;ll fix this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584566</commentid>
    <comment_count>9</comment_count>
      <attachid>382007</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-10-28 13:10:05 -0700</bug_when>
    <thetext>Comment on attachment 382007
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/builtins/PromiseConstructor.js:269
&gt;&gt;&gt; +    };
&gt;&gt; 
&gt;&gt; Why make this change?
&gt; 
&gt; It is hacky but this reduces bytecode size to make bytecodes of this function tight to make inlining available. I&apos;m planning to make global private function resolution as constant loading and make this bytecode further smaller.

Oh, from offline you said this is because we add extra moves when emitting the function var syntax. Can you file a bug to fix those extra moves. It seems like this problem would extend to websites too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584567</commentid>
    <comment_count>10</comment_count>
      <attachid>382007</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2019-10-28 13:10:47 -0700</bug_when>
    <thetext>Comment on attachment 382007
Patch

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584593</commentid>
    <comment_count>11</comment_count>
      <attachid>382007</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-28 13:57:49 -0700</bug_when>
    <thetext>Comment on attachment 382007
Patch

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

Thanks!

&gt;&gt;&gt;&gt; Source/JavaScriptCore/builtins/PromiseConstructor.js:269
&gt;&gt;&gt;&gt; +    };
&gt;&gt;&gt; 
&gt;&gt;&gt; Why make this change?
&gt;&gt; 
&gt;&gt; It is hacky but this reduces bytecode size to make bytecodes of this function tight to make inlining available. I&apos;m planning to make global private function resolution as constant loading and make this bytecode further smaller.
&gt; 
&gt; Oh, from offline you said this is because we add extra moves when emitting the function var syntax. Can you file a bug to fix those extra moves. It seems like this problem would extend to websites too.

Filed this in https://bugs.webkit.org/show_bug.cgi?id=203502</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1584612</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-28 14:14:02 -0700</bug_when>
    <thetext>Committed r251671: &lt;https://trac.webkit.org/changeset/251671&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585241</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2019-10-29 20:12:48 -0700</bug_when>
    <thetext>*** Bug 201452 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382005</attachid>
            <date>2019-10-26 00:26:36 -0700</date>
            <delta_ts>2019-10-26 01:20:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203454-20191026002635.patch</filename>
            <type>text/plain</type>
            <size>10554</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ODIwMTYxZTNiYzlkZGI5NDM4N2E2ZWYyN2UxZjRjZmNhMDdhYzM1Li4xOWVmYmE3M2FiODVjMGJi
NDFhYzM4NTE0MDIzNmZiODYxYzAxYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ1NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
b3B0aW1pemVzIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMgYSBiaXQuCisKKyAgICAgICAgMS4g
QWRkIGZhc3QgcGF0aHMgdG8gUHJvbWlzZS5yZXNvbHZlIC8gUHJvbWlzZS5yZWplY3QuCisgICAg
ICAgIDIuIFJlbW92ZSBzdGF0ZSBjaGVjayBpbiBhc3luYy1mdW5jdGlvbnMuIFVubGlrZSBnZW5l
cmF0b3JzLCBhc3luYy1mdW5jdGlvbidzIG5leHQgZnVuY3Rpb24gaXMgbm90IGV4cG9zZWQgdG8g
dXNlcnMuCisgICAgICAgICAgIEl0IGlzIGNhbGxlZCBieSBydW50aW1lIHNvIHdlIGNhbiBjb250
cm9sIHN0YXRlIHBlcmZlY3RseS4KKyAgICAgICAgMy4gQWRkICJlbnF1ZXVlSm9iIiBuYW1lIHRv
IG1ha2Ugc2FtcGxpbmcgcHJvZmlsZXIgd29yayBmb3IgdGhpcyBmdW5jdGlvbi4KKworICAgICAg
ICAqIGJ1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLmFzeW5jRnVuY3Rpb25SZXN1bWUpOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VD
b25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKHJlamVjdCk6CisgICAgICAgIChyZXNvbHZlKToKKyAg
ICAgICAgKiBidWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGdsb2JhbFBy
aXZhdGUubmV3UHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSk6CisgICAgICAgIChnbG9iYWxQcml2
YXRlLm5ld1Byb21pc2VDYXBhYmlsaXR5LnJlamVjdCk6CisgICAgICAgIChnbG9iYWxQcml2YXRl
Lm5ld1Byb21pc2VDYXBhYmlsaXR5KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUucHJvbWlzZVJl
c29sdmVTbG93KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUucHJvbWlzZVJlamVjdFNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTktMTAtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBlbXVsYXRl
VXNlckdlc3R1cmUgcGFyYW1ldGVyIGluIFJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuanMKaW5kZXggOTY4Y2YxZTczNDYxOTJmMWQ0NThjMzc5OGVjMzdjOGQxYmM5MWQwMi4uMTZi
MDA4MmUyMzFmZjgzYmIyNWQxZjQ4MTE5Yzg0ZGE3ZDg1OTVhZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMK
QEAgLTM0LDI2ICszNCwyMyBAQCBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uUmVzdW1lKGdlbmVyYXRv
ciwgcHJvbWlzZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIHZhciBzdGF0ZSA9IEBnZXRH
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUpOwog
ICAgIHZhciB2YWx1ZSA9IEB1bmRlZmluZWQ7CiAKLSAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0
b3JTdGF0ZUNvbXBsZXRlZCB8fCAocmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1vZGVO
b3JtYWwgJiYgcmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdykpCi0gICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiQXN5bmMgZnVuY3Rpb24gaWxsZWdhbGx5IHJlc3VtZWQiKTsK
LQogICAgIHRyeSB7CiAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRv
ciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CiAgICAg
ICAgIHZhbHVlID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yRmllbGROZXh0KS5AY2FsbChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3Is
IEBnZW5lcmF0b3JGaWVsZFRoaXMpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3Vt
ZU1vZGUsIEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkRnJhbWUpKTsKICAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVy
YXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcp
IHsKLSAgICAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAg
ICBAcmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9t
aXNlLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICAgfQogICAg
IH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdl
bmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7
CiAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hl
Y2socHJvbWlzZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICB9CiAKKyAg
ICB2YXIgY2FwdHVyZWRHZW5lcmF0b3IgPSBnZW5lcmF0b3I7CisgICAgdmFyIGNhcHR1cmVkUHJv
bWlzZSA9IHByb21pc2U7CiAgICAgQHJlc29sdmVXaXRob3V0UHJvbWlzZSh2YWx1ZSwKLSAgICAg
ICAgZnVuY3Rpb24odmFsdWUpIHsgQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBwcm9t
aXNlLCB2YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAotICAgICAgICBmdW5j
dGlvbihlcnJvcikgeyBAYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHByb21pc2UsIGVy
cm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7CisgICAgICAgIGZ1bmN0aW9uKHZh
bHVlKSB7IEBhc3luY0Z1bmN0aW9uUmVzdW1lKGNhcHR1cmVkR2VuZXJhdG9yLCBjYXB0dXJlZFBy
b21pc2UsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0sCisgICAgICAgIGZ1
bmN0aW9uKGVycm9yKSB7IEBhc3luY0Z1bmN0aW9uUmVzdW1lKGNhcHR1cmVkR2VuZXJhdG9yLCBj
YXB0dXJlZFByb21pc2UsIGVycm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7CiAK
ICAgICByZXR1cm4gcHJvbWlzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmluZGV4IGUzODZiNGFjOThhNGRhMTVlOTRh
Yjc4ZDg1MGJkZjEzMjVmY2UyZWQuLjNlN2QyMmZmOWExMjE3Yjk5MmJmZTFkYWM5Yzc0ZmM2ZmUw
YzMxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21p
c2VDb25zdHJ1Y3Rvci5qcwpAQCAtMTk1LDExICsxOTUsMTMgQEAgZnVuY3Rpb24gcmVqZWN0KHJl
YXNvbikKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJ8dGhpc3wgaXMgbm90IGFuIG9iamVjdCIpOwogCi0gICAgdmFyIHByb21pc2VDYXBhYmlsaXR5
ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpOwotCi0gICAgcHJvbWlzZUNhcGFiaWxpdHku
QHJlamVjdC5AY2FsbChAdW5kZWZpbmVkLCByZWFzb24pOworICAgIGlmICh0aGlzID09PSBAUHJv
bWlzZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7CisgICAgICAgIEBy
ZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwg
cmVhc29uKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQogCi0gICAgcmV0dXJuIHBy
b21pc2VDYXBhYmlsaXR5LkBwcm9taXNlOworICAgIHJldHVybiBAcHJvbWlzZVJlamVjdFNsb3co
dGhpcywgcmVhc29uKTsKIH0KIAogZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkKQEAgLTIxNSwxMSAr
MjE3LDEzIEBAIGZ1bmN0aW9uIHJlc29sdmUodmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgfQogCi0gICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBh
YmlsaXR5KHRoaXMpOwotCi0gICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwoQHVu
ZGVmaW5lZCwgdmFsdWUpOworICAgIGlmICh0aGlzID09PSBAUHJvbWlzZSkgeworICAgICAgICB2
YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7CisgICAgICAgIEByZXNvbHZlUHJvbWlzZVdpdGhG
aXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2U7CisgICAgfQogCi0gICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBw
cm9taXNlOworICAgIHJldHVybiBAcHJvbWlzZVJlc29sdmVTbG93KHRoaXMsIHZhbHVlKTsKIH0K
IAogQG5ha2VkQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwppbmRleCAyNDc3ZTYyNWZlNWI2MTRhNDY4ZGNkNzQw
YTFiZTkzNjBiOTRiNWYyLi42MmM5ODEzOGUxYjllNTc3OTAxNDkyYWNkZjA3ZDA2Y2E0NTBjZjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJh
dGlvbnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVy
YXRpb25zLmpzCkBAIC04MiwxNCArODIsNDEgQEAgZnVuY3Rpb24gbmV3UHJvbWlzZUNhcGFiaWxp
dHkoY29uc3RydWN0b3IpCiAKICAgICBpZiAoY29uc3RydWN0b3IgPT09IEBQcm9taXNlKSB7CiAg
ICAgICAgIHZhciBwcm9taXNlID0gQG5ld1Byb21pc2UoKTsKLSAgICAgICAgdmFyIHJlc29sdmlu
Z0Z1bmN0aW9ucyA9IEBjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMocHJvbWlzZSk7Ci0gICAgICAg
IEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShyZXNvbHZpbmdGdW5jdGlvbnMsICJwcm9taXNlIiwgcHJv
bWlzZSk7Ci0gICAgICAgIHJldHVybiByZXNvbHZpbmdGdW5jdGlvbnM7CisgICAgICAgIHZhciBj
YXB0dXJlZFByb21pc2UgPSBwcm9taXNlOworICAgICAgICBmdW5jdGlvbiBAcmVzb2x2ZShyZXNv
bHV0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKKyAg
ICAgICAgfQorICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAg
cmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2so
Y2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICBAcmVzb2x2ZTogQHJlc29sdmUsCisgICAgICAgICAgICBAcmVqZWN0OiBAcmVq
ZWN0LAorICAgICAgICAgICAgQHByb21pc2U6IHByb21pc2UsCisgICAgICAgIH07CiAgICAgfQog
CiAgICAgcmV0dXJuIEBuZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3coY29uc3RydWN0b3IpOwogfQog
CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gcHJvbWlzZVJlc29sdmVTbG93KGNvbnN0cnVjdG9y
LCB2YWx1ZSkKK3sKKyAgICBAYXNzZXJ0KGNvbnN0cnVjdG9yICE9PSBAUHJvbWlzZSk7CisgICAg
dmFyIHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5U2xvdyhjb25zdHJ1
Y3Rvcik7CisgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwoQHVuZGVmaW5lZCwg
dmFsdWUpOworICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKK30KKworQGds
b2JhbFByaXZhdGUKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RTbG93KGNvbnN0cnVjdG9yLCByZWFz
b24pCit7CisgICAgQGFzc2VydChjb25zdHJ1Y3RvciAhPT0gQFByb21pc2UpOworICAgIHZhciBw
cm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3coY29uc3RydWN0b3Ip
OworICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgcmVhc29u
KTsKKyAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CisKIEBnbG9iYWxQ
cml2YXRlCiBmdW5jdGlvbiBuZXdIYW5kbGVkUmVqZWN0ZWRQcm9taXNlKGVycm9yKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDBlNjRhM2U3Y2QxMWVlZmYxMTUzNmVmYWYxYTkxNjA5NjQxMDQ2NmUuLjM1ODdhYTYzYjc3YTll
ZDAwMzQ0MWE2YjU3ZDQwYjY1NTM4ODM4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTk5MCw3ICs5OTAsNyBAQCBjYXBpdGFs
TmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZs
YWcgPyBjYXBpdGFsTmFtZQogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNPd25LZXlzLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGVucXVldWVKb2IpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1ZUpvYiksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgp
LCBwcml2YXRlRnVuY01ha2VUeXBlRXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVk
QXJyYXlMZW5ndGgsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVk
QXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBl
ZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCA2NzBjYzVjMjY2MjAyMjQxYTE5ZTVhNWUwMzk2ODc1YWZhMTVhNzJjLi40OTFiMWNk
MjQ0ZmVmNDM1NzQ4NjVkYjEyZGRmYzU5ZDE0MGYwYmM5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE5LTEw
LTI2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
T3B0aW1pemUgUHJvbWlzZSBydW50aW1lIGZ1bmN0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzNDU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBtaWNyb2JlbmNobWFya3MvcHJvbWlzZS1yZWpl
Y3QuanM6IEFkZGVkLgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlc29sdmUu
anM6IEFkZGVkLgorCiAyMDE5LTEwLTI1ICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bz
b255LmNvbT4KIAogICAgICAgICB0ZXN0MjYyLXJ1bm5lciBzaG91bGQgYmUgYWJsZSB0byBwYXNz
IEpTQyBhIGZlYXR1cmUgZmxhZwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
cHJvbWlzZS1yZWplY3QuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlamVj
dC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZjMwMGNiOWVhYTc4OWI2N2EzZDJjNTMyMjVjMGZiMDZiOGY2ZmEy
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvcHJvbWlzZS1yZWpl
Y3QuanMKQEAgLTAsMCArMSwzIEBACitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAg
IFByb21pc2UucmVqZWN0KDQyKTsKK2RyYWluTWljcm90YXNrcygpOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9taWNyb2JlbmNobWFya3MvcHJvbWlzZS1yZXNvbHZlLmpzIGIvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvcHJvbWlzZS1yZXNvbHZlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZDZkZmU0YmJkMjVkN2Ez
MTE3ODkxNTk5MGE0ODhlNGI1MGI1MjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9wcm9taXNlLXJlc29sdmUuanMKQEAgLTAsMCArMSwzIEBACitmb3IgKHZhciBp
ID0gMDsgaSA8IDFlNjsgKytpKQorICAgIFByb21pc2UucmVzb2x2ZSg0Mik7CitkcmFpbk1pY3Jv
dGFza3MoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382006</attachid>
            <date>2019-10-26 01:20:09 -0700</date>
            <delta_ts>2019-10-26 01:42:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203454-20191026012008.patch</filename>
            <type>text/plain</type>
            <size>11897</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ODIwMTYxZTNiYzlkZGI5NDM4N2E2ZWYyN2UxZjRjZmNhMDdhYzM1Li4xOWVmYmE3M2FiODVjMGJi
NDFhYzM4NTE0MDIzNmZiODYxYzAxYThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMSBAQAorMjAxOS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ1NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
b3B0aW1pemVzIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMgYSBiaXQuCisKKyAgICAgICAgMS4g
QWRkIGZhc3QgcGF0aHMgdG8gUHJvbWlzZS5yZXNvbHZlIC8gUHJvbWlzZS5yZWplY3QuCisgICAg
ICAgIDIuIFJlbW92ZSBzdGF0ZSBjaGVjayBpbiBhc3luYy1mdW5jdGlvbnMuIFVubGlrZSBnZW5l
cmF0b3JzLCBhc3luYy1mdW5jdGlvbidzIG5leHQgZnVuY3Rpb24gaXMgbm90IGV4cG9zZWQgdG8g
dXNlcnMuCisgICAgICAgICAgIEl0IGlzIGNhbGxlZCBieSBydW50aW1lIHNvIHdlIGNhbiBjb250
cm9sIHN0YXRlIHBlcmZlY3RseS4KKyAgICAgICAgMy4gQWRkICJlbnF1ZXVlSm9iIiBuYW1lIHRv
IG1ha2Ugc2FtcGxpbmcgcHJvZmlsZXIgd29yayBmb3IgdGhpcyBmdW5jdGlvbi4KKworICAgICAg
ICAqIGJ1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanM6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLmFzeW5jRnVuY3Rpb25SZXN1bWUpOgorICAgICAgICAqIGJ1aWx0aW5zL1Byb21pc2VD
b25zdHJ1Y3Rvci5qczoKKyAgICAgICAgKHJlamVjdCk6CisgICAgICAgIChyZXNvbHZlKToKKyAg
ICAgICAgKiBidWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qczoKKyAgICAgICAgKGdsb2JhbFBy
aXZhdGUubmV3UHJvbWlzZUNhcGFiaWxpdHkucmVzb2x2ZSk6CisgICAgICAgIChnbG9iYWxQcml2
YXRlLm5ld1Byb21pc2VDYXBhYmlsaXR5LnJlamVjdCk6CisgICAgICAgIChnbG9iYWxQcml2YXRl
Lm5ld1Byb21pc2VDYXBhYmlsaXR5KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUucHJvbWlzZVJl
c29sdmVTbG93KToKKyAgICAgICAgKGdsb2JhbFByaXZhdGUucHJvbWlzZVJlamVjdFNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpKU0ds
b2JhbE9iamVjdDo6aW5pdCk6CisKIDIwMTktMTAtMjUgIFl1cnkgU2VtaWtoYXRza3kgIDx5dXJ5
c0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBlbXVsYXRl
VXNlckdlc3R1cmUgcGFyYW1ldGVyIGluIFJ1bnRpbWUuY2FsbEZ1bmN0aW9uT24KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBl
LmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5
cGUuanMKaW5kZXggOTY4Y2YxZTczNDYxOTJmMWQ0NThjMzc5OGVjMzdjOGQxYmM5MWQwMi4uMTZi
MDA4MmUyMzFmZjgzYmIyNWQxZjQ4MTE5Yzg0ZGE3ZDg1OTVhZCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL0FzeW5jRnVuY3Rpb25Qcm90b3R5cGUuanMK
QEAgLTM0LDI2ICszNCwyMyBAQCBmdW5jdGlvbiBhc3luY0Z1bmN0aW9uUmVzdW1lKGdlbmVyYXRv
ciwgcHJvbWlzZSwgc2VudFZhbHVlLCByZXN1bWVNb2RlKQogICAgIHZhciBzdGF0ZSA9IEBnZXRH
ZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUpOwog
ICAgIHZhciB2YWx1ZSA9IEB1bmRlZmluZWQ7CiAKLSAgICBpZiAoc3RhdGUgPT09IEBHZW5lcmF0
b3JTdGF0ZUNvbXBsZXRlZCB8fCAocmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1vZGVO
b3JtYWwgJiYgcmVzdW1lTW9kZSAhPT0gQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdykpCi0gICAg
ICAgIEB0aHJvd1R5cGVFcnJvcigiQXN5bmMgZnVuY3Rpb24gaWxsZWdhbGx5IHJlc3VtZWQiKTsK
LQogICAgIHRyeSB7CiAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRv
ciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUV4ZWN1dGluZyk7CiAgICAg
ICAgIHZhbHVlID0gQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9yLCBAZ2VuZXJh
dG9yRmllbGROZXh0KS5AY2FsbChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3Is
IEBnZW5lcmF0b3JGaWVsZFRoaXMpLCBnZW5lcmF0b3IsIHN0YXRlLCBzZW50VmFsdWUsIHJlc3Vt
ZU1vZGUsIEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVyYXRvckZp
ZWxkRnJhbWUpKTsKICAgICAgICAgaWYgKEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVy
YXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUpID09PSBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcp
IHsKLSAgICAgICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdl
bmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7CiAgICAgICAgICAg
ICBAcmVzb2x2ZVByb21pc2VXaXRoRmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9t
aXNlLCB2YWx1ZSk7CiAgICAgICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICAgICAgfQogICAg
IH0gY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgIEBwdXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdl
bmVyYXRvciwgQGdlbmVyYXRvckZpZWxkU3RhdGUsIEBHZW5lcmF0b3JTdGF0ZUNvbXBsZXRlZCk7
CiAgICAgICAgIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hl
Y2socHJvbWlzZSwgZXJyb3IpOwogICAgICAgICByZXR1cm4gcHJvbWlzZTsKICAgICB9CiAKKyAg
ICB2YXIgY2FwdHVyZWRHZW5lcmF0b3IgPSBnZW5lcmF0b3I7CisgICAgdmFyIGNhcHR1cmVkUHJv
bWlzZSA9IHByb21pc2U7CiAgICAgQHJlc29sdmVXaXRob3V0UHJvbWlzZSh2YWx1ZSwKLSAgICAg
ICAgZnVuY3Rpb24odmFsdWUpIHsgQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBwcm9t
aXNlLCB2YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAotICAgICAgICBmdW5j
dGlvbihlcnJvcikgeyBAYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0b3IsIHByb21pc2UsIGVy
cm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7CisgICAgICAgIGZ1bmN0aW9uKHZh
bHVlKSB7IEBhc3luY0Z1bmN0aW9uUmVzdW1lKGNhcHR1cmVkR2VuZXJhdG9yLCBjYXB0dXJlZFBy
b21pc2UsIHZhbHVlLCBAR2VuZXJhdG9yUmVzdW1lTW9kZU5vcm1hbCk7IH0sCisgICAgICAgIGZ1
bmN0aW9uKGVycm9yKSB7IEBhc3luY0Z1bmN0aW9uUmVzdW1lKGNhcHR1cmVkR2VuZXJhdG9yLCBj
YXB0dXJlZFByb21pc2UsIGVycm9yLCBAR2VuZXJhdG9yUmVzdW1lTW9kZVRocm93KTsgfSk7CiAK
ICAgICByZXR1cm4gcHJvbWlzZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9idWlsdGlucy9Qcm9taXNlQ29uc3RydWN0b3IuanMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzCmluZGV4IGUzODZiNGFjOThhNGRhMTVlOTRh
Yjc4ZDg1MGJkZjEzMjVmY2UyZWQuLjNlN2QyMmZmOWExMjE3Yjk5MmJmZTFkYWM5Yzc0ZmM2ZmUw
YzMxYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNl
Q29uc3RydWN0b3IuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21p
c2VDb25zdHJ1Y3Rvci5qcwpAQCAtMTk1LDExICsxOTUsMTMgQEAgZnVuY3Rpb24gcmVqZWN0KHJl
YXNvbikKICAgICBpZiAoIUBpc09iamVjdCh0aGlzKSkKICAgICAgICAgQHRocm93VHlwZUVycm9y
KCJ8dGhpc3wgaXMgbm90IGFuIG9iamVjdCIpOwogCi0gICAgdmFyIHByb21pc2VDYXBhYmlsaXR5
ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5KHRoaXMpOwotCi0gICAgcHJvbWlzZUNhcGFiaWxpdHku
QHJlamVjdC5AY2FsbChAdW5kZWZpbmVkLCByZWFzb24pOworICAgIGlmICh0aGlzID09PSBAUHJv
bWlzZSkgeworICAgICAgICB2YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7CisgICAgICAgIEBy
ZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJvbWlzZSwg
cmVhc29uKTsKKyAgICAgICAgcmV0dXJuIHByb21pc2U7CisgICAgfQogCi0gICAgcmV0dXJuIHBy
b21pc2VDYXBhYmlsaXR5LkBwcm9taXNlOworICAgIHJldHVybiBAcHJvbWlzZVJlamVjdFNsb3co
dGhpcywgcmVhc29uKTsKIH0KIAogZnVuY3Rpb24gcmVzb2x2ZSh2YWx1ZSkKQEAgLTIxNSwxMSAr
MjE3LDEzIEBAIGZ1bmN0aW9uIHJlc29sdmUodmFsdWUpCiAgICAgICAgICAgICByZXR1cm4gdmFs
dWU7CiAgICAgfQogCi0gICAgdmFyIHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBh
YmlsaXR5KHRoaXMpOwotCi0gICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwoQHVu
ZGVmaW5lZCwgdmFsdWUpOworICAgIGlmICh0aGlzID09PSBAUHJvbWlzZSkgeworICAgICAgICB2
YXIgcHJvbWlzZSA9IEBuZXdQcm9taXNlKCk7CisgICAgICAgIEByZXNvbHZlUHJvbWlzZVdpdGhG
aXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2UsIHZhbHVlKTsKKyAgICAgICAg
cmV0dXJuIHByb21pc2U7CisgICAgfQogCi0gICAgcmV0dXJuIHByb21pc2VDYXBhYmlsaXR5LkBw
cm9taXNlOworICAgIHJldHVybiBAcHJvbWlzZVJlc29sdmVTbG93KHRoaXMsIHZhbHVlKTsKIH0K
IAogQG5ha2VkQ29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
dWlsdGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWls
dGlucy9Qcm9taXNlT3BlcmF0aW9ucy5qcwppbmRleCAyNDc3ZTYyNWZlNWI2MTRhNDY4ZGNkNzQw
YTFiZTkzNjBiOTRiNWYyLi42MmM5ODEzOGUxYjllNTc3OTAxNDkyYWNkZjA3ZDA2Y2E0NTBjZjlh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJh
dGlvbnMuanMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVy
YXRpb25zLmpzCkBAIC04MiwxNCArODIsNDEgQEAgZnVuY3Rpb24gbmV3UHJvbWlzZUNhcGFiaWxp
dHkoY29uc3RydWN0b3IpCiAKICAgICBpZiAoY29uc3RydWN0b3IgPT09IEBQcm9taXNlKSB7CiAg
ICAgICAgIHZhciBwcm9taXNlID0gQG5ld1Byb21pc2UoKTsKLSAgICAgICAgdmFyIHJlc29sdmlu
Z0Z1bmN0aW9ucyA9IEBjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMocHJvbWlzZSk7Ci0gICAgICAg
IEBwdXRCeUlkRGlyZWN0UHJpdmF0ZShyZXNvbHZpbmdGdW5jdGlvbnMsICJwcm9taXNlIiwgcHJv
bWlzZSk7Ci0gICAgICAgIHJldHVybiByZXNvbHZpbmdGdW5jdGlvbnM7CisgICAgICAgIHZhciBj
YXB0dXJlZFByb21pc2UgPSBwcm9taXNlOworICAgICAgICBmdW5jdGlvbiBAcmVzb2x2ZShyZXNv
bHV0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVz
b2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKKyAg
ICAgICAgfQorICAgICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAg
cmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2so
Y2FwdHVyZWRQcm9taXNlLCByZWFzb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7Cisg
ICAgICAgICAgICBAcmVzb2x2ZTogQHJlc29sdmUsCisgICAgICAgICAgICBAcmVqZWN0OiBAcmVq
ZWN0LAorICAgICAgICAgICAgQHByb21pc2U6IHByb21pc2UsCisgICAgICAgIH07CiAgICAgfQog
CiAgICAgcmV0dXJuIEBuZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3coY29uc3RydWN0b3IpOwogfQog
CitAZ2xvYmFsUHJpdmF0ZQorZnVuY3Rpb24gcHJvbWlzZVJlc29sdmVTbG93KGNvbnN0cnVjdG9y
LCB2YWx1ZSkKK3sKKyAgICBAYXNzZXJ0KGNvbnN0cnVjdG9yICE9PSBAUHJvbWlzZSk7CisgICAg
dmFyIHByb21pc2VDYXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5U2xvdyhjb25zdHJ1
Y3Rvcik7CisgICAgcHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwoQHVuZGVmaW5lZCwg
dmFsdWUpOworICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKK30KKworQGds
b2JhbFByaXZhdGUKK2Z1bmN0aW9uIHByb21pc2VSZWplY3RTbG93KGNvbnN0cnVjdG9yLCByZWFz
b24pCit7CisgICAgQGFzc2VydChjb25zdHJ1Y3RvciAhPT0gQFByb21pc2UpOworICAgIHZhciBw
cm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3coY29uc3RydWN0b3Ip
OworICAgIHByb21pc2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgcmVhc29u
KTsKKyAgICByZXR1cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CisKIEBnbG9iYWxQ
cml2YXRlCiBmdW5jdGlvbiBuZXdIYW5kbGVkUmVqZWN0ZWRQcm9taXNlKGVycm9yKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4
IDBlNjRhM2U3Y2QxMWVlZmYxMTUzNmVmYWYxYTkxNjA5NjQxMDQ2NmUuLjM1ODdhYTYzYjc3YTll
ZDAwMzQ0MWE2YjU3ZDQwYjY1NTM4ODM4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTk5MCw3ICs5OTAsNyBAQCBjYXBpdGFs
TmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZs
YWcgPyBjYXBpdGFsTmFtZQogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlO
YW1lcy0+YnVpbHRpbk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBw
cml2YXRlRnVuY1Byb3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVu
dW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpS
ZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5i
dWlsdGluTmFtZXMoKS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNPd25LZXlzLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5
SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRl
TmFtZSgpLCBwcml2YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRF
bnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
UmVhZE9ubHkpLAotICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+
YnVpbHRpbk5hbWVzKCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0
ZSh2bSwgdGhpcywgMCwgU3RyaW5nKCksIGVucXVldWVKb2IpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmli
dXRlOjpSZWFkT25seSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5h
bWVzLT5idWlsdGluTmFtZXMoKS5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6
Y3JlYXRlKHZtLCB0aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1ZUpvYiksIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZt
LnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgp
LCBwcml2YXRlRnVuY01ha2VUeXBlRXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRP
bmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0
aW5OYW1lcygpLnR5cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVk
QXJyYXlMZW5ndGgsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAg
R2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVk
QXJyYXlHZXRPcmlnaW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBl
ZEFycmF5R2V0T3JpZ2luYWxDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVt
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVh
ZE9ubHkpLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IGNjZWU2ZDhhOGRhY2MxZjBiZWUzOWU2YTRkNTFhZWQwMzc3NzAwODcu
LmZjNDYzMDQxZWU0NzAyODgzZGIxMDYwYzkyM2FlNWM3N2Y1MTFiMTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxOS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgor
CisgICAgICAgIFtKU0NdIE9wdGltaXplIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ1NAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2Nv
bnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6CisKIDIwMTktMTAtMjUgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBm
b3IgY2FsbGJhY2tzIGZvciBtYW5pZmVzdCBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9jb25zb2xlL21lc3NhZ2Utc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS1leHBlY3RlZC50
eHQKaW5kZXggNWJhZDk1YTRjOTllZjdlNzNjNjFhNmI3ZmQ2OTM5YjAyZGJhMjFlMS4uOTBhNDQy
MzJmNWJmNTg2ZmMxZmM3MGRlM2I5MThhZGU4OThlOGMwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS1leHBl
Y3RlZC50eHQKQEAgLTI3LDggKzI3LDkgQEAgQ0FMTCBTVEFDSzoKIENBTEwgU1RBQ0s6CiAwOiBb
Tl0gKGFub255bW91cyBmdW5jdGlvbikKIDE6IFtOXSByZWplY3RQcm9taXNlCi0yOiBbTl0gcmVq
ZWN0Ci0zOiBbRl0gdHJpZ2dlclVuaGFuZGxlZFJlamVjdGlvblByb21pc2VSZWplY3QKKzI6IFtO
XSByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2sKKzM6IFtO
XSByZWplY3QKKzQ6IFtGXSB0cmlnZ2VyVW5oYW5kbGVkUmVqZWN0aW9uUHJvbWlzZVJlamVjdAog
CiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogQ29uc29sZS5TdGFja1RyYWNlLlVuaGFuZGxlZFByb21p
c2VSZWplY3Rpb24uRXhwbGljaXRSZWplY3QKIENBTEwgU1RBQ0s6CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY3MGNjNWMyNjYyMDIyNDFh
MTllNWE1ZTAzOTY4NzVhZmExNWE3MmMuLjQ5MWIxY2QyNDRmZWY0MzU3NDg2NWRiMTJkZGZjNTlk
MTQwZjBiYzkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTktMTAtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBQcm9taXNlIHJ1bnRpbWUg
ZnVuY3Rpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDM0NTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIG1pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlamVjdC5qczogQWRkZWQuCisgICAgICAgICog
bWljcm9iZW5jaG1hcmtzL3Byb21pc2UtcmVzb2x2ZS5qczogQWRkZWQuCisKIDIwMTktMTAtMjUg
IFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIHRlc3Qy
NjItcnVubmVyIHNob3VsZCBiZSBhYmxlIHRvIHBhc3MgSlNDIGEgZmVhdHVyZSBmbGFnCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlamVjdC5qcyBiL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL3Byb21pc2UtcmVqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMzAwY2I5
ZWFhNzg5YjY3YTNkMmM1MzIyNWMwZmIwNmI4ZjZmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlamVjdC5qcwpAQCAtMCwwICsxLDMgQEAKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgUHJvbWlzZS5yZWplY3QoNDIpOworZHJh
aW5NaWNyb3Rhc2tzKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wcm9t
aXNlLXJlc29sdmUuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlc29sdmUu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMThkNmRmZTRiYmQyNWQ3YTMxMTc4OTE1OTkwYTQ4OGU0YjUwYjUyMQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3Byb21pc2UtcmVzb2x2
ZS5qcwpAQCAtMCwwICsxLDMgQEAKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAg
UHJvbWlzZS5yZXNvbHZlKDQyKTsKK2RyYWluTWljcm90YXNrcygpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382007</attachid>
            <date>2019-10-26 01:42:15 -0700</date>
            <delta_ts>2019-10-28 13:10:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203454-20191026014215.patch</filename>
            <type>text/plain</type>
            <size>14678</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ODIwMTYxZTNiYzlkZGI5NDM4N2E2ZWYyN2UxZjRjZmNhMDdhYzM1Li45ZDZlMzNmN2M0NDAwMDRh
ZWNiMjk5YTc4Y2QwNTcwYjJmM2FjYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NCBAQAorMjAxOS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIE9wdGltaXplIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ1NAorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
b3B0aW1pemVzIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMgYSBiaXQuCisKKyAgICAgICAgMS4g
QWRkIGZhc3QgcGF0aHMgdG8gUHJvbWlzZS5yZXNvbHZlIC8gUHJvbWlzZS5yZWplY3QuCisgICAg
ICAgIDIuIFJlbW92ZSBzdGF0ZSBjaGVjayBpbiBhc3luYy1mdW5jdGlvbnMuIFVubGlrZSBnZW5l
cmF0b3JzLCBhc3luYy1mdW5jdGlvbidzIG5leHQgZnVuY3Rpb24gaXMgbm90IGV4cG9zZWQgdG8g
dXNlcnMuCisgICAgICAgICAgIEl0IGlzIGNhbGxlZCBieSBydW50aW1lIHNvIHdlIGNhbiBjb250
cm9sIHN0YXRlIHBlcmZlY3RseS4KKyAgICAgICAgMy4gQWRkICJlbnF1ZXVlSm9iIiBuYW1lIHRv
IG1ha2Ugc2FtcGxpbmcgcHJvZmlsZXIgd29yayBmb3IgdGhpcyBmdW5jdGlvbi4KKyAgICAgICAg
NC4gTWFrZSBQcm9taXNlL0ludGVybmFsUHJvbWlzZSBjb25zdHJ1Y3RvciBpbmxpbmFibGUgc2l6
ZQorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVG9UICAg
ICAgICAgICAgICAgICAgICAgUGF0Y2hlZAorCisgICAgICAgICAgICBwcm9taXNlLWNyZWF0aW9u
LW1hbnkgICAgICAgMjUuNTc5NCstMC4zNjgxICAgICBeICAgICAyMi41NDEwKy0wLjMyMjkgICAg
ICAgIF4gZGVmaW5pdGVseSAxLjEzNDh4IGZhc3RlcgorICAgICAgICAgICAgcHJvbWlzZS1yZXNv
bHZlICAgICAgICAgICAgIDMyLjM3OTMrLTAuNDI1MiAgICAgXiAgICAgIDkuNDIxOSstMC4xMTE0
ICAgICAgICBeIGRlZmluaXRlbHkgMy40MzY2eCBmYXN0ZXIKKyAgICAgICAgICAgIHByb21pc2Ut
cmVqZWN0ICAgICAgICAgICAgIDEwOC41OTY4Ky0wLjc3NDEgICAgIF4gICAgIDM2LjkzODMrLTAu
Mzc3MCAgICAgICAgXiBkZWZpbml0ZWx5IDIuOTQwMHggZmFzdGVyCisKKyAgICAgICAgKiBidWls
dGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzOgorICAgICAgICAoZ2xvYmFsUHJpdmF0ZS5h
c3luY0Z1bmN0aW9uUmVzdW1lKToKKyAgICAgICAgKiBidWlsdGlucy9Qcm9taXNlQ29uc3RydWN0
b3IuanM6CisgICAgICAgIChyZWplY3QpOgorICAgICAgICAocmVzb2x2ZSk6CisgICAgICAgIChu
YWtlZENvbnN0cnVjdG9yLlByb21pc2UucmVqZWN0KToKKyAgICAgICAgKG5ha2VkQ29uc3RydWN0
b3IuUHJvbWlzZSk6CisgICAgICAgIChuYWtlZENvbnN0cnVjdG9yLkludGVybmFsUHJvbWlzZS5y
ZWplY3QpOgorICAgICAgICAobmFrZWRDb25zdHJ1Y3Rvci5JbnRlcm5hbFByb21pc2UpOgorICAg
ICAgICAobmFrZWRDb25zdHJ1Y3Rvci5Qcm9taXNlLnJlc29sdmUpOiBEZWxldGVkLgorICAgICAg
ICAobmFrZWRDb25zdHJ1Y3Rvci5JbnRlcm5hbFByb21pc2UucmVzb2x2ZSk6IERlbGV0ZWQuCisg
ICAgICAgICogYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanM6CisgICAgICAgIChnbG9iYWxQ
cml2YXRlLm5ld1Byb21pc2VDYXBhYmlsaXR5LnJlc29sdmUpOgorICAgICAgICAoZ2xvYmFsUHJp
dmF0ZS5uZXdQcm9taXNlQ2FwYWJpbGl0eS5yZWplY3QpOgorICAgICAgICAoZ2xvYmFsUHJpdmF0
ZS5uZXdQcm9taXNlQ2FwYWJpbGl0eSk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnByb21pc2VS
ZXNvbHZlU2xvdyk6CisgICAgICAgIChnbG9iYWxQcml2YXRlLnByb21pc2VSZWplY3RTbG93KToK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNH
bG9iYWxPYmplY3Q6OmluaXQpOgorCiAyMDE5LTEwLTI1ICBZdXJ5IFNlbWlraGF0c2t5ICA8eXVy
eXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQgZW11bGF0
ZVVzZXJHZXN0dXJlIHBhcmFtZXRlciBpbiBSdW50aW1lLmNhbGxGdW5jdGlvbk9uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvQXN5bmNGdW5jdGlvblByb3RvdHlw
ZS5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90
eXBlLmpzCmluZGV4IDk2OGNmMWU3MzQ2MTkyZjFkNDU4YzM3OThlYzM3YzhkMWJjOTFkMDIuLjE2
YjAwODJlMjMxZmY4M2JiMjVkMWY0ODExOWM4NGRhN2Q4NTk1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpzCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Bc3luY0Z1bmN0aW9uUHJvdG90eXBlLmpz
CkBAIC0zNCwyNiArMzQsMjMgQEAgZnVuY3Rpb24gYXN5bmNGdW5jdGlvblJlc3VtZShnZW5lcmF0
b3IsIHByb21pc2UsIHNlbnRWYWx1ZSwgcmVzdW1lTW9kZSkKICAgICB2YXIgc3RhdGUgPSBAZ2V0
R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlKTsK
ICAgICB2YXIgdmFsdWUgPSBAdW5kZWZpbmVkOwogCi0gICAgaWYgKHN0YXRlID09PSBAR2VuZXJh
dG9yU3RhdGVDb21wbGV0ZWQgfHwgKHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2Rl
Tm9ybWFsICYmIHJlc3VtZU1vZGUgIT09IEBHZW5lcmF0b3JSZXN1bWVNb2RlVGhyb3cpKQotICAg
ICAgICBAdGhyb3dUeXBlRXJyb3IoIkFzeW5jIGZ1bmN0aW9uIGlsbGVnYWxseSByZXN1bWVkIik7
Ci0KICAgICB0cnkgewogICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0
b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVFeGVjdXRpbmcpOwogICAg
ICAgICB2YWx1ZSA9IEBnZXRHZW5lcmF0b3JJbnRlcm5hbEZpZWxkKGdlbmVyYXRvciwgQGdlbmVy
YXRvckZpZWxkTmV4dCkuQGNhbGwoQGdldEdlbmVyYXRvckludGVybmFsRmllbGQoZ2VuZXJhdG9y
LCBAZ2VuZXJhdG9yRmllbGRUaGlzKSwgZ2VuZXJhdG9yLCBzdGF0ZSwgc2VudFZhbHVlLCByZXN1
bWVNb2RlLCBAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBnZW5lcmF0b3JG
aWVsZEZyYW1lKSk7CiAgICAgICAgIGlmIChAZ2V0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5l
cmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlKSA9PT0gQEdlbmVyYXRvclN0YXRlRXhlY3V0aW5n
KSB7Ci0gICAgICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChnZW5lcmF0b3IsIEBn
ZW5lcmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQpOwogICAgICAgICAg
ICAgQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2socHJv
bWlzZSwgdmFsdWUpOwogICAgICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgICAgIH0KICAg
ICB9IGNhdGNoIChlcnJvcikgewotICAgICAgICBAcHV0R2VuZXJhdG9ySW50ZXJuYWxGaWVsZChn
ZW5lcmF0b3IsIEBnZW5lcmF0b3JGaWVsZFN0YXRlLCBAR2VuZXJhdG9yU3RhdGVDb21wbGV0ZWQp
OwogICAgICAgICBAcmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENo
ZWNrKHByb21pc2UsIGVycm9yKTsKICAgICAgICAgcmV0dXJuIHByb21pc2U7CiAgICAgfQogCisg
ICAgdmFyIGNhcHR1cmVkR2VuZXJhdG9yID0gZ2VuZXJhdG9yOworICAgIHZhciBjYXB0dXJlZFBy
b21pc2UgPSBwcm9taXNlOwogICAgIEByZXNvbHZlV2l0aG91dFByb21pc2UodmFsdWUsCi0gICAg
ICAgIGZ1bmN0aW9uKHZhbHVlKSB7IEBhc3luY0Z1bmN0aW9uUmVzdW1lKGdlbmVyYXRvciwgcHJv
bWlzZSwgdmFsdWUsIEBHZW5lcmF0b3JSZXN1bWVNb2RlTm9ybWFsKTsgfSwKLSAgICAgICAgZnVu
Y3Rpb24oZXJyb3IpIHsgQGFzeW5jRnVuY3Rpb25SZXN1bWUoZ2VuZXJhdG9yLCBwcm9taXNlLCBl
cnJvciwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7IH0pOworICAgICAgICBmdW5jdGlvbih2
YWx1ZSkgeyBAYXN5bmNGdW5jdGlvblJlc3VtZShjYXB0dXJlZEdlbmVyYXRvciwgY2FwdHVyZWRQ
cm9taXNlLCB2YWx1ZSwgQEdlbmVyYXRvclJlc3VtZU1vZGVOb3JtYWwpOyB9LAorICAgICAgICBm
dW5jdGlvbihlcnJvcikgeyBAYXN5bmNGdW5jdGlvblJlc3VtZShjYXB0dXJlZEdlbmVyYXRvciwg
Y2FwdHVyZWRQcm9taXNlLCBlcnJvciwgQEdlbmVyYXRvclJlc3VtZU1vZGVUaHJvdyk7IH0pOwog
CiAgICAgcmV0dXJuIHByb21pc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnVpbHRpbnMvUHJvbWlzZUNvbnN0cnVjdG9yLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J1aWx0aW5zL1Byb21pc2VDb25zdHJ1Y3Rvci5qcwppbmRleCBlMzg2YjRhYzk4YTRkYTE1ZTk0
YWI3OGQ4NTBiZGYxMzI1ZmNlMmVkLi5lYzJhNjFlODRhM2E1ODM2YWU3YWY5NmFjYzYzYmRmOTlh
MTE4OWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlz
ZUNvbnN0cnVjdG9yLmpzCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9t
aXNlQ29uc3RydWN0b3IuanMKQEAgLTE5NSwxMSArMTk1LDEzIEBAIGZ1bmN0aW9uIHJlamVjdChy
ZWFzb24pCiAgICAgaWYgKCFAaXNPYmplY3QodGhpcykpCiAgICAgICAgIEB0aHJvd1R5cGVFcnJv
cigifHRoaXN8IGlzIG5vdCBhbiBvYmplY3QiKTsKIAotICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0
eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eSh0aGlzKTsKLQotICAgIHByb21pc2VDYXBhYmlsaXR5
LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgcmVhc29uKTsKKyAgICBpZiAodGhpcyA9PT0gQFBy
b21pc2UpIHsKKyAgICAgICAgdmFyIHByb21pc2UgPSBAbmV3UHJvbWlzZSgpOworICAgICAgICBA
cmVqZWN0UHJvbWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKHByb21pc2Us
IHJlYXNvbik7CisgICAgICAgIHJldHVybiBwcm9taXNlOworICAgIH0KIAotICAgIHJldHVybiBw
cm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKKyAgICByZXR1cm4gQHByb21pc2VSZWplY3RTbG93
KHRoaXMsIHJlYXNvbik7CiB9CiAKIGZ1bmN0aW9uIHJlc29sdmUodmFsdWUpCkBAIC0yMTUsMTEg
KzIxNywxMyBAQCBmdW5jdGlvbiByZXNvbHZlKHZhbHVlKQogICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOwogICAgIH0KIAotICAgIHZhciBwcm9taXNlQ2FwYWJpbGl0eSA9IEBuZXdQcm9taXNlQ2Fw
YWJpbGl0eSh0aGlzKTsKLQotICAgIHByb21pc2VDYXBhYmlsaXR5LkByZXNvbHZlLkBjYWxsKEB1
bmRlZmluZWQsIHZhbHVlKTsKKyAgICBpZiAodGhpcyA9PT0gQFByb21pc2UpIHsKKyAgICAgICAg
dmFyIHByb21pc2UgPSBAbmV3UHJvbWlzZSgpOworICAgICAgICBAcmVzb2x2ZVByb21pc2VXaXRo
Rmlyc3RSZXNvbHZpbmdGdW5jdGlvbkNhbGxDaGVjayhwcm9taXNlLCB2YWx1ZSk7CisgICAgICAg
IHJldHVybiBwcm9taXNlOworICAgIH0KIAotICAgIHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5A
cHJvbWlzZTsKKyAgICByZXR1cm4gQHByb21pc2VSZXNvbHZlU2xvdyh0aGlzLCB2YWx1ZSk7CiB9
CiAKIEBuYWtlZENvbnN0cnVjdG9yCkBAIC0yMzAsMTkgKzIzNCwxOCBAQCBmdW5jdGlvbiBQcm9t
aXNlKGV4ZWN1dG9yKQogICAgIGlmICh0eXBlb2YgZXhlY3V0b3IgIT09ICJmdW5jdGlvbiIpCiAg
ICAgICAgIEB0aHJvd1R5cGVFcnJvcigiUHJvbWlzZSBjb25zdHJ1Y3RvciB0YWtlcyBhIGZ1bmN0
aW9uIGFyZ3VtZW50Iik7CiAKLSAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNlKG5ldy50
YXJnZXQsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNlKTsKKyAgICB2YXIgcHJvbWlzZSA9
IEBjcmVhdGVQcm9taXNlKHRoaXMsIC8qIGlzSW50ZXJuYWxQcm9taXNlICovIGZhbHNlKTsKICAg
ICB2YXIgY2FwdHVyZWRQcm9taXNlID0gcHJvbWlzZTsKIAotICAgIGZ1bmN0aW9uIEByZXNvbHZl
KHJlc29sdXRpb24pIHsKLSAgICAgICAgcmV0dXJuIEByZXNvbHZlUHJvbWlzZVdpdGhGaXJzdFJl
c29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVzb2x1dGlvbik7Ci0g
ICAgfQotCi0gICAgZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsKKyAgICB2YXIgQHJlamVjdCA9
IGZ1bmN0aW9uIEByZWplY3QocmVhc29uKSB7CiAgICAgICAgIHJldHVybiBAcmVqZWN0UHJvbWlz
ZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwgcmVh
c29uKTsKLSAgICB9CisgICAgfTsKIAogICAgIHRyeSB7Ci0gICAgICAgIGV4ZWN1dG9yKEByZXNv
bHZlLCBAcmVqZWN0KTsKKyAgICAgICAgZXhlY3V0b3IoCisgICAgICAgICAgICBmdW5jdGlvbiBA
cmVzb2x2ZShyZXNvbHV0aW9uKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEByZXNvbHZlUHJv
bWlzZVdpdGhGaXJzdFJlc29sdmluZ0Z1bmN0aW9uQ2FsbENoZWNrKGNhcHR1cmVkUHJvbWlzZSwg
cmVzb2x1dGlvbik7CisgICAgICAgICAgICB9LCBAcmVqZWN0KTsKICAgICB9IGNhdGNoIChlcnJv
cikgewogICAgICAgICBAcmVqZWN0KGVycm9yKTsKICAgICB9CkBAIC0yNTgsMTkgKzI2MSwxOCBA
QCBmdW5jdGlvbiBJbnRlcm5hbFByb21pc2UoZXhlY3V0b3IpCiAgICAgaWYgKHR5cGVvZiBleGVj
dXRvciAhPT0gImZ1bmN0aW9uIikKICAgICAgICAgQHRocm93VHlwZUVycm9yKCJJbnRlcm5hbFBy
b21pc2UgY29uc3RydWN0b3IgdGFrZXMgYSBmdW5jdGlvbiBhcmd1bWVudCIpOwogCi0gICAgdmFy
IHByb21pc2UgPSBAY3JlYXRlUHJvbWlzZShuZXcudGFyZ2V0LCAvKiBpc0ludGVybmFsUHJvbWlz
ZSAqLyB0cnVlKTsKKyAgICB2YXIgcHJvbWlzZSA9IEBjcmVhdGVQcm9taXNlKHRoaXMsIC8qIGlz
SW50ZXJuYWxQcm9taXNlICovIHRydWUpOwogICAgIHZhciBjYXB0dXJlZFByb21pc2UgPSBwcm9t
aXNlOwogCi0gICAgZnVuY3Rpb24gQHJlc29sdmUocmVzb2x1dGlvbikgewotICAgICAgICByZXR1
cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2Fw
dHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKLSAgICB9Ci0KLSAgICBmdW5jdGlvbiBAcmVqZWN0
KHJlYXNvbikgeworICAgIHZhciBAcmVqZWN0ID0gZnVuY3Rpb24gQHJlamVjdChyZWFzb24pIHsK
ICAgICAgICAgcmV0dXJuIEByZWplY3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25D
YWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZWFzb24pOwotICAgIH0KKyAgICB9OwogCiAgICAg
dHJ5IHsKLSAgICAgICAgZXhlY3V0b3IoQHJlc29sdmUsIEByZWplY3QpOworICAgICAgICBleGVj
dXRvcigKKyAgICAgICAgICAgIGZ1bmN0aW9uIEByZXNvbHZlKHJlc29sdXRpb24pIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rp
b25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKKyAgICAgICAgICAgIH0s
IEByZWplY3QpOwogICAgIH0gY2F0Y2ggKGVycm9yKSB7CiAgICAgICAgIEByZWplY3QoZXJyb3Ip
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9t
aXNlT3BlcmF0aW9ucy5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9idWlsdGlucy9Qcm9taXNl
T3BlcmF0aW9ucy5qcwppbmRleCAyNDc3ZTYyNWZlNWI2MTRhNDY4ZGNkNzQwYTFiZTkzNjBiOTRi
NWYyLi42MmM5ODEzOGUxYjllNTc3OTAxNDkyYWNkZjA3ZDA2Y2E0NTBjZjlhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnVpbHRpbnMvUHJvbWlzZU9wZXJhdGlvbnMuanMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J1aWx0aW5zL1Byb21pc2VPcGVyYXRpb25zLmpzCkBA
IC04MiwxNCArODIsNDEgQEAgZnVuY3Rpb24gbmV3UHJvbWlzZUNhcGFiaWxpdHkoY29uc3RydWN0
b3IpCiAKICAgICBpZiAoY29uc3RydWN0b3IgPT09IEBQcm9taXNlKSB7CiAgICAgICAgIHZhciBw
cm9taXNlID0gQG5ld1Byb21pc2UoKTsKLSAgICAgICAgdmFyIHJlc29sdmluZ0Z1bmN0aW9ucyA9
IEBjcmVhdGVSZXNvbHZpbmdGdW5jdGlvbnMocHJvbWlzZSk7Ci0gICAgICAgIEBwdXRCeUlkRGly
ZWN0UHJpdmF0ZShyZXNvbHZpbmdGdW5jdGlvbnMsICJwcm9taXNlIiwgcHJvbWlzZSk7Ci0gICAg
ICAgIHJldHVybiByZXNvbHZpbmdGdW5jdGlvbnM7CisgICAgICAgIHZhciBjYXB0dXJlZFByb21p
c2UgPSBwcm9taXNlOworICAgICAgICBmdW5jdGlvbiBAcmVzb2x2ZShyZXNvbHV0aW9uKSB7Cisg
ICAgICAgICAgICByZXR1cm4gQHJlc29sdmVQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rp
b25DYWxsQ2hlY2soY2FwdHVyZWRQcm9taXNlLCByZXNvbHV0aW9uKTsKKyAgICAgICAgfQorICAg
ICAgICBmdW5jdGlvbiBAcmVqZWN0KHJlYXNvbikgeworICAgICAgICAgICAgcmV0dXJuIEByZWpl
Y3RQcm9taXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2soY2FwdHVyZWRQcm9t
aXNlLCByZWFzb24pOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBA
cmVzb2x2ZTogQHJlc29sdmUsCisgICAgICAgICAgICBAcmVqZWN0OiBAcmVqZWN0LAorICAgICAg
ICAgICAgQHByb21pc2U6IHByb21pc2UsCisgICAgICAgIH07CiAgICAgfQogCiAgICAgcmV0dXJu
IEBuZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3coY29uc3RydWN0b3IpOwogfQogCitAZ2xvYmFsUHJp
dmF0ZQorZnVuY3Rpb24gcHJvbWlzZVJlc29sdmVTbG93KGNvbnN0cnVjdG9yLCB2YWx1ZSkKK3sK
KyAgICBAYXNzZXJ0KGNvbnN0cnVjdG9yICE9PSBAUHJvbWlzZSk7CisgICAgdmFyIHByb21pc2VD
YXBhYmlsaXR5ID0gQG5ld1Byb21pc2VDYXBhYmlsaXR5U2xvdyhjb25zdHJ1Y3Rvcik7CisgICAg
cHJvbWlzZUNhcGFiaWxpdHkuQHJlc29sdmUuQGNhbGwoQHVuZGVmaW5lZCwgdmFsdWUpOworICAg
IHJldHVybiBwcm9taXNlQ2FwYWJpbGl0eS5AcHJvbWlzZTsKK30KKworQGdsb2JhbFByaXZhdGUK
K2Z1bmN0aW9uIHByb21pc2VSZWplY3RTbG93KGNvbnN0cnVjdG9yLCByZWFzb24pCit7CisgICAg
QGFzc2VydChjb25zdHJ1Y3RvciAhPT0gQFByb21pc2UpOworICAgIHZhciBwcm9taXNlQ2FwYWJp
bGl0eSA9IEBuZXdQcm9taXNlQ2FwYWJpbGl0eVNsb3coY29uc3RydWN0b3IpOworICAgIHByb21p
c2VDYXBhYmlsaXR5LkByZWplY3QuQGNhbGwoQHVuZGVmaW5lZCwgcmVhc29uKTsKKyAgICByZXR1
cm4gcHJvbWlzZUNhcGFiaWxpdHkuQHByb21pc2U7Cit9CisKIEBnbG9iYWxQcml2YXRlCiBmdW5j
dGlvbiBuZXdIYW5kbGVkUmVqZWN0ZWRQcm9taXNlKGVycm9yKQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDBlNjRhM2U3Y2Qx
MWVlZmYxMTUzNmVmYWYxYTkxNjA5NjQxMDQ2NmUuLjM1ODdhYTYzYjc3YTllZDAwMzQ0MWE2YjU3
ZDQwYjY1NTM4ODM4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5jcHAKQEAgLTk5MCw3ICs5OTAsNyBAQCBjYXBpdGFsTmFtZSAjIyBDb25z
dHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFs
TmFtZQogICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRp
bk5hbWVzKCkucHJvcGVydHlJc0VudW1lcmFibGVQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1By
b3BlcnR5SXNFbnVtZXJhYmxlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSksCiAg
ICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMo
KS5vd25LZXlzUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNPd25LZXlzLCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5
QXR0cmlidXRlOjpSZWFkT25seSksCiAgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9w
ZXJ0eU5hbWVzLT5idWlsdGluTmFtZXMoKS5pbXBvcnRNb2R1bGVQcml2YXRlTmFtZSgpLCBwcml2
YXRlRnVuY0ltcG9ydE1vZHVsZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLAot
ICAgICAgICBHbG9iYWxQcm9wZXJ0eUluZm8odm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVz
KCkuZW5xdWV1ZUpvYlByaXZhdGVOYW1lKCksIEpTRnVuY3Rpb246OmNyZWF0ZSh2bSwgdGhpcywg
MCwgU3RyaW5nKCksIGVucXVldWVKb2IpLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSksCisgICAgICAgIEdsb2JhbFByb3BlcnR5SW5mbyh2bS5wcm9wZXJ0eU5hbWVzLT5idWlsdGlu
TmFtZXMoKS5lbnF1ZXVlSm9iUHJpdmF0ZU5hbWUoKSwgSlNGdW5jdGlvbjo6Y3JlYXRlKHZtLCB0
aGlzLCAwLCAiZW5xdWV1ZUpvYiJfcywgZW5xdWV1ZUpvYiksIFByb3BlcnR5QXR0cmlidXRlOjpE
b250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFt
ZXMtPmJ1aWx0aW5OYW1lcygpLm1ha2VUeXBlRXJyb3JQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVu
Y01ha2VUeXBlRXJyb3IsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0
cmlidXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAg
ICAgR2xvYmFsUHJvcGVydHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5
cGVkQXJyYXlMZW5ndGhQcml2YXRlTmFtZSgpLCBwcml2YXRlRnVuY1R5cGVkQXJyYXlMZW5ndGgs
IFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVs
ZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KSwKICAgICAgICAgR2xvYmFsUHJvcGVy
dHlJbmZvKHZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygpLnR5cGVkQXJyYXlHZXRPcmln
aW5hbENvbnN0cnVjdG9yUHJpdmF0ZU5hbWUoKSwgcHJpdmF0ZUZ1bmNUeXBlZEFycmF5R2V0T3Jp
Z2luYWxDb25zdHJ1Y3RvciwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpLApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IGNjZWU2ZDhhOGRhY2MxZjBiZWUzOWU2YTRkNTFhZWQwMzc3NzAwODcuLmZjNDYzMDQxZWU0
NzAyODgzZGIxMDYwYzkyM2FlNWM3N2Y1MTFiMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAx
OS0xMC0yNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtK
U0NdIE9wdGltaXplIFByb21pc2UgcnVudGltZSBmdW5jdGlvbnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMzQ1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2Fn
ZS1zdGFjay10cmFjZS1leHBlY3RlZC50eHQ6CisKIDIwMTktMTAtMjUgIEVyaWMgQ2FybHNvbiAg
PGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9ydCBmb3IgY2FsbGJhY2tz
IGZvciBtYW5pZmVzdCBldmVudHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
b25zb2xlL21lc3NhZ2Utc3RhY2stdHJhY2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS1leHBlY3RlZC50eHQKaW5kZXggNWJh
ZDk1YTRjOTllZjdlNzNjNjFhNmI3ZmQ2OTM5YjAyZGJhMjFlMS4uOTBhNDQyMzJmNWJmNTg2ZmMx
ZmM3MGRlM2I5MThhZGU4OThlOGMwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NvbnNvbGUvbWVzc2FnZS1zdGFjay10cmFjZS1leHBlY3RlZC50eHQKQEAg
LTI3LDggKzI3LDkgQEAgQ0FMTCBTVEFDSzoKIENBTEwgU1RBQ0s6CiAwOiBbTl0gKGFub255bW91
cyBmdW5jdGlvbikKIDE6IFtOXSByZWplY3RQcm9taXNlCi0yOiBbTl0gcmVqZWN0Ci0zOiBbRl0g
dHJpZ2dlclVuaGFuZGxlZFJlamVjdGlvblByb21pc2VSZWplY3QKKzI6IFtOXSByZWplY3RQcm9t
aXNlV2l0aEZpcnN0UmVzb2x2aW5nRnVuY3Rpb25DYWxsQ2hlY2sKKzM6IFtOXSByZWplY3QKKzQ6
IFtGXSB0cmlnZ2VyVW5oYW5kbGVkUmVqZWN0aW9uUHJvbWlzZVJlamVjdAogCiAtLSBSdW5uaW5n
IHRlc3QgY2FzZTogQ29uc29sZS5TdGFja1RyYWNlLlVuaGFuZGxlZFByb21pc2VSZWplY3Rpb24u
RXhwbGljaXRSZWplY3QKIENBTEwgU1RBQ0s6CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxv
ZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDY3MGNjNWMyNjYyMDIyNDFhMTllNWE1ZTAzOTY4
NzVhZmExNWE3MmMuLjQ5MWIxY2QyNDRmZWY0MzU3NDg2NWRiMTJkZGZjNTlkMTQwZjBiYzkgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMTktMTAtMjYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBPcHRpbWl6ZSBQcm9taXNlIHJ1bnRpbWUgZnVuY3Rpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM0NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1pY3JvYmVu
Y2htYXJrcy9wcm9taXNlLXJlamVjdC5qczogQWRkZWQuCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL3Byb21pc2UtcmVzb2x2ZS5qczogQWRkZWQuCisKIDIwMTktMTAtMjUgIFJvc3MgS2lyc2xp
bmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIHRlc3QyNjItcnVubmVyIHNo
b3VsZCBiZSBhYmxlIHRvIHBhc3MgSlNDIGEgZmVhdHVyZSBmbGFnCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlamVjdC5qcyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL3Byb21pc2UtcmVqZWN0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmMzAwY2I5ZWFhNzg5YjY3YTNk
MmM1MzIyNWMwZmIwNmI4ZjZmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3JvYmVu
Y2htYXJrcy9wcm9taXNlLXJlamVjdC5qcwpAQCAtMCwwICsxLDMgQEAKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU2OyArK2kpCisgICAgUHJvbWlzZS5yZWplY3QoNDIpOworZHJhaW5NaWNyb3Rhc2tz
KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlc29sdmUu
anMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9wcm9taXNlLXJlc29sdmUuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMThkNmRmZTRiYmQyNWQ3YTMxMTc4OTE1OTkwYTQ4OGU0YjUwYjUyMQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL3Byb21pc2UtcmVzb2x2ZS5qcwpAQCAtMCww
ICsxLDMgQEAKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgUHJvbWlzZS5yZXNv
bHZlKDQyKTsKK2RyYWluTWljcm90YXNrcygpOwo=
</data>
<flag name="review"
          id="397740"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
    <flag name="commit-queue"
          id="397743"
          type_id="3"
          status="-"
          setter="ews-watchlist"
    />
          </attachment>
      

    </bug>

</bugzilla>