<?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>160954</bug_id>
          
          <creation_ts>2016-08-17 23:02:37 -0700</creation_ts>
          <short_desc>[JSC] ArithSqrt should work with any argument type</short_desc>
          <delta_ts>2016-08-19 19:02:28 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1221059</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-17 23:02:37 -0700</bug_when>
    <thetext>[JSC] ArithSqrt should work with any argument type</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221060</commentid>
    <comment_count>1</comment_count>
      <attachid>286364</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-17 23:08:37 -0700</bug_when>
    <thetext>Created attachment 286364
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221064</commentid>
    <comment_count>2</comment_count>
      <attachid>286364</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-17 23:50:14 -0700</bug_when>
    <thetext>Comment on attachment 286364
Patch

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

r=me

&gt; Source/JavaScriptCore/ChangeLog:24
&gt; +        with Filip, we decided not to use ToNumber+ArithSqrt despite

Out of curiosity, why not go with this design?
We have variants of Untyped math support in different places.
I wonder if we&apos;d be better of just inserting ToNumber everywhere
instead of explicitly supporting UntypedUse everywhere. What do you think?

&gt; JSTests/stress/arith-sqrt-on-various-types.js:117
&gt; +    if (numberOfDFGCompiles(opaqueSqrtForCSE) &gt; 1)

Is this compatible with OSR exit fuzzing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221068</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-18 00:26:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Out of curiosity, why not go with this design?
&gt; We have variants of Untyped math support in different places.
&gt; I wonder if we&apos;d be better of just inserting ToNumber everywhere
&gt; instead of explicitly supporting UntypedUse everywhere. What do you think?

Filip does not like the idea because we do not have explicit ways to relate those operations.

If you were to insert an operation between the &quot;ToNumber&quot; and &quot;ArithSqrt&quot;, and that operation exits, there is no way to execute the Math.sqrt without calling ToNumber again.
There is also the risk of changing ToNumber such that it exits in some cases.

To split an op into multiple nodes, the side effects should be done on the last node.

&gt; &gt; JSTests/stress/arith-sqrt-on-various-types.js:117
&gt; &gt; +    if (numberOfDFGCompiles(opaqueSqrtForCSE) &gt; 1)
&gt; 
&gt; Is this compatible with OSR exit fuzzing?

Hum, it is not! I did not think about that.

Any idea how to test this properly? I want to enforce that we no longer OSR Exit like crazy.
Maybe I should just have a function to tell this particular block should not be subject to fuzzing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221136</commentid>
    <comment_count>4</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-18 11:51:11 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Out of curiosity, why not go with this design?
&gt; &gt; We have variants of Untyped math support in different places.
&gt; &gt; I wonder if we&apos;d be better of just inserting ToNumber everywhere
&gt; &gt; instead of explicitly supporting UntypedUse everywhere. What do you think?
&gt; 
&gt; Filip does not like the idea because we do not have explicit ways to relate
&gt; those operations.
&gt; 
&gt; If you were to insert an operation between the &quot;ToNumber&quot; and &quot;ArithSqrt&quot;,
&gt; and that operation exits, there is no way to execute the Math.sqrt without
&gt; calling ToNumber again.
&gt; There is also the risk of changing ToNumber such that it exits in some cases.
I think the concern of doing something that exits between the two nodes
is a real concern. However, if ToNumber decides to start exiting at some
point for some reason, I think that&apos;d be fine. ToNumber can&apos;t exit to
to_number after it has already performed its side effects. So I think
that this problem exists irrespective of this patch. Regardless, I agree
that we should not split this into two nodes.

&gt; 
&gt; To split an op into multiple nodes, the side effects should be done on the
&gt; last node.
Right.
&gt; 
&gt; &gt; &gt; JSTests/stress/arith-sqrt-on-various-types.js:117
&gt; &gt; &gt; +    if (numberOfDFGCompiles(opaqueSqrtForCSE) &gt; 1)
&gt; &gt; 
&gt; &gt; Is this compatible with OSR exit fuzzing?
&gt; 
&gt; Hum, it is not! I did not think about that.
&gt; 
&gt; Any idea how to test this properly? I want to enforce that we no longer OSR
&gt; Exit like crazy.
&gt; Maybe I should just have a function to tell this particular block should not
&gt; be subject to fuzzing.
You could do that for this test since you don&apos;t really want OSR exit fuzzing to
take place for this block, since you want to enforce that we compile a block
that doesn&apos;t exit at all. I&apos;m not sure what&apos;s the nicest way to write such a function.
I guess you could flip a bit on the UnlinkedCodeBlock, that way, every CodeBlock
can ask its UnlinkedCodeBlock if it partakes in OSR exit fuzzing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221545</commentid>
    <comment_count>5</comment_count>
      <attachid>286499</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-19 17:01:20 -0700</bug_when>
    <thetext>Created attachment 286499
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221549</commentid>
    <comment_count>6</comment_count>
      <attachid>286499</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-08-19 17:11:37 -0700</bug_when>
    <thetext>Comment on attachment 286499
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:198
&gt; +        || canUseOSRExitFuzzing(m_jit.graph().baselineCodeBlockFor(m_origin.semantic)))

I think you want:
if (!canUseOSRExitFuzzing(m_jit.graph().baselineCodeBlockFor(m_origin.semantic)) || !doOSRExitFuzzing()) as the condition here.
It&apos;s probably better for canUseOSRExitFuzzing to come first so doOSRExitFuzzing won&apos;t perform its side effects if canUseOSRExitFuzzing is false.
You also want to negate the condition otherwise you&apos;ll never emit checks when fuzzing is enabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221558</commentid>
    <comment_count>7</comment_count>
      <attachid>286503</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-08-19 17:25:41 -0700</bug_when>
    <thetext>Created attachment 286503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221584</commentid>
    <comment_count>8</comment_count>
      <attachid>286503</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-19 19:02:24 -0700</bug_when>
    <thetext>Comment on attachment 286503
Patch

Clearing flags on attachment: 286503

Committed r204670: &lt;http://trac.webkit.org/changeset/204670&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1221585</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-08-19 19:02:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286364</attachid>
            <date>2016-08-17 23:08:37 -0700</date>
            <delta_ts>2016-08-19 17:01:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160954-20160817230648.patch</filename>
            <type>text/plain</type>
            <size>18756</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NTY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
OTUyYmJjMmYxMzY0MGRkNzFlZjdiNmZiZjI3YjU4ZTFkZjRkM2FhLi4xMDJmZTE0ZTIwNTE1ZDRj
YThkMDhkMjYzYzYyY2QxMzY1OTAyMDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNi0wOC0xNyAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBcml0aFNxcnQgc2hvdWxkIHdvcmsgd2l0aCBhbnkgYXJn
dW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwOTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgUHJldmlzb3VseSwgQXJpdGhTcXJ0IHdvdWxkIGFsd2F5cyBPU1IgRXhpdCBpZiB0aGUgYXJn
dW1lbnQKKyAgICAgICAgaXMgbm90IHR5cGVkIEludGVnZXIswqBEb3VibGUsIG9ywqBCb29sZWFu
LgorICAgICAgICBTaW5jZSB3ZSBjYW4ndCByZWNvdmVyIGJ5IGdlbmVyYWxpemluZyB0byB0aG9z
ZSwgd2UgY29udGludW91c2x5CisgICAgICAgIE9TUiBFeGl0IGFuZCByZWNvbXBpbGUgdGhlIHNh
bWUgY29kZSBvdmVyIGFuZCBvdmVyIGFnYWluLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9k
dWNlcyBhIGZhbGxiYWNrIHRvIGhhbmRsZSB0aGUgcmVtYWluaW5nIHR5cGVzLgorCisgICAgICAg
ICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRG
Rzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3Rz
KToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNs
b2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpT
Qzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorCisgICAgICAgICogZGZnL0RGR01heUV4
aXQuY3BwOgorICAgICAgICBUaGlzIGlzIHNvbWV3aGF0IHVucmVsYXRlZC4gV2hpbGUgZGlzY3Vz
c2luZyB0aGUgZGVzaWduIG9mIHRoaXMKKyAgICAgICAgd2l0aCBGaWxpcCwgd2UgZGVjaWRlZCBu
b3QgdG8gdXNlIFRvTnVtYmVyK0FyaXRoU3FydCBkZXNwaXRlCisgICAgICAgIHRoZSBndWFyYW50
ZWUgdGhhdCBUb051bWJlciBkb2VzIG5vdCBPU1IgRXhpdC4KKyAgICAgICAgU2luY2UgaXQgZG9l
cyBub3QgT1NSIEV4aXQsIHdlIHNob3VsZCBzYXkgc28gaW4gbWF5RXhpdEltcGwoKS4KKworICAg
ICAgICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNw
cDoKKyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBp
bGVBcml0aFNxcnQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAg
ICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBm
dGwvRlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZH
VG9CMzo6Y29tcGlsZUFyaXRoU3FydCk6CisKIDIwMTYtMDgtMTYgIE1hcmsgTGFtICA8bWFyay5s
YW1AYXBwbGUuY29tPgogCiAgICAgICAgIEhlYXA6OmNvbGxlY3RBbGxHYXJiYWdlKCkgc2hvdWxk
IHdvcmsgd2l0aCBKU0NfdXNlSW1tb3J0YWxPYmplY3RzPXRydWUuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgK
aW5kZXggZmM4NDQ2YzAxZWIwZWY2NWY2YjNlNWE4ODZmYTk3MGYwNzQ5MmQyNy4uYTdkNzAxYWMx
ZGZhNDIyMGM5YTg1N2IwODEwOThiZWM0NzU1OTA2NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAt
OTYxLDcgKzk2MSwxMCBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5
cGU+OjpleGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICAgICAgc2V0
Q29uc3RhbnQobm9kZSwganNEb3VibGVOdW1iZXIoc3FydChjaGlsZC5hc051bWJlcigpKSkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgZm9yTm9kZShub2RlKS5zZXRU
eXBlKHR5cGVPZkRvdWJsZVVuYXJ5T3AoZm9yTm9kZShub2RlLT5jaGlsZDEoKSkubV90eXBlKSk7
CisgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHNxcnRUeXBlID0gU3BlY0Z1bGxOdW1iZXI7CisgICAg
ICAgIGlmIChub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlKQorICAgICAg
ICAgICAgc3FydFR5cGUgPSB0eXBlT2ZEb3VibGVVbmFyeU9wKGZvck5vZGUobm9kZS0+Y2hpbGQx
KCkpLm1fdHlwZSk7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0VHlwZShzcXJ0VHlwZSk7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHQ2xvYmJlcml6ZS5oCmluZGV4IGMyYTgyZGJkMTFkNmZmNmVmMjE1YjE0YmE5Nzg5YjcwNzE0
OGNlMWYuLmFjMzU2Zjg0NDY2MGMxYmNjNDYyMmIxNGNjYTkwZDM4NThkZDQ5MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTQsNyArMTU0LDYgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEFyaXRoTWluOgogICAgIGNhc2UgQXJp
dGhNYXg6CiAgICAgY2FzZSBBcml0aFBvdzoKLSAgICBjYXNlIEFyaXRoU3FydDoKICAgICBjYXNl
IEFyaXRoRlJvdW5kOgogICAgIGNhc2UgQXJpdGhTaW46CiAgICAgY2FzZSBBcml0aENvczoKQEAg
LTE5MCw2ICsxODksMTUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9k
ZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgZGVmKFB1
cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgQXJpdGhTcXJ0Ogor
ICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkKKyAg
ICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgd3JpdGUoSGVhcCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBCaXRBbmQ6CiAgICAgY2FzZSBCaXRPcjoKICAgICBj
YXNlIEJpdFhvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3Bw
CmluZGV4IDI2ZTVjYjUyY2I5ZjNjNjE5YWZmM2YxY2NjODM2N2JlOGY3YTFmN2QuLjNiYjE1NmI2
MjMzNjY5OGUxMTZhMDkzMmNmYzIyNTZkYTM0YTAzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMzg2LDcgKzM4NiwxNCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAgICAgICBjYXNl
IEFyaXRoU3FydDoKKyAgICAgICAgY2FzZSBBcml0aFNxcnQ6IHsKKyAgICAgICAgICAgIEVkZ2Um
IGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICAgICAgaWYgKGNoaWxkMS0+c2hvdWxk
U3BlY3VsYXRlTnVtYmVyT3JCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgZml4RG91YmxlT3JC
b29sZWFuRWRnZShjaGlsZDEpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGZp
eEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGNhc2UgQXJpdGhGUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhTaW46CiAgICAg
ICAgIGNhc2UgQXJpdGhDb3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNw
cAppbmRleCA0M2JkYzM2OTIzMzExZTMzZDA3YjcyY2VkZDZlYTI2YjEzNjM5MjQxLi42OGRmMGFh
ZWM4OTM5ZWRkZWMzYzUxMDFhNTFiOGE4YTI4NTIzMWEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEwMCwxMiArMTAwLDEzIEBAIEV4aXRNb2RlIG1heUV4
aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0ZSkKICAgICBj
YXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBDYWxsRm9yd2FyZFZhcmFyZ3M6CiAgICAg
Y2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKKyAgICBjYXNlIENyZWF0ZUFjdGl2YXRpb246
CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlh
bGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2UgTmV3R2VuZXJh
dG9yRnVuY3Rpb246CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6Ci0gICAgY2FzZSBDcmVhdGVB
Y3RpdmF0aW9uOgorICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIHJlc3VsdCA9IEV4aXRzRm9y
RXhjZXB0aW9uczsKICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Tm9kZVR5cGUuaAppbmRleCA2N2Q0OWVlMWVhZjUxMWYxZjQ3ODM5ODgzNjlhMmYyNWFlOTM2ZTRi
Li4yZjJmZjdkZjRlM2EyZjNlMzU2MTc0OGFiNTkzOTg3MzUzNjM4YmIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xNTksNyArMTU5LDcgQEAgbmFtZXNwYWNl
IEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEFyaXRoRmxvb3IsIE5vZGVSZXN1bHRO
dW1iZXIpIFwKICAgICBtYWNybyhBcml0aENlaWwsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBt
YWNybyhBcml0aFRydW5jLCBOb2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgbWFjcm8oQXJpdGhTcXJ0
LCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgbWFjcm8oQXJpdGhTcXJ0LCBOb2RlUmVzdWx0RG91
YmxlKSBcCiAgICAgbWFjcm8oQXJpdGhTaW4sIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNy
byhBcml0aENvcywgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRoTG9nLCBOb2Rl
UmVzdWx0TnVtYmVyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25z
LmNwcAppbmRleCA2NzZjYTI2OTkxNjFiMGM3M2UyYmI4Mjk0ODgzZDBiNjc2MmU3NzE4Li41ZDkw
MDM5NzQyMzZlYjkxMTY5ZDIxMjg2ZWRjMGM3MTUyZWQ4NTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTMyMiw2ICszMjIsMTggQEAgRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKGEg
LyBiKSk7CiB9CiAKK2RvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRoU3FydChFeGVj
U3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCit7CisgICAgVk0qIHZtID0g
JmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2bSwgZXhlYyk7
CisKKyAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3AxKTsKKyAgICBk
b3VibGUgYSA9IG9wMS50b051bWJlcihleGVjKTsKKyAgICBpZiAoVU5MSUtFTFkodm0tPmV4Y2Vw
dGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOworICAg
IHJldHVybiBzcXJ0KGEpOworfQorCiBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNvZGVkSlNWYWx1
ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgdWludDMyX3QgaW5kZXgp
CiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdPcGVyYXRpb25zLmgKaW5kZXggNzdjZDhlYTdkZGY5NGY0ZWZiNjgyMGQ5NzYwYWQyOTM3NmYx
YmYyMi4uOTA0ZWMwYWY5M2M4NzdlN2RiMjFiZDFhNTVlMmViZWU2ZTEwNzUzNyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTUzLDYgKzUzLDcgQEAgRW5j
b2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFJTaGlmdChFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25WYWx1ZUJpdFVSU2hpZnQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwg
RW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUg
SklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3RhdGUqLCBFbmNv
ZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5U
RVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlRGl2KEV4
ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRPcDIpIFdURl9JTlRFUk5BTDsKK2RvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
U3FydChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZfSU5URVJOQUw7
CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFsKEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkUHJv
cGVydHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0
aW9uR2V0QnlWYWxDZWxsKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1ZhbHVlIGVuY29k
ZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBv
cGVyYXRpb25HZXRCeVZhbEFycmF5SW50KEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCBpbnQzMl90KSBX
VEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwCmluZGV4IDc2YjU1Njc3MzUwNzczYjc3OGE5NjE4NTE2NjEyYjFjMTk3NDJjMjYu
LmEwNzM3MzNiZTJkMzI5MTIwNWQ5YmQzMjk4M2ZhZDNmNjc1ZWNlMWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC00ODg3LDE5ICs0
ODg3LDMwIEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFJvdW5kaW5nKE5vZGUq
IG5vZGUpCiAKIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVBcml0aFNxcnQoTm9kZSogbm9k
ZSkKIHsKLSAgICBTcGVjdWxhdGVEb3VibGVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEo
KSk7Ci0gICAgRlBSUmVnIG9wMUZQUiA9IG9wMS5mcHIoKTsKKyAgICBpZiAobm9kZS0+Y2hpbGQx
KCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkgeworICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIEZQUlJlZyBvcDFGUFIg
PSBvcDEuZnByKCk7CiAKLSAgICBpZiAoIU1hY3JvQXNzZW1ibGVyOjpzdXBwb3J0c0Zsb2F0aW5n
UG9pbnRTcXJ0KCkgfHwgIU9wdGlvbnM6OnVzZUFyY2hpdGVjdHVyZVNwZWNpZmljT3B0aW1pemF0
aW9ucygpKSB7Ci0gICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAgIEZQUlJlc3VsdCBy
ZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxPcGVyYXRpb24oc3FydCwgcmVzdWx0LmZwcigpLCBv
cDFGUFIpOwotICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKLSAgICB9
IGVsc2UgewotICAgICAgICBGUFJUZW1wb3JhcnkgcmVzdWx0KHRoaXMsIG9wMSk7Ci0gICAgICAg
IG1faml0LnNxcnREb3VibGUob3AxLmZwcigpLCByZXN1bHQuZnByKCkpOwotICAgICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICAgICAgaWYgKCFNYWNyb0Fzc2VtYmxl
cjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpIHx8ICFPcHRpb25zOjp1c2VBcmNoaXRlY3R1
cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKSkgeworICAgICAgICAgICAgZmx1c2hSZWdpc3RlcnMo
KTsKKyAgICAgICAgICAgIEZQUlJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBjYWxs
T3BlcmF0aW9uKHNxcnQsIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKKyAgICAgICAgICAgIGRvdWJs
ZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOworICAgICAgICAgICAgbV9qaXQuc3Fy
dERvdWJsZShvcDEuZnByKCksIHJlc3VsdC5mcHIoKSk7CisgICAgICAgICAgICBkb3VibGVSZXN1
bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CiAgICAg
fQorCisgICAgSlNWYWx1ZU9wZXJhbmQgb3AxKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKKyAgICBK
U1ZhbHVlUmVncyBvcDFSZWdzID0gb3AxLmpzVmFsdWVSZWdzKCk7CisgICAgZmx1c2hSZWdpc3Rl
cnMoKTsKKyAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgIGNhbGxPcGVyYXRpb24ob3Bl
cmF0aW9uQXJpdGhTcXJ0LCByZXN1bHQuZnByKCksIG9wMVJlZ3MpOworICAgIG1faml0LmV4Y2Vw
dGlvbkNoZWNrKCk7CisgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CiB9CiAK
IC8vIEZvciBzbWFsbCBwb3NpdGl2ZSBpbnRlZ2VycyAsIGl0IGlzIHdvcnRoIGRvaW5nIGEgdGlu
eSBpbmxpbmUgbG9vcCB0byBleHBvbmVudGlhdGUgdGhlIGJhc2UuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggNDdkMThjNWU1MjM4Njg2ODEw
NDk4MTMwZjY5MjZhNGVhYWU5YzZkZi4uYTQwYTY2OTlmN2VmODM0MmJlZjNkMzRjYjk0MTNlMmIx
ODU0MTk3YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVK
SVQuaApAQCAtMTcxMiw2ICsxNzEyLDExIEBAIHB1YmxpYzoKICAgICAgICAgbV9qaXQuc2V0dXBB
cmd1bWVudHNXaXRoRXhlY1N0YXRlKHJlZ09wMSwgVHJ1c3RlZEltbVB0cihpZGVudE9wMiksIFRy
dXN0ZWRJbW0zMihvcDMpLCByZWdPcDQsIHJlZ09wNSk7CiAgICAgICAgIHJldHVybiBhcHBlbmRD
YWxsKG9wZXJhdGlvbik7CiAgICAgfQorICAgIEpJVENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRp
b24oRF9KSVRPcGVyYXRpb25fRUogb3BlcmF0aW9uLCBGUFJSZWcgcmVzdWx0LCBKU1ZhbHVlUmVn
cyBhcmcxKQorICAgIHsKKyAgICAgICAgbV9qaXQuc2V0dXBBcmd1bWVudHNXaXRoRXhlY1N0YXRl
KGFyZzEuZ3ByKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRp
b24sIHJlc3VsdCk7CisgICAgfQogI2Vsc2UgLy8gVVNFKEpTVkFMVUUzMl82NCkKIAogICAgIEpJ
VENvbXBpbGVyOjpDYWxsIGNhbGxPcGVyYXRpb24oSl9KSVRPcGVyYXRpb25fRUpKTWljIG9wZXJh
dGlvbiwgSlNWYWx1ZVJlZ3MgcmVzdWx0LCBKU1ZhbHVlUmVncyBhcmcxLCBKU1ZhbHVlUmVncyBh
cmcyLCBUcnVzdGVkSW1tUHRyIG1hdGhJQykKQEAgLTIxMzgsNiArMjE0MywxMSBAQCBwdWJsaWM6
CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLCBUcnVzdGVk
SW1tUHRyKGlkZW50T3AyKSwgVHJ1c3RlZEltbTMyKG9wMyksIGFyZzQsIGFyZzUpOwogICAgICAg
ICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6
Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJl
c3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1l
bnRzV2l0aEV4ZWNTdGF0ZShFQUJJXzMyQklUX0RVTU1ZX0FSRyBhcmcxLnBheWxvYWRHUFIoKSwg
YXJnMS50YWdHUFIoKSk7CisgICAgICAgIHJldHVybiBhcHBlbmRDYWxsU2V0UmVzdWx0KG9wZXJh
dGlvbiwgcmVzdWx0KTsKKyAgICB9CiAjZW5kaWYgLy8gVVNFKEpTVkFMVUUzMl82NCkKICAgICAK
ICNpZiAhZGVmaW5lZChOREVCVUcpICYmICFDUFUoQVJNKSAmJiAhQ1BVKE1JUFMpICYmICFDUFUo
U0g0KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1Rv
QjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmlu
ZGV4IDQ4OTZlNmQ2ZDgzNTk3NTUxYjEyMWUwNDIwMWFiMzYxMGQ0NjkwNTkuLmQ3ODU4MWEyNWNl
MzUxNDk0ODcyNjhkMjE0YzQxY2E1OTcxNGQzZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTIyNzIsNyArMjI3MiwxNiBAQCBwcml2YXRl
OgogICAgICAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CiAgICAgfQogCi0gICAgdm9pZCBjb21w
aWxlQXJpdGhTcXJ0KCkgeyBzZXREb3VibGUobV9vdXQuZG91YmxlU3FydChsb3dEb3VibGUobV9u
b2RlLT5jaGlsZDEoKSkpKTsgfQorICAgIHZvaWQgY29tcGlsZUFyaXRoU3FydCgpCisgICAgewor
ICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkgPT0gRG91YmxlUmVwVXNlKSB7
CisgICAgICAgICAgICBzZXREb3VibGUobV9vdXQuZG91YmxlU3FydChsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSkpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBM
VmFsdWUgYXJndW1lbnQgPSBsb3dKU1ZhbHVlKG1fbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBM
VmFsdWUgcmVzdWx0ID0gdm1DYWxsKERvdWJsZSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkFy
aXRoU3FydCksIG1fY2FsbEZyYW1lLCBhcmd1bWVudCk7CisgICAgICAgIHNldERvdWJsZShyZXN1
bHQpOworICAgIH0KIAogICAgIHZvaWQgY29tcGlsZUFyaXRoTG9nKCkgeyBzZXREb3VibGUobV9v
dXQuZG91YmxlTG9nKGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkpOyB9CiAgICAgCmRpZmYg
LS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFkMjAw
MmU3MDFjNTc2ZmJlYzI2YTgyMzk3MGQyNjEyYmFlZWU4N2QuLjAwYjE0NGZhNWRmZTQ2YmQwYjFm
ODBhZWI1YzFhNWZmMmUxOTRkODMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTYtMDgtMTcgIEJlbmphbWlu
IFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQXJpdGhTcXJ0
IHNob3VsZCB3b3JrIHdpdGggYW55IGFyZ3VtZW50IHR5cGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk1NAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2FyaXRoLXNxcnQtb24tdmFyaW91
cy10eXBlcy5qczogQWRkZWQuCisgICAgICAgIChsZXQudmFsaWRJbnB1dFR5cGVkVGVzdENhc2Vz
LnZhbGlkSW5wdXRUZXN0Q2FzZXMubWFwKToKKyAgICAgICAgKGlzSWRlbnRpY2FsKToKKyAgICAg
ICAgKG9wYXF1ZUFsbFR5cGVzU3FydCk6CisgICAgICAgICh0ZXN0QWxsVHlwZXNDYWxsKToKKyAg
ICAgICAgKHRlc3RTaW5nbGVUeXBlQ2FsbCk6CisgICAgICAgIChvcGFxdWVTcXJ0Rm9yU2lkZUVm
ZmVjdHMpOgorICAgICAgICAodGVzdFNpZGVFZmZlY3QubGV0LnRlc3RPYmplY3QudmFsdWVPZik6
CisgICAgICAgICh0ZXN0U2lkZUVmZmVjdCk6CisgICAgICAgIChvcGFxdWVTcXJ0Rm9yQ1NFKToK
KyAgICAgICAgKHRlc3RDU0UubGV0LnRlc3RPYmplY3QudmFsdWVPZik6CisgICAgICAgICh0ZXN0
Q1NFKToKKyAgICAgICAgKHRlc3RFeGNlcHRpb24ub3BhcXVlU3FydFdpdGhFeGNlcHRpb24pOgor
ICAgICAgICAodGVzdEV4Y2VwdGlvbik6CisKIDIwMTYtMDgtMTYgIFJ5YW4gSGFkZGFkICA8cnlh
bmhhZGRhZEBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjIw
NDQ2NC4KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL2FyaXRoLXNxcnQtb24tdmFyaW91cy10
eXBlcy5qcyBiL0pTVGVzdHMvc3RyZXNzL2FyaXRoLXNxcnQtb24tdmFyaW91cy10eXBlcy5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi41NjQ3ZmE1ZTBmMzAxYzViYmQ1NDE4OGM5NTA2YjU2OTk1Nzg5OTZmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvYXJpdGgtc3FydC1vbi12YXJpb3VzLXR5cGVz
LmpzCkBAIC0wLDAgKzEsMTU4IEBACisidXNlIHN0cmljdCI7CisKK2xldCB2YWxpZElucHV0VGVz
dENhc2VzID0gWworICAgIC8vIGlucHV0IGFzIHN0cmluZywgZXhwZWN0ZWQgcmVzdWx0IGFzIHN0
cmluZy4KKyAgICBbInVuZGVmaW5lZCIsICJOYU4iXSwKKyAgICBbIm51bGwiLCAiMCJdLAorICAg
IFsiMCIsICIwIl0sCisgICAgWyItMC4iLCAiLTAuIl0sCisgICAgWyI0IiwgIjIiXSwKKyAgICBb
IjQyLjUiLCAiNi41MTkyMDI0MDUyMDI2NDkiXSwKKyAgICBbIkluZmluaXR5IiwgIkluZmluaXR5
Il0sCisgICAgWyItSW5maW5pdHkiLCAiTmFOIl0sCisgICAgWyJOYU4iLCAiTmFOIl0sCisgICAg
WyJcIldlYktpdFwiIiwgIk5hTiJdLAorICAgIFsiXCI0XCIiLCAiMiJdLAorICAgIFsieyB2YWx1
ZU9mOiAoKSA9PiB7IHJldHVybiA0OyB9IH0iLCAiMiJdLAorXTsKKworbGV0IHZhbGlkSW5wdXRU
eXBlZFRlc3RDYXNlcyA9IHZhbGlkSW5wdXRUZXN0Q2FzZXMubWFwKChlbGVtZW50KSA9PiB7IHJl
dHVybiBbZXZhbCgiKCIgKyBlbGVtZW50WzBdICsgIikiKSwgZXZhbChlbGVtZW50WzFdKV0gfSk7
CisKK2Z1bmN0aW9uIGlzSWRlbnRpY2FsKHJlc3VsdCwgZXhwZWN0ZWQpCit7CisgICAgaWYgKGV4
cGVjdGVkID09PSBleHBlY3RlZCkgeworICAgICAgICBpZiAocmVzdWx0ICE9PSBleHBlY3RlZCkK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFleHBlY3RlZCAmJiAxIC8g
ZXhwZWN0ZWQgPT09IC1JbmZpbml0eSAmJiAxIC8gcmVzdWx0ICE9PSAtSW5maW5pdHkpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAg
IHJldHVybiByZXN1bHQgIT09IHJlc3VsdDsKK30KKworCisvLyBUZXN0IE1hdGguc3FydCgpIHdp
dGggYSB2ZXJ5IHBvbHltb3JwaGljIGlucHV0LiBBbGwgdGVzdCBjYXNlcyBhcmUgc2VlbiBhdCBl
YWNoIGl0ZXJhdGlvbi4KK2Z1bmN0aW9uIG9wYXF1ZUFsbFR5cGVzU3FydChhcmd1bWVudCkgewor
ICAgIHJldHVybiBNYXRoLnNxcnQoYXJndW1lbnQpOworfQorbm9JbmxpbmUob3BhcXVlQWxsVHlw
ZXNTcXJ0KTsKKworZnVuY3Rpb24gdGVzdEFsbFR5cGVzQ2FsbCgpIHsKKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGZvciAobGV0IHRlc3RDYXNlSW5wdXQgb2Yg
dmFsaWRJbnB1dFR5cGVkVGVzdENhc2VzKSB7CisgICAgICAgICAgICBsZXQgb3V0cHV0ID0gb3Bh
cXVlQWxsVHlwZXNTcXJ0KHRlc3RDYXNlSW5wdXRbMF0pOworICAgICAgICAgICAgaWYgKCFpc0lk
ZW50aWNhbChvdXRwdXQsIHRlc3RDYXNlSW5wdXRbMV0pKQorICAgICAgICAgICAgICAgIHRocm93
ICJGYWlsZWQgdGVzdEFsbFR5cGVzQ2FsbCBmb3IgaW5wdXQgIiArIHRlc3RDYXNlSW5wdXRbMF0g
KyAiIGV4cGVjdGVkICIgKyB0ZXN0Q2FzZUlucHV0WzFdICsgIiBnb3QgIiArIG91dHB1dDsKKyAg
ICAgICAgfQorICAgIH0KKyAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVBbGxUeXBl
c1NxcnQpID4gMikKKyAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGRldGVjdGVkIHNxcnQo
KSB3YXMgcG9seW1vcnBoaWMgYW5kIGdlbmVyYXRlZCBhIGdlbmVyaWMgdmVyc2lvbi4iOworfQor
dGVzdEFsbFR5cGVzQ2FsbCgpOworCisKKy8vIFRlc3QgTWF0aC5zcXJ0KCkgb24gYSBjb21wbGV0
ZWx5IHR5cGVkIGlucHV0LiBFdmVyeSBjYWxsIHNlZSBvbmx5IG9uZSB0eXBlLgorZnVuY3Rpb24g
dGVzdFNpbmdsZVR5cGVDYWxsKCkgeworICAgIGZvciAobGV0IHRlc3RDYXNlSW5wdXQgb2YgdmFs
aWRJbnB1dFRlc3RDYXNlcykgeworICAgICAgICBldmFsKGAKKyAgICAgICAgICAgIGZ1bmN0aW9u
IG9wYXF1ZVNxcnQoYXJndW1lbnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5zcXJ0
KGFyZ3VtZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5vSW5saW5lKG9wYXF1ZVNx
cnQpOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgaWYgKCFpc0lkZW50aWNhbChvcGFxdWVTcXJ0KCR7dGVzdENhc2VJbnB1dFsw
XX0pLCAke3Rlc3RDYXNlSW5wdXRbMV19KSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyAi
RmFpbGVkIHRlc3RTaW5nbGVUeXBlQ2FsbCgpIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVTcXJ0KSA+
IDEpCisgICAgICAgICAgICAgICAgdGhyb3cgIldlIHNob3VsZCBoYXZlIGNvbXBpbGVkIGEgc2lu
Z2xlIHNxcnQgZm9yIHRoZSBleHBlY3RlZCB0eXBlLiI7CisgICAgICAgIGApOworICAgIH0KK30K
K3Rlc3RTaW5nbGVUeXBlQ2FsbCgpOworCisKKy8vIFZlcmlmeSB3ZSBjYWxsIHZhbHVlT2YoKSBl
eGFjdGx5IG9uY2UgcGVyIGNhbGwuCitmdW5jdGlvbiBvcGFxdWVTcXJ0Rm9yU2lkZUVmZmVjdHMo
YXJndW1lbnQpIHsKKyAgICByZXR1cm4gTWF0aC5zcXJ0KGFyZ3VtZW50KTsKK30KK25vSW5saW5l
KG9wYXF1ZVNxcnRGb3JTaWRlRWZmZWN0cyk7CisKK2Z1bmN0aW9uIHRlc3RTaWRlRWZmZWN0KCkg
eworICAgIGxldCB0ZXN0T2JqZWN0ID0geworICAgICAgICBjb3VudGVyOiAwLAorICAgICAgICB2
YWx1ZU9mOiBmdW5jdGlvbigpIHsgKyt0aGlzLmNvdW50ZXI7IHJldHVybiAxNjsgfQorICAgIH07
CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBpZiAob3BhcXVl
U3FydEZvclNpZGVFZmZlY3RzKHRlc3RPYmplY3QpICE9PSA0KQorICAgICAgICAgICAgdGhyb3cg
IkluY29ycmVjdCByZXN1bHQgaW4gdGVzdFNpZGVFZmZlY3QoKSI7CisgICAgfQorICAgIGlmICh0
ZXN0T2JqZWN0LmNvdW50ZXIgIT09IDFlNCkKKyAgICAgICAgdGhyb3cgIkZhaWxlZCB0ZXN0U2lk
ZUVmZmVjdCgpIjsKKyAgICBpZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVTcXJ0Rm9yU2lk
ZUVmZmVjdHMpID4gMSkKKyAgICAgICAgdGhyb3cgIm9wYXF1ZVNxcnRGb3JTaWRlRWZmZWN0cygp
IGlzIHByZWRpY3RhYmxlLCBpdCBzaG91bGQgb25seSBiZSBjb21waWxlZCBvbmNlLiI7Cit9Cit0
ZXN0U2lkZUVmZmVjdCgpOworCisKKy8vIFZlcmlmeSBTUVJUIGlzIG5vdCBzdWJqZWN0IHRvIENT
RSBpZiB0aGUgYXJndW1lbnQgaGFzIHNpZGUgZWZmZWN0cy4KK2Z1bmN0aW9uIG9wYXF1ZVNxcnRG
b3JDU0UoYXJndW1lbnQpIHsKKyAgICByZXR1cm4gTWF0aC5zcXJ0KGFyZ3VtZW50KSArIE1hdGgu
c3FydChhcmd1bWVudCkgKyBNYXRoLnNxcnQoYXJndW1lbnQpOworfQorbm9JbmxpbmUob3BhcXVl
U3FydEZvckNTRSk7CisKK2Z1bmN0aW9uIHRlc3RDU0UoKSB7CisgICAgbGV0IHRlc3RPYmplY3Qg
PSB7CisgICAgICAgIGNvdW50ZXI6IDAsCisgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyAr
K3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9CisgICAgfTsKKyAgICBmb3IgKGxldCBpID0gMDsg
aSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlmIChvcGFxdWVTcXJ0Rm9yQ1NFKHRlc3RPYmplY3Qp
ICE9PSAxMikKKyAgICAgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0IGluIHRlc3RDU0Uo
KSI7CisgICAgfQorICAgIGlmICh0ZXN0T2JqZWN0LmNvdW50ZXIgIT09IDNlNCkKKyAgICAgICAg
dGhyb3cgIkZhaWxlZCB0ZXN0Q1NFKCkiOworICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9w
YXF1ZVNxcnRGb3JDU0UpID4gMSkKKyAgICAgICAgdGhyb3cgIm9wYXF1ZVNxcnRGb3JDU0UoKSBp
cyBwcmVkaWN0YWJsZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29tcGlsZWQgb25jZS4iOworfQordGVz
dENTRSgpOworCisKKy8vIFRlc3QgZXhjZXB0aW9ucyBpbiB0aGUgYXJndW1lbnQuCitmdW5jdGlv
biB0ZXN0RXhjZXB0aW9uKCkgeworICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBmdW5jdGlvbiBv
cGFxdWVTcXJ0V2l0aEV4Y2VwdGlvbihhcmd1bWVudCkgeworICAgICAgICBsZXQgcmVzdWx0ID0g
TWF0aC5zcXJ0KGFyZ3VtZW50KTsKKyAgICAgICAgKytjb3VudGVyOworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKyAgICBub0lubGluZShvcGFxdWVTcXJ0V2l0aEV4Y2VwdGlvbik7CisK
KyAgICBsZXQgdGVzdE9iamVjdCA9IHsgdmFsdWVPZjogKCkgPT4geyAgcmV0dXJuIDY0OyB9IH07
CisKKyAgICAvLyBXYXJtIHVwIHdpdGhvdXQgZXhjZXB0aW9uLgorICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgMWUzOyArK2kpIHsKKyAgICAgICAgaWYgKG9wYXF1ZVNxcnRXaXRoRXhjZXB0aW9uKHRl
c3RPYmplY3QpICE9PSA4KQorICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4g
b3BhcXVlU3FydFdpdGhFeGNlcHRpb24oKSI7CisgICAgfQorCisgICAgbGV0IHRlc3RUaHJvd09i
amVjdCA9IHsgdmFsdWVPZjogKCkgPT4geyB0aHJvdyB0ZXN0T2JqZWN0OyByZXR1cm4gNjQ7IH0g
fTsKKworICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICAgIGlmIChvcGFxdWVTcXJ0V2l0aEV4Y2VwdGlvbih0ZXN0VGhyb3dPYmplY3Qp
ICE9PSA4KQorICAgICAgICAgICAgICAgIHRocm93ICJUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBy
ZWFjaGVkISEiOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAoZSAhPT0g
dGVzdE9iamVjdCkgeworICAgICAgICAgICAgICAgIHRocm93ICJXcm9uZyBvYmplY3QgdGhyb3du
IGZyb20gb3BhcXVlU3FydFdpdGhFeGNlcHRpb24uIgorICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgaWYgKGNvdW50ZXIgIT09IDFlMykgeworICAgICAgICB0aHJvdyAiSW52
YWxpZCBjb3VudCBpbiB0ZXN0RXhjZXB0aW9uKCkiOworICAgIH0KK30KK3Rlc3RFeGNlcHRpb24o
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286499</attachid>
            <date>2016-08-19 17:01:20 -0700</date>
            <delta_ts>2016-08-19 17:25:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160954-20160819165928.patch</filename>
            <type>text/plain</type>
            <size>27538</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDVjZDI5YWI4ZjFhNTlhMmEyNGIyNzVkYzA2YzYwNGY4OTdmYTM5Li5kNTk1NmU5YTc5ODFkNmRm
MTI5ZDc3ZmY1ZWZjOGEzNTFkYTg0NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNi0wOC0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBcml0aFNxcnQgc2hvdWxkIHdvcmsgd2l0aCBhbnkgYXJn
dW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwOTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAg
UHJldmlzb3VseSwgQXJpdGhTcXJ0IHdvdWxkIGFsd2F5cyBPU1IgRXhpdCBpZiB0aGUgYXJndW1l
bnQKKyAgICAgICAgaXMgbm90IHR5cGVkIEludGVnZXIswqBEb3VibGUsIG9ywqBCb29sZWFuLgor
ICAgICAgICBTaW5jZSB3ZSBjYW4ndCByZWNvdmVyIGJ5IGdlbmVyYWxpemluZyB0byB0aG9zZSwg
d2UgY29udGludW91c2x5CisgICAgICAgIE9TUiBFeGl0IGFuZCByZWNvbXBpbGUgdGhlIHNhbWUg
Y29kZSBvdmVyIGFuZCBvdmVyIGFnYWluLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIGZhbGxiYWNrIHRvIGhhbmRsZSB0aGUgcmVtYWluaW5nIHR5cGVzLgorCisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorCisgICAgICAgICogZGZnL0RGR01heUV4aXQu
Y3BwOgorICAgICAgICBUaGlzIGlzIHNvbWV3aGF0IHVucmVsYXRlZC4gV2hpbGUgZGlzY3Vzc2lu
ZyB0aGUgZGVzaWduIG9mIHRoaXMKKyAgICAgICAgd2l0aCBGaWxpcCwgd2UgZGVjaWRlZCBub3Qg
dG8gdXNlIFRvTnVtYmVyK0FyaXRoU3FydCBkZXNwaXRlCisgICAgICAgIHRoZSBndWFyYW50ZWUg
dGhhdCBUb051bWJlciBkb2VzIG5vdCBPU1IgRXhpdC4KKyAgICAgICAgU2luY2UgaXQgZG9lcyBu
b3QgT1NSIEV4aXQsIHdlIHNob3VsZCBzYXkgc28gaW4gbWF5RXhpdEltcGwoKS4KKworICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aFNxcnQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUFyaXRoU3FydCk6CisKIDIwMTYtMDgtMTkgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFdhcm5pbmcgZml4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IGZjODQ0NmMwMWViMGVmNjVmNmIzZTVhODg2ZmE5NzBmMDc0OTJkMjcuLmE3
ZDcwMWFjMWRmYTQyMjBjOWE4NTdiMDgxMDk4YmVjNDc1NTkwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTk2MSw3ICs5NjEsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKHNxcnQoY2hpbGQuYXNOdW1iZXIo
KSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZSh0eXBlT2ZEb3VibGVVbmFyeU9wKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSkpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBzcXJ0VHlwZSA9IFNwZWNGdWxsTnVtYmVy
OworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkK
KyAgICAgICAgICAgIHNxcnRUeXBlID0gdHlwZU9mRG91YmxlVW5hcnlPcChmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoc3FydFR5
cGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGM4OTk0MDBlY2VkZWM0Yzk0YjU0
NTJlYzBjNTAxY2ZkNjIwMjkyOGEuLjM2ODhkOWI1MDAyZDkzOTkxNzA1YzFhMjI3Y2I2YjcyMmJm
MDRkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTkxLDYgKzkxLDEwIEBAIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVj
dChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAgICAgICYmIGlzU3VwcG9ydGVkRm9ySW5saW5p
bmcoY29kZUJsb2NrKTsKIH0KK2Jvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxl
KCktPmNhblVzZU9TUkV4aXRGdXp6aW5nKCk7Cit9CiAKIGlubGluZSB2b2lkIGRlYnVnRmFpbChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIENhcGFiaWxpdHlMZXZlbCBy
ZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApp
bmRleCA0MDEwYmIyOTFkZDMyYjJjYjE3ZjdhYWQ3OTQzNDc2ZDExODBhZWEwLi5iMTVhNTg0MzI1
YjIzMGI4ZDRhOWQ0ODYwYzRlNWM2ODcyMzdjZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgYm9vbCBtaWdodENvbXBp
bGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKTsKIGJvb2wgbWlnaHRJbmxpbmVGdW5j
dGlvbkZvckNhbGwoQ29kZUJsb2NrKik7CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9z
dXJlQ2FsbChDb2RlQmxvY2sqKTsKIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVj
dChDb2RlQmxvY2sqKTsKK2Jvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2NrKik7CiAK
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHBjKTsKIApAQCAtNTksNiArNjAs
NyBAQCBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxv
Y2sqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZv
ckNhbGwoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIG1pZ2h0SW5s
aW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQog
aW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKSB7
IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgaXNPU1JFeGl0RnV6emluZ0NhbmRpZGF0ZShD
b2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQogCiBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNh
cGFiaWxpdHlMZXZlbChPcGNvZGVJRCwgQ29kZUJsb2NrKiwgSW5zdHJ1Y3Rpb24qKSB7IHJldHVy
biBDYW5ub3RDb21waWxlOyB9CiBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZl
bChDb2RlQmxvY2sqKSB7IHJldHVybiBDYW5ub3RDb21waWxlOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IGMyYTgyZGJkMTFkNmZmNmVmMjE1YjE0YmE5
Nzg5YjcwNzE0OGNlMWYuLmFjMzU2Zjg0NDY2MGMxYmNjNDYyMmIxNGNjYTkwZDM4NThkZDQ5MzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTQsNyAr
MTU0LDYgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3Qg
UmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICBjYXNlIEFyaXRoTWluOgogICAg
IGNhc2UgQXJpdGhNYXg6CiAgICAgY2FzZSBBcml0aFBvdzoKLSAgICBjYXNlIEFyaXRoU3FydDoK
ICAgICBjYXNlIEFyaXRoRlJvdW5kOgogICAgIGNhc2UgQXJpdGhTaW46CiAgICAgY2FzZSBBcml0
aENvczoKQEAgLTE5MCw2ICsxODksMTUgQEAgdm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAg
ICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CiAgICAgICAgIHJldHVybjsKIAorICAgIGNhc2UgQXJp
dGhTcXJ0OgorICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJl
cFVzZSkKKyAgICAgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSkpOworICAgICAgICBlbHNlIHsK
KyAgICAgICAgICAgIHJlYWQoV29ybGQpOworICAgICAgICAgICAgd3JpdGUoSGVhcCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOworCiAgICAgY2FzZSBCaXRBbmQ6CiAgICAgY2FzZSBCaXRP
cjoKICAgICBjYXNlIEJpdFhvcjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCmluZGV4IDI2ZTVjYjUyY2I5ZjNjNjE5YWZmM2YxY2NjODM2N2JlOGY3YTFmN2Qu
LjNiYjE1NmI2MjMzNjY5OGUxMTZhMDkzMmNmYzIyNTZkYTM0YTAzNWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMzg2LDcgKzM4NiwxNCBAQCBw
cml2YXRlOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIAotICAg
ICAgICBjYXNlIEFyaXRoU3FydDoKKyAgICAgICAgY2FzZSBBcml0aFNxcnQ6IHsKKyAgICAgICAg
ICAgIEVkZ2UmIGNoaWxkMSA9IG5vZGUtPmNoaWxkMSgpOworICAgICAgICAgICAgaWYgKGNoaWxk
MS0+c2hvdWxkU3BlY3VsYXRlTnVtYmVyT3JCb29sZWFuKCkpCisgICAgICAgICAgICAgICAgZml4
RG91YmxlT3JCb29sZWFuRWRnZShjaGlsZDEpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGZpeEVkZ2U8VW50eXBlZFVzZT4oY2hpbGQxKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CiAgICAgICAgIGNhc2UgQXJpdGhGUm91bmQ6CiAgICAgICAgIGNhc2UgQXJpdGhT
aW46CiAgICAgICAgIGNhc2UgQXJpdGhDb3M6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdN
YXlFeGl0LmNwcAppbmRleCA0M2JkYzM2OTIzMzExZTMzZDA3YjcyY2VkZDZlYTI2YjEzNjM5MjQx
Li42OGRmMGFhZWM4OTM5ZWRkZWMzYzUxMDFhNTFiOGE4YTI4NTIzMWEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR01heUV4aXQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTWF5RXhpdC5jcHAKQEAgLTEwMCwxMiArMTAwLDEzIEBAIEV4aXRN
b2RlIG1heUV4aXRJbXBsKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgU3RhdGVUeXBlJiBzdGF0
ZSkKICAgICBjYXNlIENvbnN0cnVjdFZhcmFyZ3M6CiAgICAgY2FzZSBDYWxsRm9yd2FyZFZhcmFy
Z3M6CiAgICAgY2FzZSBDb25zdHJ1Y3RGb3J3YXJkVmFyYXJnczoKKyAgICBjYXNlIENyZWF0ZUFj
dGl2YXRpb246CiAgICAgY2FzZSBNYXRlcmlhbGl6ZUNyZWF0ZUFjdGl2YXRpb246CiAgICAgY2Fz
ZSBNYXRlcmlhbGl6ZU5ld09iamVjdDoKICAgICBjYXNlIE5ld0Z1bmN0aW9uOgogICAgIGNhc2Ug
TmV3R2VuZXJhdG9yRnVuY3Rpb246CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6Ci0gICAgY2Fz
ZSBDcmVhdGVBY3RpdmF0aW9uOgorICAgIGNhc2UgVG9OdW1iZXI6CiAgICAgICAgIHJlc3VsdCA9
IEV4aXRzRm9yRXhjZXB0aW9uczsKICAgICAgICAgYnJlYWs7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCA2N2Q0OWVlMWVhZjUxMWYxZjQ3ODM5ODgzNjlhMmYy
NWFlOTM2ZTRiLi4yZjJmZjdkZjRlM2EyZjNlMzU2MTc0OGFiNTkzOTg3MzUzNjM4YmIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0xNTksNyArMTU5LDcgQEAg
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKEFyaXRoRmxvb3IsIE5v
ZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aENlaWwsIE5vZGVSZXN1bHROdW1iZXIp
IFwKICAgICBtYWNybyhBcml0aFRydW5jLCBOb2RlUmVzdWx0TnVtYmVyKSBcCi0gICAgbWFjcm8o
QXJpdGhTcXJ0LCBOb2RlUmVzdWx0TnVtYmVyKSBcCisgICAgbWFjcm8oQXJpdGhTcXJ0LCBOb2Rl
UmVzdWx0RG91YmxlKSBcCiAgICAgbWFjcm8oQXJpdGhTaW4sIE5vZGVSZXN1bHROdW1iZXIpIFwK
ICAgICBtYWNybyhBcml0aENvcywgTm9kZVJlc3VsdE51bWJlcikgXAogICAgIG1hY3JvKEFyaXRo
TG9nLCBOb2RlUmVzdWx0TnVtYmVyKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdP
cGVyYXRpb25zLmNwcAppbmRleCA2NzZjYTI2OTkxNjFiMGM3M2UyYmI4Mjk0ODgzZDBiNjc2MmU3
NzE4Li41ZDkwMDM5NzQyMzZlYjkxMTY5ZDIxMjg2ZWRjMGM3MTUyZWQ4NTQ0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKQEAgLTMyMiw2ICszMjIsMTgg
QEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZURpdihFeGVjU3Rh
dGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGUKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKGEgLyBiKSk7CiB9CiAKK2RvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkFyaXRo
U3FydChFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpCit7CisgICAg
Vk0qIHZtID0gJmV4ZWMtPnZtKCk7CisgICAgTmF0aXZlQ2FsbEZyYW1lVHJhY2VyIHRyYWNlcih2
bSwgZXhlYyk7CisKKyAgICBKU1ZhbHVlIG9wMSA9IEpTVmFsdWU6OmRlY29kZShlbmNvZGVkT3Ax
KTsKKyAgICBkb3VibGUgYSA9IG9wMS50b051bWJlcihleGVjKTsKKyAgICBpZiAoVU5MSUtFTFko
dm0tPmV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVl
KCkpOworICAgIHJldHVybiBzcXJ0KGEpOworfQorCiBzdGF0aWMgQUxXQVlTX0lOTElORSBFbmNv
ZGVkSlNWYWx1ZSBnZXRCeVZhbChFeGVjU3RhdGUqIGV4ZWMsIEpTQ2VsbCogYmFzZSwgdWludDMy
X3QgaW5kZXgpCiB7CiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKaW5kZXggNzdjZDhlYTdkZGY5NGY0ZWZiNjgyMGQ5NzYw
YWQyOTM3NmYxYmYyMi4uOTA0ZWMwYWY5M2M4NzdlN2RiMjFiZDFhNTVlMmViZWU2ZTEwNzUzNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmgKQEAgLTUzLDYgKzUz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUJpdFJTaGlm
dChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZQogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElP
TiBvcGVyYXRpb25WYWx1ZUJpdFVSU2hpZnQoRXhlY1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5j
b2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMikgV1RGX0lOVEVSTkFMOwogRW5jb2Rl
ZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRpb25WYWx1ZUFkZE5vdE51bWJlcihFeGVjU3Rh
dGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3Ay
KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZh
bHVlRGl2KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRPcDIpIFdURl9JTlRFUk5BTDsKK2RvdWJsZSBKSVRfT1BFUkFUSU9OIG9wZXJh
dGlvbkFyaXRoU3FydChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxKSBXVEZf
SU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvbkdldEJ5VmFs
KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRCYXNlLCBFbmNvZGVkSlNWYWx1ZSBl
bmNvZGVkUHJvcGVydHkpIFdURl9JTlRFUk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJ
T04gb3BlcmF0aW9uR2V0QnlWYWxDZWxsKEV4ZWNTdGF0ZSosIEpTQ2VsbCosIEVuY29kZWRKU1Zh
bHVlIGVuY29kZWRQcm9wZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09Q
RVJBVElPTiBvcGVyYXRpb25HZXRCeVZhbEFycmF5SW50KEV4ZWNTdGF0ZSosIEpTQXJyYXkqLCBp
bnQzMl90KSBXVEZfSU5URVJOQUw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
U3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IDc2YjU1Njc3MzUwNzczYjc3OGE5NjE4NTE2NjEyYjFj
MTk3NDJjMjYuLmY0ZTNlYzdjZTJmMDhjNTBlMWM5ODVmNTY4NmYxNzc4M2ZhZTdlZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiREZHQXJyYXlpZnlTbG93UGF0aEdlbmVyYXRvci5oIgog
I2luY2x1ZGUgIkRGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5j
bHVkZSAiREZHQ2FsbENyZWF0ZURpcmVjdEFyZ3VtZW50c1Nsb3dQYXRoR2VuZXJhdG9yLmgiCisj
aW5jbHVkZSAiREZHQ2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHTWF5RXhpdC5oIgogI2lu
Y2x1ZGUgIkRGR09TUkV4aXRGdXp6LmgiCiAjaW5jbHVkZSAiREZHU2FuZVN0cmluZ0dldEJ5VmFs
U2xvd1BhdGhHZW5lcmF0b3IuaCIKQEAgLTE5Myw3ICsxOTQsOCBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjplbWl0R2V0QXJndW1lbnRTdGFydChDb2RlT3JpZ2luIG9yaWdpbiwgR1BSUmVnIHN0YXJ0
R1BSKQogCiBNYWNyb0Fzc2VtYmxlcjo6SnVtcCBTcGVjdWxhdGl2ZUpJVDo6ZW1pdE9TUkV4aXRG
dXp6Q2hlY2soKQogewotICAgIGlmICghZG9PU1JFeGl0RnV6emluZygpKQorICAgIGlmICghZG9P
U1JFeGl0RnV6emluZygpCisgICAgICAgIHx8IGNhblVzZU9TUkV4aXRGdXp6aW5nKG1faml0Lmdy
YXBoKCkuYmFzZWxpbmVDb2RlQmxvY2tGb3IobV9vcmlnaW4uc2VtYW50aWMpKSkKICAgICAgICAg
cmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpKdW1wKCk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6
Okp1bXAgcmVzdWx0OwpAQCAtNDg4NywxOSArNDg4OSwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQXJpdGhSb3VuZGluZyhOb2RlKiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklU
Ojpjb21waWxlQXJpdGhTcXJ0KE5vZGUqIG5vZGUpCiB7Ci0gICAgU3BlY3VsYXRlRG91YmxlT3Bl
cmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwotICAgIEZQUlJlZyBvcDFGUFIgPSBvcDEu
ZnByKCk7CisgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2Up
IHsKKyAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICBGUFJSZWcgb3AxRlBSID0gb3AxLmZwcigpOwogCi0gICAgaWYgKCFNYWNy
b0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpIHx8ICFPcHRpb25zOjp1c2VB
cmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXphdGlvbnMoKSkgewotICAgICAgICBmbHVzaFJlZ2lz
dGVycygpOwotICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3Bl
cmF0aW9uKHNxcnQsIHJlc3VsdC5mcHIoKSwgb3AxRlBSKTsKLSAgICAgICAgZG91YmxlUmVzdWx0
KHJlc3VsdC5mcHIoKSwgbm9kZSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgRlBSVGVtcG9yYXJ5
IHJlc3VsdCh0aGlzLCBvcDEpOwotICAgICAgICBtX2ppdC5zcXJ0RG91YmxlKG9wMS5mcHIoKSwg
cmVzdWx0LmZwcigpKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7
CisgICAgICAgIGlmICghTWFjcm9Bc3NlbWJsZXI6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQo
KSB8fCAhT3B0aW9uczo6dXNlQXJjaGl0ZWN0dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCkpIHsK
KyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgICAgICAgICBGUFJSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICAgICAgY2FsbE9wZXJhdGlvbihzcXJ0LCByZXN1bHQuZnByKCks
IG9wMUZQUik7CisgICAgICAgICAgICBkb3VibGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsK
KyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywg
b3AxKTsKKyAgICAgICAgICAgIG1faml0LnNxcnREb3VibGUob3AxLmZwcigpLCByZXN1bHQuZnBy
KCkpOworICAgICAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0
aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgSlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1Zh
bHVlUmVncygpOworICAgIGZsdXNoUmVnaXN0ZXJzKCk7CisgICAgRlBSUmVzdWx0IHJlc3VsdCh0
aGlzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbkFyaXRoU3FydCwgcmVzdWx0LmZwcigp
LCBvcDFSZWdzKTsKKyAgICBtX2ppdC5leGNlcHRpb25DaGVjaygpOworICAgIGRvdWJsZVJlc3Vs
dChyZXN1bHQuZnByKCksIG5vZGUpOwogfQogCiAvLyBGb3Igc21hbGwgcG9zaXRpdmUgaW50ZWdl
cnMgLCBpdCBpcyB3b3J0aCBkb2luZyBhIHRpbnkgaW5saW5lIGxvb3AgdG8gZXhwb25lbnRpYXRl
IHRoZSBiYXNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VC5oCmluZGV4IDQ3ZDE4YzVlNTIzODY4NjgxMDQ5ODEzMGY2OTI2YTRlYWFlOWM2ZGYuLmE0MGE2
Njk5ZjdlZjgzNDJiZWYzZDM0Y2I5NDEzZTJiMTg1NDE5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTE3MTIsNiArMTcxMiwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShyZWdPcDEs
IFRydXN0ZWRJbW1QdHIoaWRlbnRPcDIpLCBUcnVzdGVkSW1tMzIob3AzKSwgcmVnT3A0LCByZWdP
cDUpOwogICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbChvcGVyYXRpb24pOwogICAgIH0KKyAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKERfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlv
biwgRlBSUmVnIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSkKKyAgICB7CisgICAgICAgIG1faml0
LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShhcmcxLmdwcigpKTsKKyAgICAgICAgcmV0dXJu
IGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0aW9uLCByZXN1bHQpOworICAgIH0KICNlbHNlIC8v
IFVTRShKU1ZBTFVFMzJfNjQpCiAKICAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9u
KEpfSklUT3BlcmF0aW9uX0VKSk1pYyBvcGVyYXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNW
YWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3MgYXJnMiwgVHJ1c3RlZEltbVB0ciBtYXRoSUMpCkBA
IC0yMTM4LDYgKzIxNDMsMTEgQEAgcHVibGljOgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50
c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3RlZEltbVB0cihpZGVudE9wMiksIFRydXN0ZWRJbW0z
MihvcDMpLCBhcmc0LCBhcmc1KTsKICAgICAgICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9u
KTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6OkNhbGwgY2FsbE9wZXJhdGlvbihEX0pJVE9wZXJh
dGlvbl9FSiBvcGVyYXRpb24sIEZQUlJlZyByZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEpCisgICAg
eworICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9E
VU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCksIGFyZzEudGFnR1BSKCkpOworICAgICAgICByZXR1
cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVyYXRpb24sIHJlc3VsdCk7CisgICAgfQogI2VuZGlm
IC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAgCiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BV
KEFSTSkgJiYgIUNQVShNSVBTKSAmJiAhQ1BVKFNINCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAppbmRleCA0ODk2ZTZkNmQ4MzU5NzU1MWIxMjFlMDQy
MDFhYjM2MTBkNDY5MDU5Li5kNzg1ODFhMjVjZTM1MTQ5NDg3MjY4ZDIxNGM0MWNhNTk3MTRkM2Uw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBA
IC0yMjcyLDcgKzIyNzIsMTYgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHNldERvdWJsZShyZXN1
bHQpOwogICAgIH0KIAotICAgIHZvaWQgY29tcGlsZUFyaXRoU3FydCgpIHsgc2V0RG91YmxlKG1f
b3V0LmRvdWJsZVNxcnQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7IH0KKyAgICB2b2lk
IGNvbXBpbGVBcml0aFNxcnQoKQorICAgIHsKKyAgICAgICAgaWYgKG1fbm9kZS0+Y2hpbGQxKCku
dXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkgeworICAgICAgICAgICAgc2V0RG91YmxlKG1fb3V0
LmRvdWJsZVNxcnQobG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgTFZhbHVlIGFyZ3VtZW50ID0gbG93SlNWYWx1ZSht
X25vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgTFZhbHVlIHJlc3VsdCA9IHZtQ2FsbChEb3VibGUs
IG1fb3V0Lm9wZXJhdGlvbihvcGVyYXRpb25Bcml0aFNxcnQpLCBtX2NhbGxGcmFtZSwgYXJndW1l
bnQpOworICAgICAgICBzZXREb3VibGUocmVzdWx0KTsKKyAgICB9CiAKICAgICB2b2lkIGNvbXBp
bGVBcml0aExvZygpIHsgc2V0RG91YmxlKG1fb3V0LmRvdWJsZUxvZyhsb3dEb3VibGUobV9ub2Rl
LT5jaGlsZDEoKSkpKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCA4MGFhMmE3NmNk
NWE4ZDNmZDM0M2JhZmE5NmM4ZjVjNWM4OGY4NjJmLi5iOGViMTU4Y2IwOWY2ZWJiN2VmMjliMDg1
ZGM4ZTUyMjkxYjUyNTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNTk4LDYgKzU5OCw3IEBA
IHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUHJlY2lzZVRpbWUo
RXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bk5ldmVySW5saW5lRnVuY3Rpb24oRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vREZHKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0ZUTChFeGVjU3RhdGUqKTsKK3N0YXRpYyBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZyhFeGVj
U3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uT3B0
aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uTnVtYmVyT2ZERkdDb21waWxlcyhFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50KEV4ZWNTdGF0ZSopOwpAQCAtNzk1LDYgKzc5Niw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgYWRkRnVuY3Rpb24odm0sICJub0lubGluZSIsIGZ1bmN0aW9uTmV2ZXJJbmxpbmVGdW5j
dGlvbiwgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibm9ERkciLCBmdW5jdGlvbk5vREZH
LCAxKTsKICAgICAgICAgYWRkRnVuY3Rpb24odm0sICJub0ZUTCIsIGZ1bmN0aW9uTm9GVEwsIDEp
OworICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm5vT1NSRXhpdEZ1enppbmciLCBmdW5jdGlvbk5v
T1NSRXhpdEZ1enppbmcsIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgIm51bWJlck9mREZH
Q29tcGlsZXMiLCBmdW5jdGlvbk51bWJlck9mREZHQ29tcGlsZXMsIDEpOwogICAgICAgICBhZGRG
dW5jdGlvbih2bSwgIm9wdGltaXplTmV4dEludm9jYXRpb24iLCBmdW5jdGlvbk9wdGltaXplTmV4
dEludm9jYXRpb24sIDEpOwogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInJlb3B0aW1pemF0aW9u
UmV0cnlDb3VudCIsIGZ1bmN0aW9uUmVvcHRpbWl6YXRpb25SZXRyeUNvdW50LCAxKTsKQEAgLTE1
ODAsNiArMTU4MiwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTm9G
VEwoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmlu
ZWQoKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4
aXRGdXp6aW5nKEV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHNldENhbm5vdFVzZU9TUkV4aXRGdXp6aW5nKGV4ZWMpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk9wdGltaXplTmV4dEludm9jYXRpb24oRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob3B0aW1pemVOZXh0SW52b2NhdGlv
bihleGVjKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3Bw
CmluZGV4IDRjOTQ0OWRmNDAyMzkxNTExY2Q0ZTM1ZmQ4ZmMzODQ1Y2YyN2MzMTQuLjU4OWVhNTkz
NDEyMDlkZDM1YWIwYWQ2ODIyYjMxMjcwZTQ1MGVmOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0xNDYsNiArMTQ2LDcgQEAgU2NyaXB0RXhl
Y3V0YWJsZTo6U2NyaXB0RXhlY3V0YWJsZShTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVk0mIHZtLCBj
b25zdCBTb3VyY2VDb2QKICAgICAsIG1fbmV2ZXJPcHRpbWl6ZShmYWxzZSkKICAgICAsIG1fbmV2
ZXJGVExPcHRpbWl6ZShmYWxzZSkKICAgICAsIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dChpc0lu
QXJyb3dGdW5jdGlvbkNvbnRleHQpCisgICAgLCBtX2NhblVzZU9TUkV4aXRGdXp6aW5nKHRydWUp
CiAgICAgLCBtX2Rlcml2ZWRDb250ZXh0VHlwZShzdGF0aWNfY2FzdDx1bnNpZ25lZD4oZGVyaXZl
ZENvbnRleHRUeXBlKSkKICAgICAsIG1fZXZhbENvbnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2ln
bmVkPihldmFsQ29udGV4dFR5cGUpKQogICAgICwgbV9vdmVycmlkZUxpbmVOdW1iZXIoLTEpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMmQwMDkxOWNk
ODFjYTU0NzFlNjVhZTRiMDc4Y2VlNDBlMWQwNWI4Yi4uMzViMmQ0Y2M2NzI0MTFlYTVlOTBmMWE1
ZDU1ZjExZjFkODE4Mzg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1
dGFibGUuaApAQCAtMzM3LDEyICszMzcsMTQgQEAgcHVibGljOgogICAgIHZvaWQgc2V0TmV2ZXJP
cHRpbWl6ZShib29sIHZhbHVlKSB7IG1fbmV2ZXJPcHRpbWl6ZSA9IHZhbHVlOyB9CiAgICAgdm9p
ZCBzZXROZXZlckZUTE9wdGltaXplKGJvb2wgdmFsdWUpIHsgbV9uZXZlckZUTE9wdGltaXplID0g
dmFsdWU7IH0KICAgICB2b2lkIHNldERpZFRyeVRvRW50ZXJJbkxvb3AoYm9vbCB2YWx1ZSkgeyBt
X2RpZFRyeVRvRW50ZXJJbkxvb3AgPSB2YWx1ZTsgfQorICAgIHZvaWQgc2V0Q2FuVXNlT1NSRXhp
dEZ1enppbmcoYm9vbCB2YWx1ZSkgeyBtX2NhblVzZU9TUkV4aXRGdXp6aW5nID0gdmFsdWU7IH0K
ICAgICBib29sIG5ldmVySW5saW5lKCkgY29uc3QgeyByZXR1cm4gbV9uZXZlcklubGluZTsgfQog
ICAgIGJvb2wgbmV2ZXJPcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV2ZXJPcHRpbWl6ZTsg
fQogICAgIGJvb2wgbmV2ZXJGVExPcHRpbWl6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmV2ZXJGVExP
cHRpbWl6ZTsgfQogICAgIGJvb2wgZGlkVHJ5VG9FbnRlckluTG9vcCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGlkVHJ5VG9FbnRlckluTG9vcDsgfQogICAgIGJvb2wgaXNJbmxpbmluZ0NhbmRpZGF0ZSgp
IGNvbnN0IHsgcmV0dXJuICFuZXZlcklubGluZSgpOyB9CiAgICAgYm9vbCBpc09rVG9PcHRpbWl6
ZSgpIGNvbnN0IHsgcmV0dXJuICFuZXZlck9wdGltaXplKCk7IH0KKyAgICBib29sIGNhblVzZU9T
UkV4aXRGdXp6aW5nKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Vc2VPU1JFeGl0RnV6emluZzsgfQog
ICAgIAogICAgIGJvb2wqIGFkZHJlc3NPZkRpZFRyeVRvRW50ZXJJbkxvb3AoKSB7IHJldHVybiAm
bV9kaWRUcnlUb0VudGVySW5Mb29wOyB9CiAKQEAgLTQwMyw2ICs0MDUsNyBAQCBwcm90ZWN0ZWQ6
CiAgICAgYm9vbCBtX25ldmVyT3B0aW1pemUgOiAxOwogICAgIGJvb2wgbV9uZXZlckZUTE9wdGlt
aXplIDogMTsKICAgICBib29sIG1faXNBcnJvd0Z1bmN0aW9uQ29udGV4dCA6IDE7CisgICAgYm9v
bCBtX2NhblVzZU9TUkV4aXRGdXp6aW5nIDogMTsKICAgICB1bnNpZ25lZCBtX2Rlcml2ZWRDb250
ZXh0VHlwZSA6IDI7IC8vIERlcml2ZWRDb250ZXh0VHlwZQogICAgIHVuc2lnbmVkIG1fZXZhbENv
bnRleHRUeXBlIDogMjsgLy8gRXZhbENvbnRleHRUeXBlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCmluZGV4IGQxMzA5MGZlZGRhZGEx
MWQ4MzAwZGY5YTNlMWVkMzViNzIyMDdiZmQuLjQzYWE0NTYzMmY5ODUwYTM4ZTYzNjNlNzcxMzI2
OGYxNTgyMTNmOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
c3RSdW5uZXJVdGlscy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVz
dFJ1bm5lclV0aWxzLmNwcApAQCAtMTMxLDYgKzEzMSwxOCBAQCBKU1ZhbHVlIHNldE5ldmVyT3B0
aW1pemUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiBzZXROZXZlck9wdGltaXplKGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKIH0KIAorSlNWYWx1ZSBzZXRDYW5ub3RVc2VPU1JFeGl0
RnV6emluZyhFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDEpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgSlNWYWx1ZSB0aGVG
dW5jdGlvblZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgaWYgKEZ1bmN0
aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGdldEV4ZWN1dGFibGVGb3JGdW5jdGlvbih0aGVG
dW5jdGlvblZhbHVlKSkKKyAgICAgICAgZXhlY3V0YWJsZS0+c2V0Q2FuVXNlT1NSRXhpdEZ1enpp
bmcoZmFsc2UpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIEpTVmFsdWUgb3B0
aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSA8IDEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZXN0UnVubmVyVXRpbHMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
c3RSdW5uZXJVdGlscy5oCmluZGV4IGI4ZGZhZWFjMGIzMjllMGUwOWI2NDJkZjllYTE5NWNjYWRj
YzFiZDAuLjE0NjU4ZDZjNGM5YzZiZjJkNTZhYWZhYjZhMWQzY2NlMTMwYmJiMDcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5oCkBAIC0xLDUg
KzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE1IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMy0yMDE2IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDUs
NiArNDUsNyBAQCBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIGZhaWxOZXh0TmV3Q29kZUJsb2Nr
KEV4ZWNTdGF0ZSopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBudW1iZXJPZkRGR0NvbXBp
bGVzKEV4ZWNTdGF0ZSopOwogSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXROZXZlcklubGlu
ZShFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgc2V0TmV2ZXJPcHRpbWl6
ZShFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgc2V0Q2Fubm90VXNlT1NS
RXhpdEZ1enppbmcoRXhlY1N0YXRlKik7CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIG9wdGlt
aXplTmV4dEludm9jYXRpb24oRXhlY1N0YXRlKik7CiAKIEpTX0VYUE9SVF9QUklWQVRFIHVuc2ln
bmVkIG51bWJlck9mRXhjZXB0aW9uRnV6ekNoZWNrcygpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9D
aGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAzZWYyZGI0ZmUwZDUzYzcxYTU2ZDgx
N2FkYzU0NTk4Yzg0MGEyMjU0Li4wZGU3OGEwZWRhY2RmZDlhYjQxY2E5NTczMTA3NWE0YWVlZGQ4
YmU4IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA4LTE5ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxh
aW5AYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFyaXRoU3FydCBzaG91bGQgd29yayB3aXRo
IGFueSBhcmd1bWVudCB0eXBlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjA5NTQKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4KKwor
ICAgICAgICAqIHN0cmVzcy9hcml0aC1zcXJ0LW9uLXZhcmlvdXMtdHlwZXMuanM6IEFkZGVkLgor
ICAgICAgICAobGV0LnZhbGlkSW5wdXRUeXBlZFRlc3RDYXNlcy52YWxpZElucHV0VGVzdENhc2Vz
Lm1hcCk6CisgICAgICAgIChpc0lkZW50aWNhbCk6CisgICAgICAgIChvcGFxdWVBbGxUeXBlc1Nx
cnQpOgorICAgICAgICAodGVzdEFsbFR5cGVzQ2FsbCk6CisgICAgICAgICh0ZXN0U2luZ2xlVHlw
ZUNhbGwpOgorICAgICAgICAob3BhcXVlU3FydEZvclNpZGVFZmZlY3RzKToKKyAgICAgICAgKHRl
c3RTaWRlRWZmZWN0LmxldC50ZXN0T2JqZWN0LnZhbHVlT2YpOgorICAgICAgICAodGVzdFNpZGVF
ZmZlY3QpOgorICAgICAgICAob3BhcXVlU3FydEZvckNTRSk6CisgICAgICAgICh0ZXN0Q1NFLmxl
dC50ZXN0T2JqZWN0LnZhbHVlT2YpOgorICAgICAgICAodGVzdENTRSk6CisgICAgICAgICh0ZXN0
RXhjZXB0aW9uLm9wYXF1ZVNxcnRXaXRoRXhjZXB0aW9uKToKKyAgICAgICAgKHRlc3RFeGNlcHRp
b24pOgorCiAyMDE2LTA4LTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAg
ICAgICBTY29wZWRBcmd1bWVudHMgaXMgdXNpbmcgdGhlIHdyb25nIG93bmVyIG9iamVjdCBmb3Ig
YSB3cml0ZSBiYXJyaWVyLgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvYXJpdGgtc3FydC1v
bi12YXJpb3VzLXR5cGVzLmpzIGIvSlNUZXN0cy9zdHJlc3MvYXJpdGgtc3FydC1vbi12YXJpb3Vz
LXR5cGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAwNjBhMGE4ZTI4NmUwNzBmZDY5YzU2MjI2NGQ2ZTY2ZDBh
YWQ0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9hcml0aC1zcXJ0LW9uLXZh
cmlvdXMtdHlwZXMuanMKQEAgLTAsMCArMSwxNjIgQEAKKyJ1c2Ugc3RyaWN0IjsKKworbGV0IHZh
bGlkSW5wdXRUZXN0Q2FzZXMgPSBbCisgICAgLy8gaW5wdXQgYXMgc3RyaW5nLCBleHBlY3RlZCBy
ZXN1bHQgYXMgc3RyaW5nLgorICAgIFsidW5kZWZpbmVkIiwgIk5hTiJdLAorICAgIFsibnVsbCIs
ICIwIl0sCisgICAgWyIwIiwgIjAiXSwKKyAgICBbIi0wLiIsICItMC4iXSwKKyAgICBbIjQiLCAi
MiJdLAorICAgIFsiNDIuNSIsICI2LjUxOTIwMjQwNTIwMjY0OSJdLAorICAgIFsiSW5maW5pdHki
LCAiSW5maW5pdHkiXSwKKyAgICBbIi1JbmZpbml0eSIsICJOYU4iXSwKKyAgICBbIk5hTiIsICJO
YU4iXSwKKyAgICBbIlwiV2ViS2l0XCIiLCAiTmFOIl0sCisgICAgWyJcIjRcIiIsICIyIl0sCisg
ICAgWyJ7IHZhbHVlT2Y6ICgpID0+IHsgcmV0dXJuIDQ7IH0gfSIsICIyIl0sCitdOworCitsZXQg
dmFsaWRJbnB1dFR5cGVkVGVzdENhc2VzID0gdmFsaWRJbnB1dFRlc3RDYXNlcy5tYXAoKGVsZW1l
bnQpID0+IHsgcmV0dXJuIFtldmFsKCIoIiArIGVsZW1lbnRbMF0gKyAiKSIpLCBldmFsKGVsZW1l
bnRbMV0pXSB9KTsKKworZnVuY3Rpb24gaXNJZGVudGljYWwocmVzdWx0LCBleHBlY3RlZCkKK3sK
KyAgICBpZiAoZXhwZWN0ZWQgPT09IGV4cGVjdGVkKSB7CisgICAgICAgIGlmIChyZXN1bHQgIT09
IGV4cGVjdGVkKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoIWV4cGVj
dGVkICYmIDEgLyBleHBlY3RlZCA9PT0gLUluZmluaXR5ICYmIDEgLyByZXN1bHQgIT09IC1JbmZp
bml0eSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICB9CisgICAgcmV0dXJuIHJlc3VsdCAhPT0gcmVzdWx0OworfQorCisKKy8vIFRlc3QgTWF0
aC5zcXJ0KCkgd2l0aCBhIHZlcnkgcG9seW1vcnBoaWMgaW5wdXQuIEFsbCB0ZXN0IGNhc2VzIGFy
ZSBzZWVuIGF0IGVhY2ggaXRlcmF0aW9uLgorZnVuY3Rpb24gb3BhcXVlQWxsVHlwZXNTcXJ0KGFy
Z3VtZW50KSB7CisgICAgcmV0dXJuIE1hdGguc3FydChhcmd1bWVudCk7Cit9Citub0lubGluZShv
cGFxdWVBbGxUeXBlc1NxcnQpOworbm9PU1JFeGl0RnV6emluZyhvcGFxdWVBbGxUeXBlc1NxcnQp
OworCitmdW5jdGlvbiB0ZXN0QWxsVHlwZXNDYWxsKCkgeworICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWUzOyArK2kpIHsKKyAgICAgICAgZm9yIChsZXQgdGVzdENhc2VJbnB1dCBvZiB2YWxpZElu
cHV0VHlwZWRUZXN0Q2FzZXMpIHsKKyAgICAgICAgICAgIGxldCBvdXRwdXQgPSBvcGFxdWVBbGxU
eXBlc1NxcnQodGVzdENhc2VJbnB1dFswXSk7CisgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2Fs
KG91dHB1dCwgdGVzdENhc2VJbnB1dFsxXSkpCisgICAgICAgICAgICAgICAgdGhyb3cgIkZhaWxl
ZCB0ZXN0QWxsVHlwZXNDYWxsIGZvciBpbnB1dCAiICsgdGVzdENhc2VJbnB1dFswXSArICIgZXhw
ZWN0ZWQgIiArIHRlc3RDYXNlSW5wdXRbMV0gKyAiIGdvdCAiICsgb3V0cHV0OworICAgICAgICB9
CisgICAgfQorICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZUFsbFR5cGVzU3FydCkg
PiAyKQorICAgICAgICB0aHJvdyAiV2Ugc2hvdWxkIGhhdmUgZGV0ZWN0ZWQgc3FydCgpIHdhcyBw
b2x5bW9ycGhpYyBhbmQgZ2VuZXJhdGVkIGEgZ2VuZXJpYyB2ZXJzaW9uLiI7Cit9Cit0ZXN0QWxs
VHlwZXNDYWxsKCk7CisKKworLy8gVGVzdCBNYXRoLnNxcnQoKSBvbiBhIGNvbXBsZXRlbHkgdHlw
ZWQgaW5wdXQuIEV2ZXJ5IGNhbGwgc2VlIG9ubHkgb25lIHR5cGUuCitmdW5jdGlvbiB0ZXN0U2lu
Z2xlVHlwZUNhbGwoKSB7CisgICAgZm9yIChsZXQgdGVzdENhc2VJbnB1dCBvZiB2YWxpZElucHV0
VGVzdENhc2VzKSB7CisgICAgICAgIGV2YWwoYAorICAgICAgICAgICAgZnVuY3Rpb24gb3BhcXVl
U3FydChhcmd1bWVudCkgeworICAgICAgICAgICAgICAgIHJldHVybiBNYXRoLnNxcnQoYXJndW1l
bnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbm9JbmxpbmUob3BhcXVlU3FydCk7Cisg
ICAgICAgICAgICBub09TUkV4aXRGdXp6aW5nKG9wYXF1ZVNxcnQpOworCisgICAgICAgICAgICBm
b3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpc0lk
ZW50aWNhbChvcGFxdWVTcXJ0KCR7dGVzdENhc2VJbnB1dFswXX0pLCAke3Rlc3RDYXNlSW5wdXRb
MV19KSkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RTaW5nbGVUeXBl
Q2FsbCgpIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobnVtYmVyT2ZERkdDb21waWxlcyhvcGFxdWVTcXJ0KSA+IDEpCisgICAgICAgICAgICAgICAg
dGhyb3cgIldlIHNob3VsZCBoYXZlIGNvbXBpbGVkIGEgc2luZ2xlIHNxcnQgZm9yIHRoZSBleHBl
Y3RlZCB0eXBlLiI7CisgICAgICAgIGApOworICAgIH0KK30KK3Rlc3RTaW5nbGVUeXBlQ2FsbCgp
OworCisKKy8vIFZlcmlmeSB3ZSBjYWxsIHZhbHVlT2YoKSBleGFjdGx5IG9uY2UgcGVyIGNhbGwu
CitmdW5jdGlvbiBvcGFxdWVTcXJ0Rm9yU2lkZUVmZmVjdHMoYXJndW1lbnQpIHsKKyAgICByZXR1
cm4gTWF0aC5zcXJ0KGFyZ3VtZW50KTsKK30KK25vSW5saW5lKG9wYXF1ZVNxcnRGb3JTaWRlRWZm
ZWN0cyk7Citub09TUkV4aXRGdXp6aW5nKG9wYXF1ZVNxcnRGb3JTaWRlRWZmZWN0cyk7CisKK2Z1
bmN0aW9uIHRlc3RTaWRlRWZmZWN0KCkgeworICAgIGxldCB0ZXN0T2JqZWN0ID0geworICAgICAg
ICBjb3VudGVyOiAwLAorICAgICAgICB2YWx1ZU9mOiBmdW5jdGlvbigpIHsgKyt0aGlzLmNvdW50
ZXI7IHJldHVybiAxNjsgfQorICAgIH07CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTQ7ICsr
aSkgeworICAgICAgICBpZiAob3BhcXVlU3FydEZvclNpZGVFZmZlY3RzKHRlc3RPYmplY3QpICE9
PSA0KQorICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gdGVzdFNpZGVFZmZl
Y3QoKSI7CisgICAgfQorICAgIGlmICh0ZXN0T2JqZWN0LmNvdW50ZXIgIT09IDFlNCkKKyAgICAg
ICAgdGhyb3cgIkZhaWxlZCB0ZXN0U2lkZUVmZmVjdCgpIjsKKyAgICBpZiAobnVtYmVyT2ZERkdD
b21waWxlcyhvcGFxdWVTcXJ0Rm9yU2lkZUVmZmVjdHMpID4gMSkKKyAgICAgICAgdGhyb3cgIm9w
YXF1ZVNxcnRGb3JTaWRlRWZmZWN0cygpIGlzIHByZWRpY3RhYmxlLCBpdCBzaG91bGQgb25seSBi
ZSBjb21waWxlZCBvbmNlLiI7Cit9Cit0ZXN0U2lkZUVmZmVjdCgpOworCisKKy8vIFZlcmlmeSBT
UVJUIGlzIG5vdCBzdWJqZWN0IHRvIENTRSBpZiB0aGUgYXJndW1lbnQgaGFzIHNpZGUgZWZmZWN0
cy4KK2Z1bmN0aW9uIG9wYXF1ZVNxcnRGb3JDU0UoYXJndW1lbnQpIHsKKyAgICByZXR1cm4gTWF0
aC5zcXJ0KGFyZ3VtZW50KSArIE1hdGguc3FydChhcmd1bWVudCkgKyBNYXRoLnNxcnQoYXJndW1l
bnQpOworfQorbm9JbmxpbmUob3BhcXVlU3FydEZvckNTRSk7Citub09TUkV4aXRGdXp6aW5nKG9w
YXF1ZVNxcnRGb3JDU0UpOworCitmdW5jdGlvbiB0ZXN0Q1NFKCkgeworICAgIGxldCB0ZXN0T2Jq
ZWN0ID0geworICAgICAgICBjb3VudGVyOiAwLAorICAgICAgICB2YWx1ZU9mOiBmdW5jdGlvbigp
IHsgKyt0aGlzLmNvdW50ZXI7IHJldHVybiAxNjsgfQorICAgIH07CisgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICBpZiAob3BhcXVlU3FydEZvckNTRSh0ZXN0T2Jq
ZWN0KSAhPT0gMTIpCisgICAgICAgICAgICB0aHJvdyAiSW5jb3JyZWN0IHJlc3VsdCBpbiB0ZXN0
Q1NFKCkiOworICAgIH0KKyAgICBpZiAodGVzdE9iamVjdC5jb3VudGVyICE9PSAzZTQpCisgICAg
ICAgIHRocm93ICJGYWlsZWQgdGVzdENTRSgpIjsKKyAgICBpZiAobnVtYmVyT2ZERkdDb21waWxl
cyhvcGFxdWVTcXJ0Rm9yQ1NFKSA+IDEpCisgICAgICAgIHRocm93ICJvcGFxdWVTcXJ0Rm9yQ1NF
KCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIG9uY2UuIjsKK30K
K3Rlc3RDU0UoKTsKKworCisvLyBUZXN0IGV4Y2VwdGlvbnMgaW4gdGhlIGFyZ3VtZW50LgorZnVu
Y3Rpb24gdGVzdEV4Y2VwdGlvbigpIHsKKyAgICBsZXQgY291bnRlciA9IDA7CisgICAgZnVuY3Rp
b24gb3BhcXVlU3FydFdpdGhFeGNlcHRpb24oYXJndW1lbnQpIHsKKyAgICAgICAgbGV0IHJlc3Vs
dCA9IE1hdGguc3FydChhcmd1bWVudCk7CisgICAgICAgICsrY291bnRlcjsKKyAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICB9CisgICAgbm9JbmxpbmUob3BhcXVlU3FydFdpdGhFeGNlcHRpb24p
OworCisgICAgbGV0IHRlc3RPYmplY3QgPSB7IHZhbHVlT2Y6ICgpID0+IHsgIHJldHVybiA2NDsg
fSB9OworCisgICAgLy8gV2FybSB1cCB3aXRob3V0IGV4Y2VwdGlvbi4KKyAgICBmb3IgKGxldCBp
ID0gMDsgaSA8IDFlMzsgKytpKSB7CisgICAgICAgIGlmIChvcGFxdWVTcXJ0V2l0aEV4Y2VwdGlv
bih0ZXN0T2JqZWN0KSAhPT0gOCkKKyAgICAgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0
IGluIG9wYXF1ZVNxcnRXaXRoRXhjZXB0aW9uKCkiOworICAgIH0KKworICAgIGxldCB0ZXN0VGhy
b3dPYmplY3QgPSB7IHZhbHVlT2Y6ICgpID0+IHsgdGhyb3cgdGVzdE9iamVjdDsgcmV0dXJuIDY0
OyB9IH07CisKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlMjsgKytpKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgICBpZiAob3BhcXVlU3FydFdpdGhFeGNlcHRpb24odGVzdFRocm93T2Jq
ZWN0KSAhPT0gOCkKKyAgICAgICAgICAgICAgICB0aHJvdyAiVGhpcyBjb2RlIHNob3VsZCBub3Qg
YmUgcmVhY2hlZCEhIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKGUg
IT09IHRlc3RPYmplY3QpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyAiV3Jvbmcgb2JqZWN0IHRo
cm93biBmcm9tIG9wYXF1ZVNxcnRXaXRoRXhjZXB0aW9uLiIKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGlmIChjb3VudGVyICE9PSAxZTMpIHsKKyAgICAgICAgdGhyb3cg
IkludmFsaWQgY291bnQgaW4gdGVzdEV4Y2VwdGlvbigpIjsKKyAgICB9Cit9Cit0ZXN0RXhjZXB0
aW9uKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>286503</attachid>
            <date>2016-08-19 17:25:41 -0700</date>
            <delta_ts>2016-08-19 19:02:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160954-20160819172349.patch</filename>
            <type>text/plain</type>
            <size>29061</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA0NjUyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA2
MDVjZDI5YWI4ZjFhNTlhMmEyNGIyNzVkYzA2YzYwNGY4OTdmYTM5Li5kNTk1NmU5YTc5ODFkNmRm
MTI5ZDc3ZmY1ZWZjOGEzNTFkYTg0NTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MCBAQAorMjAxNi0wOC0xOSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBcml0aFNxcnQgc2hvdWxkIHdvcmsgd2l0aCBhbnkgYXJn
dW1lbnQgdHlwZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTYwOTU0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAg
UHJldmlzb3VseSwgQXJpdGhTcXJ0IHdvdWxkIGFsd2F5cyBPU1IgRXhpdCBpZiB0aGUgYXJndW1l
bnQKKyAgICAgICAgaXMgbm90IHR5cGVkIEludGVnZXIswqBEb3VibGUsIG9ywqBCb29sZWFuLgor
ICAgICAgICBTaW5jZSB3ZSBjYW4ndCByZWNvdmVyIGJ5IGdlbmVyYWxpemluZyB0byB0aG9zZSwg
d2UgY29udGludW91c2x5CisgICAgICAgIE9TUiBFeGl0IGFuZCByZWNvbXBpbGUgdGhlIHNhbWUg
Y29kZSBvdmVyIGFuZCBvdmVyIGFnYWluLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNl
cyBhIGZhbGxiYWNrIHRvIGhhbmRsZSB0aGUgcmVtYWluaW5nIHR5cGVzLgorCisgICAgICAgICog
ZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkRGRzo6
QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKToK
KyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpERkc6OmNsb2Ji
ZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdGaXh1cFBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorCisgICAgICAgICogZGZnL0RGR01heUV4aXQu
Y3BwOgorICAgICAgICBUaGlzIGlzIHNvbWV3aGF0IHVucmVsYXRlZC4gV2hpbGUgZGlzY3Vzc2lu
ZyB0aGUgZGVzaWduIG9mIHRoaXMKKyAgICAgICAgd2l0aCBGaWxpcCwgd2UgZGVjaWRlZCBub3Qg
dG8gdXNlIFRvTnVtYmVyK0FyaXRoU3FydCBkZXNwaXRlCisgICAgICAgIHRoZSBndWFyYW50ZWUg
dGhhdCBUb051bWJlciBkb2VzIG5vdCBPU1IgRXhpdC4KKyAgICAgICAgU2luY2UgaXQgZG9lcyBu
b3QgT1NSIEV4aXQsIHdlIHNob3VsZCBzYXkgc28gaW4gbWF5RXhpdEltcGwoKS4KKworICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdPcGVyYXRpb25zLmNwcDoK
KyAgICAgICAgKiBkZmcvREZHT3BlcmF0aW9ucy5oOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVB
cml0aFNxcnQpOgorICAgICAgICAqIGRmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oOgorICAgICAgICAo
SlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjYWxsT3BlcmF0aW9uKToKKyAgICAgICAgKiBmdGwv
RlRMTG93ZXJERkdUb0IzLmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpERkc6Okxvd2VyREZHVG9C
Mzo6Y29tcGlsZUFyaXRoU3FydCk6CisKIDIwMTYtMDgtMTkgIFBlciBBcm5lIFZvbGxhbiAgPHB2
b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXaW5dIFdhcm5pbmcgZml4LgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5s
aW5lcy5oCmluZGV4IGZjODQ0NmMwMWViMGVmNjVmNmIzZTVhODg2ZmE5NzBmMDc0OTJkMjcuLmE3
ZDcwMWFjMWRmYTQyMjBjOWE4NTdiMDgxMDk4YmVjNDc1NTkwNjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVz
LmgKQEAgLTk2MSw3ICs5NjEsMTAgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0
U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkKICAgICAgICAg
ICAgIHNldENvbnN0YW50KG5vZGUsIGpzRG91YmxlTnVtYmVyKHNxcnQoY2hpbGQuYXNOdW1iZXIo
KSkpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIGZvck5vZGUobm9k
ZSkuc2V0VHlwZSh0eXBlT2ZEb3VibGVVbmFyeU9wKGZvck5vZGUobm9kZS0+Y2hpbGQxKCkpLm1f
dHlwZSkpOworICAgICAgICBTcGVjdWxhdGVkVHlwZSBzcXJ0VHlwZSA9IFNwZWNGdWxsTnVtYmVy
OworICAgICAgICBpZiAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpID09IERvdWJsZVJlcFVzZSkK
KyAgICAgICAgICAgIHNxcnRUeXBlID0gdHlwZU9mRG91YmxlVW5hcnlPcChmb3JOb2RlKG5vZGUt
PmNoaWxkMSgpKS5tX3R5cGUpOworICAgICAgICBmb3JOb2RlKG5vZGUpLnNldFR5cGUoc3FydFR5
cGUpOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGM4OTk0MDBlY2VkZWM0Yzk0YjU0
NTJlYzBjNTAxY2ZkNjIwMjkyOGEuLjM2ODhkOWI1MDAyZDkzOTkxNzA1YzFhMjI3Y2I2YjcyMmJm
MDRkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0
aWVzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5j
cHAKQEAgLTkxLDYgKzkxLDEwIEBAIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVj
dChDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICByZXR1cm4gY29kZUJsb2NrLT5pbnN0cnVjdGlv
bkNvdW50KCkgPD0gT3B0aW9uczo6bWF4aW11bUZ1bmN0aW9uRm9yQ29uc3RydWN0SW5saW5lQ2Fu
ZGlkYXRlSW5zdHJ1Y3Rpb25Db3VudCgpCiAgICAgICAgICYmIGlzU3VwcG9ydGVkRm9ySW5saW5p
bmcoY29kZUJsb2NrKTsKIH0KK2Jvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2NrKiBj
b2RlQmxvY2spCit7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxl
KCktPmNhblVzZU9TUkV4aXRGdXp6aW5nKCk7Cit9CiAKIGlubGluZSB2b2lkIGRlYnVnRmFpbChD
b2RlQmxvY2sqIGNvZGVCbG9jaywgT3Bjb2RlSUQgb3Bjb2RlSUQsIENhcGFiaWxpdHlMZXZlbCBy
ZXN1bHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFi
aWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMuaApp
bmRleCA0MDEwYmIyOTFkZDMyYjJjYjE3ZjdhYWQ3OTQzNDc2ZDExODBhZWEwLi4wNDkzOGJmYjNi
ZDhiODg3NjZjMDljN2M3MjUxOGUwNDQ0MGFiMWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0NhcGFiaWxpdGllcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmgKQEAgLTQ3LDYgKzQ3LDcgQEAgYm9vbCBtaWdodENvbXBp
bGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKTsKIGJvb2wgbWlnaHRJbmxpbmVGdW5j
dGlvbkZvckNhbGwoQ29kZUJsb2NrKik7CiBib29sIG1pZ2h0SW5saW5lRnVuY3Rpb25Gb3JDbG9z
dXJlQ2FsbChDb2RlQmxvY2sqKTsKIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVj
dChDb2RlQmxvY2sqKTsKK2Jvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJsb2NrKik7CiAK
IGlubGluZSBDYXBhYmlsaXR5TGV2ZWwgY2FwYWJpbGl0eUxldmVsKE9wY29kZUlEIG9wY29kZUlE
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSW5zdHJ1Y3Rpb24qIHBjKTsKIApAQCAtNTksNiArNjAs
NyBAQCBpbmxpbmUgYm9vbCBtaWdodENvbXBpbGVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxv
Y2sqKSB7IHJldHVybiBmYWxzZTsgfQogaW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZv
ckNhbGwoQ29kZUJsb2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIGlubGluZSBib29sIG1pZ2h0SW5s
aW5lRnVuY3Rpb25Gb3JDbG9zdXJlQ2FsbChDb2RlQmxvY2sqKSB7IHJldHVybiBmYWxzZTsgfQog
aW5saW5lIGJvb2wgbWlnaHRJbmxpbmVGdW5jdGlvbkZvckNvbnN0cnVjdChDb2RlQmxvY2sqKSB7
IHJldHVybiBmYWxzZTsgfQoraW5saW5lIGJvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoQ29kZUJs
b2NrKikgeyByZXR1cm4gZmFsc2U7IH0KIAogaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmls
aXR5TGV2ZWwoT3Bjb2RlSUQsIENvZGVCbG9jayosIEluc3RydWN0aW9uKikgeyByZXR1cm4gQ2Fu
bm90Q29tcGlsZTsgfQogaW5saW5lIENhcGFiaWxpdHlMZXZlbCBjYXBhYmlsaXR5TGV2ZWwoQ29k
ZUJsb2NrKikgeyByZXR1cm4gQ2Fubm90Q29tcGlsZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCBjMmE4MmRiZDExZDZmZjZlZjIxNWIxNGJhOTc4OWI3
MDcxNDhjZTFmLi5hYzM1NmY4NDQ2NjBjMWJjYzQ2MjJiMTRjY2E5MGQzODU4ZGQ0OTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApAQCAtMTU0LDcgKzE1NCw2
IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIGNvbnN0IFJlYWRG
dW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgY2FzZSBBcml0aE1pbjoKICAgICBjYXNl
IEFyaXRoTWF4OgogICAgIGNhc2UgQXJpdGhQb3c6Ci0gICAgY2FzZSBBcml0aFNxcnQ6CiAgICAg
Y2FzZSBBcml0aEZSb3VuZDoKICAgICBjYXNlIEFyaXRoU2luOgogICAgIGNhc2UgQXJpdGhDb3M6
CkBAIC0xOTAsNiArMTg5LDE1IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRl
ZihQdXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAKKyAgICBjYXNlIEFyaXRoU3Fy
dDoKKyAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2Up
CisgICAgICAgICAgICBkZWYoUHVyZVZhbHVlKG5vZGUpKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICByZWFkKFdvcmxkKTsKKyAgICAgICAgICAgIHdyaXRlKEhlYXApOworICAgICAgICB9
CisgICAgICAgIHJldHVybjsKKwogICAgIGNhc2UgQml0QW5kOgogICAgIGNhc2UgQml0T3I6CiAg
ICAgY2FzZSBCaXRYb3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0ZpeHVwUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNl
LmNwcAppbmRleCAyNmU1Y2I1MmNiOWYzYzYxOWFmZjNmMWNjYzgzNjdiZThmN2ExZjdkLi4zYmIx
NTZiNjIzMzY2OThlMTE2YTA5MzJjZmMyMjU2ZGEzNGEwMzViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKQEAgLTM4Niw3ICszODYsMTQgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAg
Y2FzZSBBcml0aFNxcnQ6CisgICAgICAgIGNhc2UgQXJpdGhTcXJ0OiB7CisgICAgICAgICAgICBF
ZGdlJiBjaGlsZDEgPSBub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgICAgIGlmIChjaGlsZDEtPnNo
b3VsZFNwZWN1bGF0ZU51bWJlck9yQm9vbGVhbigpKQorICAgICAgICAgICAgICAgIGZpeERvdWJs
ZU9yQm9vbGVhbkVkZ2UoY2hpbGQxKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICBmaXhFZGdlPFVudHlwZWRVc2U+KGNoaWxkMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgfQogICAgICAgICBjYXNlIEFyaXRoRlJvdW5kOgogICAgICAgICBjYXNlIEFyaXRoU2luOgog
ICAgICAgICBjYXNlIEFyaXRoQ29zOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdNYXlFeGl0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTWF5RXhp
dC5jcHAKaW5kZXggNDNiZGMzNjkyMzMxMWUzM2QwN2I3MmNlZGQ2ZWEyNmIxMzYzOTI0MS4uNjhk
ZjBhYWVjODkzOWVkZGVjM2M1MTAxYTUxYjhhOGEyODUyMzFhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdNYXlFeGl0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR01heUV4aXQuY3BwCkBAIC0xMDAsMTIgKzEwMCwxMyBAQCBFeGl0TW9kZSBt
YXlFeGl0SW1wbChHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUsIFN0YXRlVHlwZSYgc3RhdGUpCiAg
ICAgY2FzZSBDb25zdHJ1Y3RWYXJhcmdzOgogICAgIGNhc2UgQ2FsbEZvcndhcmRWYXJhcmdzOgog
ICAgIGNhc2UgQ29uc3RydWN0Rm9yd2FyZFZhcmFyZ3M6CisgICAgY2FzZSBDcmVhdGVBY3RpdmF0
aW9uOgogICAgIGNhc2UgTWF0ZXJpYWxpemVDcmVhdGVBY3RpdmF0aW9uOgogICAgIGNhc2UgTWF0
ZXJpYWxpemVOZXdPYmplY3Q6CiAgICAgY2FzZSBOZXdGdW5jdGlvbjoKICAgICBjYXNlIE5ld0dl
bmVyYXRvckZ1bmN0aW9uOgogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OgotICAgIGNhc2UgQ3Jl
YXRlQWN0aXZhdGlvbjoKKyAgICBjYXNlIFRvTnVtYmVyOgogICAgICAgICByZXN1bHQgPSBFeGl0
c0ZvckV4Y2VwdGlvbnM7CiAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR05vZGVUeXBlLmgKaW5kZXggNjdkNDllZTFlYWY1MTFmMWY0NzgzOTg4MzY5YTJmMjVhZTkz
NmU0Yi4uMmYyZmY3ZGY0ZTNhMmYzZTM1NjE3NDhhYjU5Mzk4NzM1MzYzOGJiMSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaApAQCAtMTU5LDcgKzE1OSw3IEBAIG5hbWVz
cGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKICAgICBtYWNybyhBcml0aEZsb29yLCBOb2RlUmVz
dWx0TnVtYmVyKSBcCiAgICAgbWFjcm8oQXJpdGhDZWlsLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAg
ICAgbWFjcm8oQXJpdGhUcnVuYywgTm9kZVJlc3VsdE51bWJlcikgXAotICAgIG1hY3JvKEFyaXRo
U3FydCwgTm9kZVJlc3VsdE51bWJlcikgXAorICAgIG1hY3JvKEFyaXRoU3FydCwgTm9kZVJlc3Vs
dERvdWJsZSkgXAogICAgIG1hY3JvKEFyaXRoU2luLCBOb2RlUmVzdWx0TnVtYmVyKSBcCiAgICAg
bWFjcm8oQXJpdGhDb3MsIE5vZGVSZXN1bHROdW1iZXIpIFwKICAgICBtYWNybyhBcml0aExvZywg
Tm9kZVJlc3VsdE51bWJlcikgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdPU1JFeGl0RnV6ei5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPU1JFeGl0
RnV6ei5oCmluZGV4IDgxMjFmMWMzZTNiZDA1MGIzMzEzZTVhNzZkYzRmZTIyNDEwNzljMTEuLjI2
YzA1NTM0ODcxMTcxMWZkNzk1MGM5YzQ5ZmViZjcwZTEwNmI3ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT1NSRXhpdEZ1enouaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkV4aXRGdXp6LmgKQEAgLTM0LDkgKzM0LDggQEAgZXh0ZXJuIHVu
c2lnbmVkIGdfbnVtYmVyT2ZTdGF0aWNPU1JFeGl0RnV6ekNoZWNrczsKIAogaW5saW5lIGJvb2wg
ZG9PU1JFeGl0RnV6emluZygpCiB7Ci0gICAgaWYgKCFPcHRpb25zOjp1c2VPU1JFeGl0RnV6eigp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCisgICAgQVNTRVJUKE9wdGlvbnM6OnVzZU9T
UkV4aXRGdXp6KCkpOworCiAgICAgZ19udW1iZXJPZlN0YXRpY09TUkV4aXRGdXp6Q2hlY2tzKys7
CiAgICAgaWYgKHVuc2lnbmVkIGF0U3RhdGljID0gT3B0aW9uczo6ZmlyZU9TUkV4aXRGdXp6QXRT
dGF0aWMoKSkKICAgICAgICAgcmV0dXJuIGF0U3RhdGljID09IGdfbnVtYmVyT2ZTdGF0aWNPU1JF
eGl0RnV6ekNoZWNrczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMu
Y3BwCmluZGV4IDY3NmNhMjY5OTE2MWIwYzczZTJiYjgyOTQ4ODNkMGI2NzYyZTc3MTguLjVkOTAw
Mzk3NDIzNmViOTExNjlkMjEyODZlZGMwYzcxNTJlZDg1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmNwcApAQCAtMzIyLDYgKzMyMiwxOCBAQCBFbmNvZGVk
SlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlRGl2KEV4ZWNTdGF0ZSogZXhlYywg
RW5jb2RlZEpTVmFsdWUgZQogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoYSAv
IGIpKTsKIH0KIAorZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhTcXJ0KEV4ZWNT
dGF0ZSogZXhlYywgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSkKK3sKKyAgICBWTSogdm0gPSAm
ZXhlYy0+dm0oKTsKKyAgICBOYXRpdmVDYWxsRnJhbWVUcmFjZXIgdHJhY2VyKHZtLCBleGVjKTsK
KworICAgIEpTVmFsdWUgb3AxID0gSlNWYWx1ZTo6ZGVjb2RlKGVuY29kZWRPcDEpOworICAgIGRv
dWJsZSBhID0gb3AxLnRvTnVtYmVyKGV4ZWMpOworICAgIGlmIChVTkxJS0VMWSh2bS0+ZXhjZXB0
aW9uKCkpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CisgICAg
cmV0dXJuIHNxcnQoYSk7Cit9CisKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEVuY29kZWRKU1ZhbHVl
IGdldEJ5VmFsKEV4ZWNTdGF0ZSogZXhlYywgSlNDZWxsKiBiYXNlLCB1aW50MzJfdCBpbmRleCkK
IHsKICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdPcGVyYXRpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R09wZXJhdGlvbnMuaAppbmRleCA3N2NkOGVhN2RkZjk0ZjRlZmI2ODIwZDk3NjBhZDI5Mzc2ZjFi
ZjIyLi45MDRlYzBhZjkzYzg3N2U3ZGIyMWJkMWE1NWUyZWJlZTZlMTA3NTM3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09wZXJhdGlvbnMuaApAQCAtNTMsNiArNTMsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQml0UlNoaWZ0KEV4ZWNTdGF0
ZSosIEVuY29kZWRKU1ZhbHVlCiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9wZXJhdGlv
blZhbHVlQml0VVJTaGlmdChFeGVjU3RhdGUqLCBFbmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AxLCBF
bmNvZGVkSlNWYWx1ZSBlbmNvZGVkT3AyKSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBK
SVRfT1BFUkFUSU9OIG9wZXJhdGlvblZhbHVlQWRkTm90TnVtYmVyKEV4ZWNTdGF0ZSosIEVuY29k
ZWRKU1ZhbHVlIGVuY29kZWRPcDEsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDIpIFdURl9JTlRF
Uk5BTDsKIEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uVmFsdWVEaXYoRXhl
Y1N0YXRlKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZE9wMSwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZE9wMikgV1RGX0lOVEVSTkFMOworZG91YmxlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uQXJpdGhT
cXJ0KEV4ZWNTdGF0ZSosIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRPcDEpIFdURl9JTlRFUk5BTDsK
IEVuY29kZWRKU1ZhbHVlIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uR2V0QnlWYWwoRXhlY1N0YXRl
KiwgRW5jb2RlZEpTVmFsdWUgZW5jb2RlZEJhc2UsIEVuY29kZWRKU1ZhbHVlIGVuY29kZWRQcm9w
ZXJ0eSkgV1RGX0lOVEVSTkFMOwogRW5jb2RlZEpTVmFsdWUgSklUX09QRVJBVElPTiBvcGVyYXRp
b25HZXRCeVZhbENlbGwoRXhlY1N0YXRlKiwgSlNDZWxsKiwgRW5jb2RlZEpTVmFsdWUgZW5jb2Rl
ZFByb3BlcnR5KSBXVEZfSU5URVJOQUw7CiBFbmNvZGVkSlNWYWx1ZSBKSVRfT1BFUkFUSU9OIG9w
ZXJhdGlvbkdldEJ5VmFsQXJyYXlJbnQoRXhlY1N0YXRlKiwgSlNBcnJheSosIGludDMyX3QpIFdU
Rl9JTlRFUk5BTDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2
ZUpJVC5jcHAKaW5kZXggNzZiNTU2NzczNTA3NzNiNzc4YTk2MTg1MTY2MTJiMWMxOTc0MmMyNi4u
M2QxMWMxZTcxZDBlNTNiMjQwMzc5ZmM0ZDFlZGNjNDAzYmMxMmEwOSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTMzLDYgKzMzLDcg
QEAKICNpbmNsdWRlICJERkdBcnJheWlmeVNsb3dQYXRoR2VuZXJhdG9yLmgiCiAjaW5jbHVkZSAi
REZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCIKICNpbmNsdWRlICJERkdD
YWxsQ3JlYXRlRGlyZWN0QXJndW1lbnRzU2xvd1BhdGhHZW5lcmF0b3IuaCIKKyNpbmNsdWRlICJE
RkdDYXBhYmlsaXRpZXMuaCIKICNpbmNsdWRlICJERkdNYXlFeGl0LmgiCiAjaW5jbHVkZSAiREZH
T1NSRXhpdEZ1enouaCIKICNpbmNsdWRlICJERkdTYW5lU3RyaW5nR2V0QnlWYWxTbG93UGF0aEdl
bmVyYXRvci5oIgpAQCAtMTkzLDcgKzE5NCw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmVtaXRH
ZXRBcmd1bWVudFN0YXJ0KENvZGVPcmlnaW4gb3JpZ2luLCBHUFJSZWcgc3RhcnRHUFIpCiAKIE1h
Y3JvQXNzZW1ibGVyOjpKdW1wIFNwZWN1bGF0aXZlSklUOjplbWl0T1NSRXhpdEZ1enpDaGVjaygp
CiB7Ci0gICAgaWYgKCFkb09TUkV4aXRGdXp6aW5nKCkpCisgICAgaWYgKCFPcHRpb25zOjp1c2VP
U1JFeGl0RnV6eigpCisgICAgICAgIHx8ICFjYW5Vc2VPU1JFeGl0RnV6emluZyhtX2ppdC5ncmFw
aCgpLmJhc2VsaW5lQ29kZUJsb2NrRm9yKG1fb3JpZ2luLnNlbWFudGljKSkKKyAgICAgICAgfHwg
IWRvT1NSRXhpdEZ1enppbmcoKSkKICAgICAgICAgcmV0dXJuIE1hY3JvQXNzZW1ibGVyOjpKdW1w
KCk7CiAgICAgCiAgICAgTWFjcm9Bc3NlbWJsZXI6Okp1bXAgcmVzdWx0OwpAQCAtNDg4NywxOSAr
NDg5MCwzMCBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhSb3VuZGluZyhOb2Rl
KiBub2RlKQogCiB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlQXJpdGhTcXJ0KE5vZGUqIG5v
ZGUpCiB7Ci0gICAgU3BlY3VsYXRlRG91YmxlT3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOwotICAgIEZQUlJlZyBvcDFGUFIgPSBvcDEuZnByKCk7CisgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKKyAgICAgICAgU3BlY3VsYXRlRG91Ymxl
T3BlcmFuZCBvcDEodGhpcywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICBGUFJSZWcgb3AxRlBS
ID0gb3AxLmZwcigpOwogCi0gICAgaWYgKCFNYWNyb0Fzc2VtYmxlcjo6c3VwcG9ydHNGbG9hdGlu
Z1BvaW50U3FydCgpIHx8ICFPcHRpb25zOjp1c2VBcmNoaXRlY3R1cmVTcGVjaWZpY09wdGltaXph
dGlvbnMoKSkgewotICAgICAgICBmbHVzaFJlZ2lzdGVycygpOwotICAgICAgICBGUFJSZXN1bHQg
cmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsT3BlcmF0aW9uKHNxcnQsIHJlc3VsdC5mcHIoKSwg
b3AxRlBSKTsKLSAgICAgICAgZG91YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7Ci0gICAg
fSBlbHNlIHsKLSAgICAgICAgRlBSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBvcDEpOwotICAgICAg
ICBtX2ppdC5zcXJ0RG91YmxlKG9wMS5mcHIoKSwgcmVzdWx0LmZwcigpKTsKLSAgICAgICAgZG91
YmxlUmVzdWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIGlmICghTWFjcm9Bc3NlbWJs
ZXI6OnN1cHBvcnRzRmxvYXRpbmdQb2ludFNxcnQoKSB8fCAhT3B0aW9uczo6dXNlQXJjaGl0ZWN0
dXJlU3BlY2lmaWNPcHRpbWl6YXRpb25zKCkpIHsKKyAgICAgICAgICAgIGZsdXNoUmVnaXN0ZXJz
KCk7CisgICAgICAgICAgICBGUFJSZXN1bHQgcmVzdWx0KHRoaXMpOworICAgICAgICAgICAgY2Fs
bE9wZXJhdGlvbihzcXJ0LCByZXN1bHQuZnByKCksIG9wMUZQUik7CisgICAgICAgICAgICBkb3Vi
bGVSZXN1bHQocmVzdWx0LmZwcigpLCBub2RlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIEZQUlRlbXBvcmFyeSByZXN1bHQodGhpcywgb3AxKTsKKyAgICAgICAgICAgIG1faml0LnNx
cnREb3VibGUob3AxLmZwcigpLCByZXN1bHQuZnByKCkpOworICAgICAgICAgICAgZG91YmxlUmVz
dWx0KHJlc3VsdC5mcHIoKSwgbm9kZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOwogICAg
IH0KKworICAgIEpTVmFsdWVPcGVyYW5kIG9wMSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAg
SlNWYWx1ZVJlZ3Mgb3AxUmVncyA9IG9wMS5qc1ZhbHVlUmVncygpOworICAgIGZsdXNoUmVnaXN0
ZXJzKCk7CisgICAgRlBSUmVzdWx0IHJlc3VsdCh0aGlzKTsKKyAgICBjYWxsT3BlcmF0aW9uKG9w
ZXJhdGlvbkFyaXRoU3FydCwgcmVzdWx0LmZwcigpLCBvcDFSZWdzKTsKKyAgICBtX2ppdC5leGNl
cHRpb25DaGVjaygpOworICAgIGRvdWJsZVJlc3VsdChyZXN1bHQuZnByKCksIG5vZGUpOwogfQog
CiAvLyBGb3Igc21hbGwgcG9zaXRpdmUgaW50ZWdlcnMgLCBpdCBpcyB3b3J0aCBkb2luZyBhIHRp
bnkgaW5saW5lIGxvb3AgdG8gZXhwb25lbnRpYXRlIHRoZSBiYXNlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5oCmluZGV4IDQ3ZDE4YzVlNTIzODY4Njgx
MDQ5ODEzMGY2OTI2YTRlYWFlOWM2ZGYuLmE0MGE2Njk5ZjdlZjgzNDJiZWYzZDM0Y2I5NDEzZTJi
MTg1NDE5N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3Vs
YXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZl
SklULmgKQEAgLTE3MTIsNiArMTcxMiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIG1faml0LnNldHVw
QXJndW1lbnRzV2l0aEV4ZWNTdGF0ZShyZWdPcDEsIFRydXN0ZWRJbW1QdHIoaWRlbnRPcDIpLCBU
cnVzdGVkSW1tMzIob3AzKSwgcmVnT3A0LCByZWdPcDUpOwogICAgICAgICByZXR1cm4gYXBwZW5k
Q2FsbChvcGVyYXRpb24pOwogICAgIH0KKyAgICBKSVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0
aW9uKERfSklUT3BlcmF0aW9uX0VKIG9wZXJhdGlvbiwgRlBSUmVnIHJlc3VsdCwgSlNWYWx1ZVJl
Z3MgYXJnMSkKKyAgICB7CisgICAgICAgIG1faml0LnNldHVwQXJndW1lbnRzV2l0aEV4ZWNTdGF0
ZShhcmcxLmdwcigpKTsKKyAgICAgICAgcmV0dXJuIGFwcGVuZENhbGxTZXRSZXN1bHQob3BlcmF0
aW9uLCByZXN1bHQpOworICAgIH0KICNlbHNlIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAKICAgICBK
SVRDb21waWxlcjo6Q2FsbCBjYWxsT3BlcmF0aW9uKEpfSklUT3BlcmF0aW9uX0VKSk1pYyBvcGVy
YXRpb24sIEpTVmFsdWVSZWdzIHJlc3VsdCwgSlNWYWx1ZVJlZ3MgYXJnMSwgSlNWYWx1ZVJlZ3Mg
YXJnMiwgVHJ1c3RlZEltbVB0ciBtYXRoSUMpCkBAIC0yMTM4LDYgKzIxNDMsMTEgQEAgcHVibGlj
OgogICAgICAgICBtX2ppdC5zZXR1cEFyZ3VtZW50c1dpdGhFeGVjU3RhdGUoYXJnMSwgVHJ1c3Rl
ZEltbVB0cihpZGVudE9wMiksIFRydXN0ZWRJbW0zMihvcDMpLCBhcmc0LCBhcmc1KTsKICAgICAg
ICAgcmV0dXJuIGFwcGVuZENhbGwob3BlcmF0aW9uKTsKICAgICB9CisgICAgSklUQ29tcGlsZXI6
OkNhbGwgY2FsbE9wZXJhdGlvbihEX0pJVE9wZXJhdGlvbl9FSiBvcGVyYXRpb24sIEZQUlJlZyBy
ZXN1bHQsIEpTVmFsdWVSZWdzIGFyZzEpCisgICAgeworICAgICAgICBtX2ppdC5zZXR1cEFyZ3Vt
ZW50c1dpdGhFeGVjU3RhdGUoRUFCSV8zMkJJVF9EVU1NWV9BUkcgYXJnMS5wYXlsb2FkR1BSKCks
IGFyZzEudGFnR1BSKCkpOworICAgICAgICByZXR1cm4gYXBwZW5kQ2FsbFNldFJlc3VsdChvcGVy
YXRpb24sIHJlc3VsdCk7CisgICAgfQogI2VuZGlmIC8vIFVTRShKU1ZBTFVFMzJfNjQpCiAgICAg
CiAjaWYgIWRlZmluZWQoTkRFQlVHKSAmJiAhQ1BVKEFSTSkgJiYgIUNQVShNSVBTKSAmJiAhQ1BV
KFNINCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApp
bmRleCA0ODk2ZTZkNmQ4MzU5NzU1MWIxMjFlMDQyMDFhYjM2MTBkNDY5MDU5Li5lZGZiMmY4MDBl
NzhlMjY3MTRlOWE5MjgxOGE0NDE5ZDE4OWRkNjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCkBAIC0zOCw2ICszOCw3IEBACiAjaW5jbHVkZSAi
Q2FsbEZyYW1lU2h1ZmZsZXIuaCIKICNpbmNsdWRlICJDb2RlQmxvY2tXaXRoSklUVHlwZS5oIgog
I2luY2x1ZGUgIkRGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgiCisjaW5jbHVkZSAiREZH
Q2FwYWJpbGl0aWVzLmgiCiAjaW5jbHVkZSAiREZHRG9taW5hdG9ycy5oIgogI2luY2x1ZGUgIkRG
R0luUGxhY2VBYnN0cmFjdFN0YXRlLmgiCiAjaW5jbHVkZSAiREZHT1NSQXZhaWxhYmlsaXR5QW5h
bHlzaXNQaGFzZS5oIgpAQCAtMjI3Miw3ICsyMjczLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAg
ICBzZXREb3VibGUocmVzdWx0KTsKICAgICB9CiAKLSAgICB2b2lkIGNvbXBpbGVBcml0aFNxcnQo
KSB7IHNldERvdWJsZShtX291dC5kb3VibGVTcXJ0KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSkpOyB9CisgICAgdm9pZCBjb21waWxlQXJpdGhTcXJ0KCkKKyAgICB7CisgICAgICAgIGlmICht
X25vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSA9PSBEb3VibGVSZXBVc2UpIHsKKyAgICAgICAgICAg
IHNldERvdWJsZShtX291dC5kb3VibGVTcXJ0KGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSkp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIExWYWx1ZSBhcmd1bWVu
dCA9IGxvd0pTVmFsdWUobV9ub2RlLT5jaGlsZDEoKSk7CisgICAgICAgIExWYWx1ZSByZXN1bHQg
PSB2bUNhbGwoRG91YmxlLCBtX291dC5vcGVyYXRpb24ob3BlcmF0aW9uQXJpdGhTcXJ0KSwgbV9j
YWxsRnJhbWUsIGFyZ3VtZW50KTsKKyAgICAgICAgc2V0RG91YmxlKHJlc3VsdCk7CisgICAgfQog
CiAgICAgdm9pZCBjb21waWxlQXJpdGhMb2coKSB7IHNldERvdWJsZShtX291dC5kb3VibGVMb2co
bG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkpKSk7IH0KICAgICAKQEAgLTExMDU4LDggKzExMDY4
LDExIEBAIHByaXZhdGU6CiAgICAgICAgIH0KIAogICAgICAgICBERkdfQVNTRVJUKG1fZ3JhcGgs
IG1fbm9kZSwgb3JpZ2luLmV4aXRPSyk7Ci0gICAgICAgIAotICAgICAgICBpZiAoZG9PU1JFeGl0
RnV6emluZygpICYmICFpc0V4Y2VwdGlvbkhhbmRsZXIpIHsKKworICAgICAgICBpZiAoIWlzRXhj
ZXB0aW9uSGFuZGxlcgorICAgICAgICAgICAgJiYgT3B0aW9uczo6dXNlT1NSRXhpdEZ1enooKQor
ICAgICAgICAgICAgJiYgY2FuVXNlT1NSRXhpdEZ1enppbmcobV9ncmFwaC5iYXNlbGluZUNvZGVC
bG9ja0ZvcihtX25vZGUtPm9yaWdpbi5zZW1hbnRpYykpCisgICAgICAgICAgICAmJiBkb09TUkV4
aXRGdXp6aW5nKCkpIHsKICAgICAgICAgICAgIExWYWx1ZSBudW1iZXJPZkZ1enpDaGVja3MgPSBt
X291dC5hZGQoCiAgICAgICAgICAgICAgICAgbV9vdXQubG9hZDMyKG1fb3V0LmFic29sdXRlKCZn
X251bWJlck9mT1NSRXhpdEZ1enpDaGVja3MpKSwKICAgICAgICAgICAgICAgICBtX291dC5pbnQz
Mk9uZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDgwYWEyYTc2Y2Q1YThkM2ZkMzQzYmFmYTk2
YzhmNWM1Yzg4Zjg2MmYuLmI4ZWIxNThjYjA5ZjZlYmI3ZWYyOWIwODVkYzhlNTIyOTFiNTI1M2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC01OTgsNiArNTk4LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25QcmVjaXNlVGltZShFeGVjU3RhdGUqKTsKIHN0
YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTmV2ZXJJbmxpbmVGdW5j
dGlvbihFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uTm9ERkcoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvbk5vRlRMKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25Ob09TUkV4aXRGdXp6aW5nKEV4ZWNTdGF0ZSopOwogc3RhdGlj
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25PcHRpbWl6ZU5leHRJbnZvY2F0
aW9uKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25OdW1iZXJPZkRGR0NvbXBpbGVzKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SZW9wdGltaXphdGlvblJldHJ5Q291bnQoRXhlY1N0
YXRlKik7CkBAIC03OTUsNiArNzk2LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlv
bih2bSwgIm5vSW5saW5lIiwgZnVuY3Rpb25OZXZlcklubGluZUZ1bmN0aW9uLCAxKTsKICAgICAg
ICAgYWRkRnVuY3Rpb24odm0sICJub0RGRyIsIGZ1bmN0aW9uTm9ERkcsIDEpOwogICAgICAgICBh
ZGRGdW5jdGlvbih2bSwgIm5vRlRMIiwgZnVuY3Rpb25Ob0ZUTCwgMSk7CisgICAgICAgIGFkZEZ1
bmN0aW9uKHZtLCAibm9PU1JFeGl0RnV6emluZyIsIGZ1bmN0aW9uTm9PU1JFeGl0RnV6emluZywg
MSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibnVtYmVyT2ZERkdDb21waWxlcyIsIGZ1bmN0
aW9uTnVtYmVyT2ZERkdDb21waWxlcywgMSk7CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAib3B0
aW1pemVOZXh0SW52b2NhdGlvbiIsIGZ1bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbiwgMSk7
CiAgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAicmVvcHRpbWl6YXRpb25SZXRyeUNvdW50IiwgZnVu
Y3Rpb25SZW9wdGltaXphdGlvblJldHJ5Q291bnQsIDEpOwpAQCAtMTU4MCw2ICsxNTgyLDExIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25Ob0ZUTChFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KIAorRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5vT1NSRXhpdEZ1enppbmcoRXhlY1N0
YXRlKiBleGVjKQoreworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoc2V0Q2Fubm90VXNlT1NS
RXhpdEZ1enppbmcoZXhlYykpOworfQorCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1
bmN0aW9uT3B0aW1pemVOZXh0SW52b2NhdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShvcHRpbWl6ZU5leHRJbnZvY2F0aW9uKGV4ZWMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5jcHAKaW5kZXggNGM5NDQ5ZGY0
MDIzOTE1MTFjZDRlMzVmZDhmYzM4NDVjZjI3YzMxNC4uNTg5ZWE1OTM0MTIwOWRkMzVhYjBhZDY4
MjJiMzEyNzBlNDUwZWY5NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvRXhlY3V0YWJsZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhl
Y3V0YWJsZS5jcHAKQEAgLTE0Niw2ICsxNDYsNyBAQCBTY3JpcHRFeGVjdXRhYmxlOjpTY3JpcHRF
eGVjdXRhYmxlKFN0cnVjdHVyZSogc3RydWN0dXJlLCBWTSYgdm0sIGNvbnN0IFNvdXJjZUNvZAog
ICAgICwgbV9uZXZlck9wdGltaXplKGZhbHNlKQogICAgICwgbV9uZXZlckZUTE9wdGltaXplKGZh
bHNlKQogICAgICwgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0KGlzSW5BcnJvd0Z1bmN0aW9uQ29u
dGV4dCkKKyAgICAsIG1fY2FuVXNlT1NSRXhpdEZ1enppbmcodHJ1ZSkKICAgICAsIG1fZGVyaXZl
ZENvbnRleHRUeXBlKHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZXJpdmVkQ29udGV4dFR5cGUpKQog
ICAgICwgbV9ldmFsQ29udGV4dFR5cGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV2YWxDb250ZXh0
VHlwZSkpCiAgICAgLCBtX292ZXJyaWRlTGluZU51bWJlcigtMSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAppbmRleCAyZDAwOTE5Y2Q4MWNhNTQ3MWU2NWFlNGIw
NzhjZWU0MGUxZDA1YjhiLi4zNWIyZDRjYzY3MjQxMWVhNWU5MGYxYTVkNTVmMTFmMWQ4MTgzODVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCkBAIC0zMzcs
MTIgKzMzNywxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXROZXZlck9wdGltaXplKGJvb2wgdmFs
dWUpIHsgbV9uZXZlck9wdGltaXplID0gdmFsdWU7IH0KICAgICB2b2lkIHNldE5ldmVyRlRMT3B0
aW1pemUoYm9vbCB2YWx1ZSkgeyBtX25ldmVyRlRMT3B0aW1pemUgPSB2YWx1ZTsgfQogICAgIHZv
aWQgc2V0RGlkVHJ5VG9FbnRlckluTG9vcChib29sIHZhbHVlKSB7IG1fZGlkVHJ5VG9FbnRlcklu
TG9vcCA9IHZhbHVlOyB9CisgICAgdm9pZCBzZXRDYW5Vc2VPU1JFeGl0RnV6emluZyhib29sIHZh
bHVlKSB7IG1fY2FuVXNlT1NSRXhpdEZ1enppbmcgPSB2YWx1ZTsgfQogICAgIGJvb2wgbmV2ZXJJ
bmxpbmUoKSBjb25zdCB7IHJldHVybiBtX25ldmVySW5saW5lOyB9CiAgICAgYm9vbCBuZXZlck9w
dGltaXplKCkgY29uc3QgeyByZXR1cm4gbV9uZXZlck9wdGltaXplOyB9CiAgICAgYm9vbCBuZXZl
ckZUTE9wdGltaXplKCkgY29uc3QgeyByZXR1cm4gbV9uZXZlckZUTE9wdGltaXplOyB9CiAgICAg
Ym9vbCBkaWRUcnlUb0VudGVySW5Mb29wKCkgY29uc3QgeyByZXR1cm4gbV9kaWRUcnlUb0VudGVy
SW5Mb29wOyB9CiAgICAgYm9vbCBpc0lubGluaW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4g
IW5ldmVySW5saW5lKCk7IH0KICAgICBib29sIGlzT2tUb09wdGltaXplKCkgY29uc3QgeyByZXR1
cm4gIW5ldmVyT3B0aW1pemUoKTsgfQorICAgIGJvb2wgY2FuVXNlT1NSRXhpdEZ1enppbmcoKSBj
b25zdCB7IHJldHVybiBtX2NhblVzZU9TUkV4aXRGdXp6aW5nOyB9CiAgICAgCiAgICAgYm9vbCog
YWRkcmVzc09mRGlkVHJ5VG9FbnRlckluTG9vcCgpIHsgcmV0dXJuICZtX2RpZFRyeVRvRW50ZXJJ
bkxvb3A7IH0KIApAQCAtNDAzLDYgKzQwNSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIG1fbmV2
ZXJPcHRpbWl6ZSA6IDE7CiAgICAgYm9vbCBtX25ldmVyRlRMT3B0aW1pemUgOiAxOwogICAgIGJv
b2wgbV9pc0Fycm93RnVuY3Rpb25Db250ZXh0IDogMTsKKyAgICBib29sIG1fY2FuVXNlT1NSRXhp
dEZ1enppbmcgOiAxOwogICAgIHVuc2lnbmVkIG1fZGVyaXZlZENvbnRleHRUeXBlIDogMjsgLy8g
RGVyaXZlZENvbnRleHRUeXBlCiAgICAgdW5zaWduZWQgbV9ldmFsQ29udGV4dFR5cGUgOiAyOyAv
LyBFdmFsQ29udGV4dFR5cGUKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1Rlc3RSdW5uZXJVdGlscy5jcHAKaW5kZXggZDEzMDkwZmVkZGFkYTExZDgzMDBkZjlhM2UxZWQz
NWI3MjIwN2JmZC4uNDNhYTQ1NjMyZjk4NTBhMzhlNjM2M2U3NzEzMjY4ZjE1ODIxM2Y5NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3Bw
CkBAIC0xMzEsNiArMTMxLDE4IEBAIEpTVmFsdWUgc2V0TmV2ZXJPcHRpbWl6ZShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgcmV0dXJuIHNldE5ldmVyT3B0aW1pemUoZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwogfQogCitKU1ZhbHVlIHNldENhbm5vdFVzZU9TUkV4aXRGdXp6aW5nKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBKU1ZhbHVlIHRoZUZ1bmN0aW9uVmFsdWUgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKKyAgICBpZiAoRnVuY3Rpb25FeGVjdXRhYmxlKiBl
eGVjdXRhYmxlID0gZ2V0RXhlY3V0YWJsZUZvckZ1bmN0aW9uKHRoZUZ1bmN0aW9uVmFsdWUpKQor
ICAgICAgICBleGVjdXRhYmxlLT5zZXRDYW5Vc2VPU1JFeGl0RnV6emluZyhmYWxzZSk7CisKKyAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogSlNWYWx1ZSBvcHRpbWl6ZU5leHRJbnZvY2F0
aW9uKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwg
MSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJV
dGlscy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmgK
aW5kZXggYjhkZmFlYWMwYjMyOWUwZTA5YjY0MmRmOWVhMTk1Y2NhZGNjMWJkMC4uMTQ2NThkNmM0
YzljNmJmMmQ1NmFhZmFiNmExZDNjY2UxMzBiYmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NSw2ICs0NSw3IEBAIEpTX0VY
UE9SVF9QUklWQVRFIEpTVmFsdWUgZmFpbE5leHROZXdDb2RlQmxvY2soRXhlY1N0YXRlKik7CiBK
U19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIG51bWJlck9mREZHQ29tcGlsZXMoRXhlY1N0YXRlKik7
CiBKU19FWFBPUlRfUFJJVkFURSBKU1ZhbHVlIHNldE5ldmVySW5saW5lKEV4ZWNTdGF0ZSopOwog
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXROZXZlck9wdGltaXplKEV4ZWNTdGF0ZSopOwor
SlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZSBzZXRDYW5ub3RVc2VPU1JFeGl0RnV6emluZyhFeGVj
U3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWUgb3B0aW1pemVOZXh0SW52b2NhdGlv
bihFeGVjU3RhdGUqKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgdW5zaWduZWQgbnVtYmVyT2ZFeGNl
cHRpb25GdXp6Q2hlY2tzKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDNlZjJkYjRmZTBkNTNjNzFhNTZkODE3YWRjNTQ1OThjODQwYTIy
NTQuLjBkZTc4YTBlZGFjZGZkOWFiNDFjYTk1NzMxMDc1YTRhZWVkZDhiZTggMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUg
QEAKKzIwMTYtMDgtMTkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gQXJpdGhTcXJ0IHNob3VsZCB3b3JrIHdpdGggYW55IGFyZ3VtZW50IHR5
cGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDk1
NAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogc3RyZXNz
L2FyaXRoLXNxcnQtb24tdmFyaW91cy10eXBlcy5qczogQWRkZWQuCisgICAgICAgIChsZXQudmFs
aWRJbnB1dFR5cGVkVGVzdENhc2VzLnZhbGlkSW5wdXRUZXN0Q2FzZXMubWFwKToKKyAgICAgICAg
KGlzSWRlbnRpY2FsKToKKyAgICAgICAgKG9wYXF1ZUFsbFR5cGVzU3FydCk6CisgICAgICAgICh0
ZXN0QWxsVHlwZXNDYWxsKToKKyAgICAgICAgKHRlc3RTaW5nbGVUeXBlQ2FsbCk6CisgICAgICAg
IChvcGFxdWVTcXJ0Rm9yU2lkZUVmZmVjdHMpOgorICAgICAgICAodGVzdFNpZGVFZmZlY3QubGV0
LnRlc3RPYmplY3QudmFsdWVPZik6CisgICAgICAgICh0ZXN0U2lkZUVmZmVjdCk6CisgICAgICAg
IChvcGFxdWVTcXJ0Rm9yQ1NFKToKKyAgICAgICAgKHRlc3RDU0UubGV0LnRlc3RPYmplY3QudmFs
dWVPZik6CisgICAgICAgICh0ZXN0Q1NFKToKKyAgICAgICAgKHRlc3RFeGNlcHRpb24ub3BhcXVl
U3FydFdpdGhFeGNlcHRpb24pOgorICAgICAgICAodGVzdEV4Y2VwdGlvbik6CisKIDIwMTYtMDgt
MTggIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIFNjb3BlZEFyZ3Vt
ZW50cyBpcyB1c2luZyB0aGUgd3Jvbmcgb3duZXIgb2JqZWN0IGZvciBhIHdyaXRlIGJhcnJpZXIu
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9hcml0aC1zcXJ0LW9uLXZhcmlvdXMtdHlwZXMu
anMgYi9KU1Rlc3RzL3N0cmVzcy9hcml0aC1zcXJ0LW9uLXZhcmlvdXMtdHlwZXMuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMDA2MGEwYThlMjg2ZTA3MGZkNjljNTYyMjY0ZDZlNjZkMGFhZDRlNgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL2FyaXRoLXNxcnQtb24tdmFyaW91cy10eXBlcy5qcwpA
QCAtMCwwICsxLDE2MiBAQAorInVzZSBzdHJpY3QiOworCitsZXQgdmFsaWRJbnB1dFRlc3RDYXNl
cyA9IFsKKyAgICAvLyBpbnB1dCBhcyBzdHJpbmcsIGV4cGVjdGVkIHJlc3VsdCBhcyBzdHJpbmcu
CisgICAgWyJ1bmRlZmluZWQiLCAiTmFOIl0sCisgICAgWyJudWxsIiwgIjAiXSwKKyAgICBbIjAi
LCAiMCJdLAorICAgIFsiLTAuIiwgIi0wLiJdLAorICAgIFsiNCIsICIyIl0sCisgICAgWyI0Mi41
IiwgIjYuNTE5MjAyNDA1MjAyNjQ5Il0sCisgICAgWyJJbmZpbml0eSIsICJJbmZpbml0eSJdLAor
ICAgIFsiLUluZmluaXR5IiwgIk5hTiJdLAorICAgIFsiTmFOIiwgIk5hTiJdLAorICAgIFsiXCJX
ZWJLaXRcIiIsICJOYU4iXSwKKyAgICBbIlwiNFwiIiwgIjIiXSwKKyAgICBbInsgdmFsdWVPZjog
KCkgPT4geyByZXR1cm4gNDsgfSB9IiwgIjIiXSwKK107CisKK2xldCB2YWxpZElucHV0VHlwZWRU
ZXN0Q2FzZXMgPSB2YWxpZElucHV0VGVzdENhc2VzLm1hcCgoZWxlbWVudCkgPT4geyByZXR1cm4g
W2V2YWwoIigiICsgZWxlbWVudFswXSArICIpIiksIGV2YWwoZWxlbWVudFsxXSldIH0pOworCitm
dW5jdGlvbiBpc0lkZW50aWNhbChyZXN1bHQsIGV4cGVjdGVkKQoreworICAgIGlmIChleHBlY3Rl
ZCA9PT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgaWYgKHJlc3VsdCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghZXhwZWN0ZWQgJiYgMSAvIGV4cGVj
dGVkID09PSAtSW5maW5pdHkgJiYgMSAvIHJlc3VsdCAhPT0gLUluZmluaXR5KQorICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1
cm4gcmVzdWx0ICE9PSByZXN1bHQ7Cit9CisKKworLy8gVGVzdCBNYXRoLnNxcnQoKSB3aXRoIGEg
dmVyeSBwb2x5bW9ycGhpYyBpbnB1dC4gQWxsIHRlc3QgY2FzZXMgYXJlIHNlZW4gYXQgZWFjaCBp
dGVyYXRpb24uCitmdW5jdGlvbiBvcGFxdWVBbGxUeXBlc1NxcnQoYXJndW1lbnQpIHsKKyAgICBy
ZXR1cm4gTWF0aC5zcXJ0KGFyZ3VtZW50KTsKK30KK25vSW5saW5lKG9wYXF1ZUFsbFR5cGVzU3Fy
dCk7Citub09TUkV4aXRGdXp6aW5nKG9wYXF1ZUFsbFR5cGVzU3FydCk7CisKK2Z1bmN0aW9uIHRl
c3RBbGxUeXBlc0NhbGwoKSB7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxZTM7ICsraSkgewor
ICAgICAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUeXBlZFRlc3RDYXNl
cykgeworICAgICAgICAgICAgbGV0IG91dHB1dCA9IG9wYXF1ZUFsbFR5cGVzU3FydCh0ZXN0Q2Fz
ZUlucHV0WzBdKTsKKyAgICAgICAgICAgIGlmICghaXNJZGVudGljYWwob3V0cHV0LCB0ZXN0Q2Fz
ZUlucHV0WzFdKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiRmFpbGVkIHRlc3RBbGxUeXBlc0Nh
bGwgZm9yIGlucHV0ICIgKyB0ZXN0Q2FzZUlucHV0WzBdICsgIiBleHBlY3RlZCAiICsgdGVzdENh
c2VJbnB1dFsxXSArICIgZ290ICIgKyBvdXRwdXQ7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYg
KG51bWJlck9mREZHQ29tcGlsZXMob3BhcXVlQWxsVHlwZXNTcXJ0KSA+IDIpCisgICAgICAgIHRo
cm93ICJXZSBzaG91bGQgaGF2ZSBkZXRlY3RlZCBzcXJ0KCkgd2FzIHBvbHltb3JwaGljIGFuZCBn
ZW5lcmF0ZWQgYSBnZW5lcmljIHZlcnNpb24uIjsKK30KK3Rlc3RBbGxUeXBlc0NhbGwoKTsKKwor
CisvLyBUZXN0IE1hdGguc3FydCgpIG9uIGEgY29tcGxldGVseSB0eXBlZCBpbnB1dC4gRXZlcnkg
Y2FsbCBzZWUgb25seSBvbmUgdHlwZS4KK2Z1bmN0aW9uIHRlc3RTaW5nbGVUeXBlQ2FsbCgpIHsK
KyAgICBmb3IgKGxldCB0ZXN0Q2FzZUlucHV0IG9mIHZhbGlkSW5wdXRUZXN0Q2FzZXMpIHsKKyAg
ICAgICAgZXZhbChgCisgICAgICAgICAgICBmdW5jdGlvbiBvcGFxdWVTcXJ0KGFyZ3VtZW50KSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIE1hdGguc3FydChhcmd1bWVudCk7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBub0lubGluZShvcGFxdWVTcXJ0KTsKKyAgICAgICAgICAgIG5vT1NS
RXhpdEZ1enppbmcob3BhcXVlU3FydCk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBp
IDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWlzSWRlbnRpY2FsKG9wYXF1ZVNx
cnQoJHt0ZXN0Q2FzZUlucHV0WzBdfSksICR7dGVzdENhc2VJbnB1dFsxXX0pKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRocm93ICJGYWlsZWQgdGVzdFNpbmdsZVR5cGVDYWxsKCkiOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChudW1iZXJPZkRGR0Nv
bXBpbGVzKG9wYXF1ZVNxcnQpID4gMSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiV2Ugc2hvdWxk
IGhhdmUgY29tcGlsZWQgYSBzaW5nbGUgc3FydCBmb3IgdGhlIGV4cGVjdGVkIHR5cGUuIjsKKyAg
ICAgICAgYCk7CisgICAgfQorfQordGVzdFNpbmdsZVR5cGVDYWxsKCk7CisKKworLy8gVmVyaWZ5
IHdlIGNhbGwgdmFsdWVPZigpIGV4YWN0bHkgb25jZSBwZXIgY2FsbC4KK2Z1bmN0aW9uIG9wYXF1
ZVNxcnRGb3JTaWRlRWZmZWN0cyhhcmd1bWVudCkgeworICAgIHJldHVybiBNYXRoLnNxcnQoYXJn
dW1lbnQpOworfQorbm9JbmxpbmUob3BhcXVlU3FydEZvclNpZGVFZmZlY3RzKTsKK25vT1NSRXhp
dEZ1enppbmcob3BhcXVlU3FydEZvclNpZGVFZmZlY3RzKTsKKworZnVuY3Rpb24gdGVzdFNpZGVF
ZmZlY3QoKSB7CisgICAgbGV0IHRlc3RPYmplY3QgPSB7CisgICAgICAgIGNvdW50ZXI6IDAsCisg
ICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRlcjsgcmV0dXJuIDE2OyB9
CisgICAgfTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgIGlm
IChvcGFxdWVTcXJ0Rm9yU2lkZUVmZmVjdHModGVzdE9iamVjdCkgIT09IDQpCisgICAgICAgICAg
ICB0aHJvdyAiSW5jb3JyZWN0IHJlc3VsdCBpbiB0ZXN0U2lkZUVmZmVjdCgpIjsKKyAgICB9Cisg
ICAgaWYgKHRlc3RPYmplY3QuY291bnRlciAhPT0gMWU0KQorICAgICAgICB0aHJvdyAiRmFpbGVk
IHRlc3RTaWRlRWZmZWN0KCkiOworICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZVNx
cnRGb3JTaWRlRWZmZWN0cykgPiAxKQorICAgICAgICB0aHJvdyAib3BhcXVlU3FydEZvclNpZGVF
ZmZlY3RzKCkgaXMgcHJlZGljdGFibGUsIGl0IHNob3VsZCBvbmx5IGJlIGNvbXBpbGVkIG9uY2Uu
IjsKK30KK3Rlc3RTaWRlRWZmZWN0KCk7CisKKworLy8gVmVyaWZ5IFNRUlQgaXMgbm90IHN1Ympl
Y3QgdG8gQ1NFIGlmIHRoZSBhcmd1bWVudCBoYXMgc2lkZSBlZmZlY3RzLgorZnVuY3Rpb24gb3Bh
cXVlU3FydEZvckNTRShhcmd1bWVudCkgeworICAgIHJldHVybiBNYXRoLnNxcnQoYXJndW1lbnQp
ICsgTWF0aC5zcXJ0KGFyZ3VtZW50KSArIE1hdGguc3FydChhcmd1bWVudCk7Cit9Citub0lubGlu
ZShvcGFxdWVTcXJ0Rm9yQ1NFKTsKK25vT1NSRXhpdEZ1enppbmcob3BhcXVlU3FydEZvckNTRSk7
CisKK2Z1bmN0aW9uIHRlc3RDU0UoKSB7CisgICAgbGV0IHRlc3RPYmplY3QgPSB7CisgICAgICAg
IGNvdW50ZXI6IDAsCisgICAgICAgIHZhbHVlT2Y6IGZ1bmN0aW9uKCkgeyArK3RoaXMuY291bnRl
cjsgcmV0dXJuIDE2OyB9CisgICAgfTsKKyAgICBmb3IgKGxldCBpID0gMDsgaSA8IDFlNDsgKytp
KSB7CisgICAgICAgIGlmIChvcGFxdWVTcXJ0Rm9yQ1NFKHRlc3RPYmplY3QpICE9PSAxMikKKyAg
ICAgICAgICAgIHRocm93ICJJbmNvcnJlY3QgcmVzdWx0IGluIHRlc3RDU0UoKSI7CisgICAgfQor
ICAgIGlmICh0ZXN0T2JqZWN0LmNvdW50ZXIgIT09IDNlNCkKKyAgICAgICAgdGhyb3cgIkZhaWxl
ZCB0ZXN0Q1NFKCkiOworICAgIGlmIChudW1iZXJPZkRGR0NvbXBpbGVzKG9wYXF1ZVNxcnRGb3JD
U0UpID4gMSkKKyAgICAgICAgdGhyb3cgIm9wYXF1ZVNxcnRGb3JDU0UoKSBpcyBwcmVkaWN0YWJs
ZSwgaXQgc2hvdWxkIG9ubHkgYmUgY29tcGlsZWQgb25jZS4iOworfQordGVzdENTRSgpOworCisK
Ky8vIFRlc3QgZXhjZXB0aW9ucyBpbiB0aGUgYXJndW1lbnQuCitmdW5jdGlvbiB0ZXN0RXhjZXB0
aW9uKCkgeworICAgIGxldCBjb3VudGVyID0gMDsKKyAgICBmdW5jdGlvbiBvcGFxdWVTcXJ0V2l0
aEV4Y2VwdGlvbihhcmd1bWVudCkgeworICAgICAgICBsZXQgcmVzdWx0ID0gTWF0aC5zcXJ0KGFy
Z3VtZW50KTsKKyAgICAgICAgKytjb3VudGVyOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKyAgICBub0lubGluZShvcGFxdWVTcXJ0V2l0aEV4Y2VwdGlvbik7CisKKyAgICBsZXQgdGVz
dE9iamVjdCA9IHsgdmFsdWVPZjogKCkgPT4geyAgcmV0dXJuIDY0OyB9IH07CisKKyAgICAvLyBX
YXJtIHVwIHdpdGhvdXQgZXhjZXB0aW9uLgorICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMWUzOyAr
K2kpIHsKKyAgICAgICAgaWYgKG9wYXF1ZVNxcnRXaXRoRXhjZXB0aW9uKHRlc3RPYmplY3QpICE9
PSA4KQorICAgICAgICAgICAgdGhyb3cgIkluY29ycmVjdCByZXN1bHQgaW4gb3BhcXVlU3FydFdp
dGhFeGNlcHRpb24oKSI7CisgICAgfQorCisgICAgbGV0IHRlc3RUaHJvd09iamVjdCA9IHsgdmFs
dWVPZjogKCkgPT4geyB0aHJvdyB0ZXN0T2JqZWN0OyByZXR1cm4gNjQ7IH0gfTsKKworICAgIGZv
ciAobGV0IGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IGlmIChvcGFxdWVTcXJ0V2l0aEV4Y2VwdGlvbih0ZXN0VGhyb3dPYmplY3QpICE9PSA4KQorICAg
ICAgICAgICAgICAgIHRocm93ICJUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSByZWFjaGVkISEiOwor
ICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICBpZiAoZSAhPT0gdGVzdE9iamVjdCkg
eworICAgICAgICAgICAgICAgIHRocm93ICJXcm9uZyBvYmplY3QgdGhyb3duIGZyb20gb3BhcXVl
U3FydFdpdGhFeGNlcHRpb24uIgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgaWYgKGNvdW50ZXIgIT09IDFlMykgeworICAgICAgICB0aHJvdyAiSW52YWxpZCBjb3VudCBp
biB0ZXN0RXhjZXB0aW9uKCkiOworICAgIH0KK30KK3Rlc3RFeGNlcHRpb24oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>