<?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>151921</bug_id>
          
          <creation_ts>2015-12-05 22:58:01 -0800</creation_ts>
          <short_desc>[JSC] Add minimal float support to B3</short_desc>
          <delta_ts>2015-12-07 17:16:32 -0800</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>DUPLICATE</resolution>
          <dup_id>151974</dup_id>
          
          <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>fpizlo</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>1146667</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-05 22:58:01 -0800</bug_when>
    <thetext>[JSC] Add minimal float support to B3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146668</commentid>
    <comment_count>1</comment_count>
      <attachid>266727</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-05 23:01:30 -0800</bug_when>
    <thetext>Created attachment 266727
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146669</commentid>
    <comment_count>2</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-05 23:03:58 -0800</bug_when>
    <thetext>First cut.

I disagree that arithmetic are a must have in the first patch. If that&apos;s a blocker for you, I&apos;ll add them. Most of the work will be writing the tests, not the operators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146672</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-06 07:04:25 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; First cut.
&gt; 
&gt; I disagree that arithmetic are a must have in the first patch. If that&apos;s a
&gt; blocker for you, I&apos;ll add them. Most of the work will be writing the tests,
&gt; not the operators.

Comparisons, too. If it&apos;s done now then we will have fewer fixmes for later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146710</commentid>
    <comment_count>4</comment_count>
      <attachid>266727</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-12-06 15:34:05 -0800</bug_when>
    <thetext>Comment on attachment 266727
Patch

I think that this patch is a regression, because it introduces a type but implements only a small fraction of that type&apos;s intended functionality.  Worse, this is a type that we don&apos;t need right now or probably anytime soon.  The B3 is sufficiently complete that at this point, adding new types or new opcodes should be done in complete steps.  This is a good precedent to set: that way what is in trunk is always representative of what we think is a good compiler.

In this case, the only part of the patch that helps us reach a complete state is that it gives a replacement for FRound.  But you could have implemented that in a tiny standalone patch.

But what your patch implements is a partial implementation of Floats.  There is a risk that you will abandon this after landing the patch, since none of the remaining Float support is on anyone&apos;s critical path.  So, we&apos;re going to have to live with B3 having a half-baked Float type.  That will send a strong message to other contributors that it&apos;s OK to add half of something to B3 and then abandon it.  I&apos;d like to avoid that.

I&apos;m fine with this patch being extended to support all Float operations.  It will be a big patch, but that&apos;s OK.  If you think that full Float support should be a priority right now, then I recommend just finishing this patch.  The complete patch should include all float math ops that we support for doubles and all float comparisons, including Float = Select(Int, Float, Float).  I&apos;m also fine with a patch that implements Floats by lowering them to Doubles in LowerMacros, but I bet that such a patch would actually be bigger due to all of the weird things it entails, like the weird casts you&apos;d have to do to support Float = Select(Int, Float, Float).

To summarize, the B3 is sufficiently close to done that we should not regress its completeness.  I want B3 to quickly reach a state where everything makes sense.  Adding a type that can only be used for a subset of its intended operations means that we&apos;re further from that state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1146753</commentid>
    <comment_count>5</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-06 21:58:06 -0800</bug_when>
    <thetext>We&apos;ll need this short-ish term anyway. It is not a time for cutting corners. I&apos;ll take next week to do the right thing and implement full support then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1147118</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-12-07 17:16:32 -0800</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 151974 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>266727</attachid>
            <date>2015-12-05 23:01:30 -0800</date>
            <delta_ts>2015-12-06 15:34:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-151921-20151205230103.patch</filename>
            <type>text/plain</type>
            <size>54208</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzNTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
ODE0NjU2MjUwNGIzMjBjZjYwOGUxMmUxMWI4ZmJmZWQxMzZjZDlhLi5kN2IwZTQ4YTMyZjVhMjg2
YWI3NTNhZGY3N2QzMTg0YTIyNTZmOTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5NCBAQAorMjAxNS0xMi0wNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgbWluaW1hbCBmbG9hdCBzdXBwb3J0IHRvIEIzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTE5MjEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNo
IGltcGxlbWVudHMgTG9hZCwgU3RvcmUsIGFuZCBhZGQgZmxvYXQtZG91YmxlCisgICAgICAgIGNv
bnZlcnNpb24uCisKKyAgICAgICAgVGhlIG9ubHkgb3B0aW1pemF0aW9uIGF0IHRoaXMgcG9pbnQg
aXMgZmxvYXQtPmRvdWJsZS0+ZmxvYXQKKyAgICAgICAgY29udmVyc2lvbnMgYXJlIGVsaW1pbmF0
ZWQuCisKKyAgICAgICAgVGhlIEFyaXRobWV0aWMgYW5kIEJpdCBvcGVyYXRvcnMgYXJlIG5vdCBp
bXBsZW1lbnRlZCBpbiB0aGlzIHBhdGNoLgorICAgICAgICBUaGUgdmFsaWRhdG9yIHJlamVjdHMg
RmxvYXQgZm9yIHRoZW0gKG91ciBCaXQgb3BlcmF0b3JzIGRvbid0IHN1cHBvcnQKKyAgICAgICAg
RG91YmxlIHlldCBlaXRoZXIpLgorCisgICAgICAgICogYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVy
WDg2Q29tbW9uLmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpsb2Fk
RmxvYXQpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlclg4NkNvbW1vbjo6c3RvcmVGbG9h
dCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjb252ZXJ0RG91Ymxl
VG9GbG9hdCk6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyWDg2Q29tbW9uOjpjb252ZXJ0
RmxvYXRUb0RvdWJsZSk6CisgICAgICAgICogYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oOgorICAg
ICAgICAoSlNDOjpYODZBc3NlbWJsZXI6OmN2dHNkMnNzX21yKToKKyAgICAgICAgKEpTQzo6WDg2
QXNzZW1ibGVyOjpjdnRzczJzZF9tcik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6bW92
c3Nfcm0pOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6Om1vdnNzX21yKToKKyAgICAgICAg
KiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojp0cnlPcGNvZGVGb3JUeXBlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6
b3Bjb2RlRm9yVHlwZSk6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVu
ZFVuT3ApOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjphcHBlbmRCaW5PcCk6
CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OmFwcGVuZFNoaWZ0KToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kU3RvcmVVbk9wKToKKyAgICAg
ICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5QXBwZW5kU3RvcmVCaW5PcCk6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6Om1vdmVGb3JUeXBlKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6cmVsYXhlZE1vdmVGb3JUeXBlKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6bG93ZXIpOgorICAgICAgICAqIGIzL0IzTWVtb3J5VmFs
dWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6TWVtb3J5VmFsdWU6OmFjY2Vzc0J5dGVTaXplKTog
RGVsZXRlZC4KKyAgICAgICAgKiBiMy9CM01lbW9yeVZhbHVlLmg6CisgICAgICAgICogYjMvQjNP
cGNvZGUuY3BwOgorICAgICAgICAoV1RGOjpwcmludEludGVybmFsKToKKyAgICAgICAgKiBiMy9C
M09wY29kZS5oOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5ndGguY3BwOgorICAgICAgICAq
IGIzL0IzVHlwZS5jcHA6CisgICAgICAgIChXVEY6OnByaW50SW50ZXJuYWwpOgorICAgICAgICAq
IGIzL0IzVHlwZS5oOgorICAgICAgICAoSlNDOjpCMzo6aXNGbG9hdCk6CisgICAgICAgIChKU0M6
OkIzOjpzaXplb2ZUeXBlKToKKyAgICAgICAgKiBiMy9CM1ZhbGlkYXRlLmNwcDoKKyAgICAgICAg
KiBiMy9CM1ZhbHVlLmNwcDoKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjplZmZlY3RzKToKKyAg
ICAgICAgKEpTQzo6QjM6OlZhbHVlOjprZXkpOgorICAgICAgICAoSlNDOjpCMzo6VmFsdWU6OnR5
cGVGb3IpOgorICAgICAgICAqIGIzL0IzVmFsdWVLZXkuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
VmFsdWVLZXk6Om1hdGVyaWFsaXplKToKKyAgICAgICAgKiBiMy9haXIvQWlyQXJnLmg6CisgICAg
ICAgIChKU0M6OkIzOjpBaXI6OkFyZzo6dHlwZUZvckIzVHlwZSk6CisgICAgICAgIChKU0M6OkIz
OjpBaXI6OkFyZzo6d2lkdGhGb3JCM1R5cGUpOgorICAgICAgICAqIGIzL2Fpci9BaXJGaXhQYXJ0
aWFsUmVnaXN0ZXJTdGFsbHMuY3BwOgorICAgICAgICAqIGIzL2Fpci9BaXJPcGNvZGUub3Bjb2Rl
czoKKyAgICAgICAgKiBiMy90ZXN0YjMuY3BwOgorICAgICAgICAoSlNDOjpCMzo6dGVzdENvbnZl
cnREb3VibGVUb0Zsb2F0QXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RDb252ZXJ0RG91Ymxl
VG9GbG9hdE1lbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRU
b0RvdWJsZVRvRmxvYXQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdExvYWRGbG9hdENvbnZlcnRE
b3VibGVDb252ZXJ0RmxvYXRTdG9yZUZsb2F0KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RGcm91
bmRBcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEZyb3VuZE1lbSk6CisgICAgICAgIChKU0M6
OkIzOjp0ZXN0U3RvcmUzMik6CisgICAgICAgIChKU0M6OkIzOjptb2RlbExvYWQpOgorICAgICAg
ICAoSlNDOjpCMzo6ZmxvYXQ+KToKKyAgICAgICAgKEpTQzo6QjM6OmRvdWJsZT4pOgorICAgICAg
ICAoSlNDOjpCMzo6dGVzdExvYWQpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdFN0b3JlRmxvYXQp
OgorICAgICAgICAoSlNDOjpCMzo6cG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMpOgorICAg
ICAgICAoSlNDOjpCMzo6ZmxvYXRpbmdQb2ludE9wZXJhbmRzKToKKyAgICAgICAgKEpTQzo6QjM6
OmludDY0T3BlcmFuZHMpOgorICAgICAgICAoSlNDOjpCMzo6cnVuKToKKyAgICAgICAgKEpTQzo6
QjM6OnRlc3RTdG9yZSk6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpwb3NJbmZpbml0eSk6
IERlbGV0ZWQuCisgICAgICAgIChKU0M6OkIzOjpuZWdJbmZpbml0eSk6IERlbGV0ZWQuCisgICAg
ICAgIChKU0M6OkIzOjpkb3VibGVPcGVyYW5kcyk6IERlbGV0ZWQuCisgICAgICAgICogZnRsL0ZU
TEIzT3V0cHV0LmNwcDoKKyAgICAgICAgKEpTQzo6RlRMOjpPdXRwdXQ6OmxvYWRGbG9hdFRvRG91
YmxlKToKKyAgICAgICAgKiBmdGwvRlRMQjNPdXRwdXQuaDoKKyAgICAgICAgKEpTQzo6RlRMOjpP
dXRwdXQ6OmZyb3VuZCk6CisgICAgICAgICogZnRsL0ZUTENvbW1vblZhbHVlcy5jcHA6CisgICAg
ICAgIChKU0M6OkZUTDo6Q29tbW9uVmFsdWVzOjpDb21tb25WYWx1ZXMpOgorICAgICAgICAqIGZ0
bC9GVExDb21tb25WYWx1ZXMuaDoKKwogMjAxNS0xMi0wNCAgQmVuamFtaW4gUG91bGFpbiAgPGJw
b3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBTb21lIG1vcmUgY2xlYW51cCBvZiBG
VExCM091dHB1dApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9N
YWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCmluZGV4IDY4MTQzODU5NzQwY2JkNTQ5MWUzODlm
MWZiMTYwMTIzNmZmZGNkOGMuLmZkMWUwMDgzMTYyNWZmZGQzODY3NmQzZDVmNGMxYzU2YjJmMTg1
MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3Nl
bWJsZXJYODZDb21tb24uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKQEAgLTc3OSwxMiArNzc5LDE5IEBAIHB1YmxpYzoKICAg
ICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNk
X21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOwogICAgIH0KLSAgICAKKwog
ICAgIHZvaWQgbG9hZERvdWJsZShCYXNlSW5kZXggYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92c2RfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy5pbmRl
eCwgYWRkcmVzcy5zY2FsZSwgZGVzdCk7CiAgICAgfQorCisgICAgdm9pZCBsb2FkRmxvYXQoSW1w
bGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAg
QVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLm1vdnNzX21yKGFk
ZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRlc3QpOworICAgIH0KKwogICAgIHZvaWQgbG9h
ZEZsb2F0KEJhc2VJbmRleCBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAg
ICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwpAQCAtODAyLDcgKzgwOSwxMyBAQCBwdWJsaWM6
CiAgICAgICAgIEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwogICAgICAgICBtX2Fzc2VtYmxlci5t
b3ZzZF9ybShzcmMsIGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGFkZHJlc3MuaW5kZXgs
IGFkZHJlc3Muc2NhbGUpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgc3RvcmVGbG9hdChGUFJl
Z2lzdGVySUQgc3JjLCBJbXBsaWNpdEFkZHJlc3MgYWRkcmVzcykKKyAgICB7CisgICAgICAgIEFT
U0VSVChpc1NTRTJQcmVzZW50KCkpOworICAgICAgICBtX2Fzc2VtYmxlci5tb3Zzc19ybShzcmMs
IGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UpOworICAgIH0KKwogICAgIHZvaWQgc3RvcmVG
bG9hdChGUFJlZ2lzdGVySUQgc3JjLCBCYXNlSW5kZXggYWRkcmVzcykKICAgICB7CiAgICAgICAg
IEFTU0VSVChpc1NTRTJQcmVzZW50KCkpOwpAQCAtODE1LDEyICs4MjgsMjQgQEAgcHVibGljOgog
ICAgICAgICBtX2Fzc2VtYmxlci5jdnRzZDJzc19ycihzcmMsIGRzdCk7CiAgICAgfQogCisgICAg
dm9pZCBjb252ZXJ0RG91YmxlVG9GbG9hdChBZGRyZXNzIGFkZHJlc3MsIEZQUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKKyAgICAgICAgbV9h
c3NlbWJsZXIuY3Z0c2Qyc3NfbXIoYWRkcmVzcy5vZmZzZXQsIGFkZHJlc3MuYmFzZSwgZHN0KTsK
KyAgICB9CisKICAgICB2b2lkIGNvbnZlcnRGbG9hdFRvRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMs
IEZQUmVnaXN0ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgp
KTsKICAgICAgICAgbV9hc3NlbWJsZXIuY3Z0c3Myc2RfcnIoc3JjLCBkc3QpOwogICAgIH0KIAor
ICAgIHZvaWQgY29udmVydEZsb2F0VG9Eb3VibGUoQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVy
SUQgZHN0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGlzU1NFMlByZXNlbnQoKSk7CisgICAgICAg
IG1fYXNzZW1ibGVyLmN2dHNzMnNkX21yKGFkZHJlc3Mub2Zmc2V0LCBhZGRyZXNzLmJhc2UsIGRz
dCk7CisgICAgfQorCiAgICAgdm9pZCBhZGREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoaXNTU0UyUHJlc2VudCgpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IDVk
MjljNTkyZDhjNDlkOTc3MWYwYTQ2MzVmOTcyNjI4MmU1ZWI0ZGUuLjcyYTkwY2Q5MjQ5ZDU5M2Y1
NzExYzAwMWFhNWM0OTdkYWFiY2FmOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9YODZBc3NlbWJsZXIuaApAQCAtMTk4OCwxMiArMTk4OCwyNCBAQCBwdWJsaWM6CiAg
ICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfQ1ZUU0QyU1NfVnNkV3NkLCBkc3QsIChS
ZWdpc3RlcklEKXNyYyk7CiAgICAgfQogCisgICAgdm9pZCBjdnRzZDJzc19tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFhNTVJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9m
b3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRl
T3AoT1AyX0NWVFNEMlNTX1ZzZFdzZCwgZHN0LCBiYXNlLCBvZmZzZXQpOworICAgIH0KKwogICAg
IHZvaWQgY3Z0c3Myc2RfcnIoWE1NUmVnaXN0ZXJJRCBzcmMsIFhNTVJlZ2lzdGVySUQgZHN0KQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOwogICAgICAgICBt
X2Zvcm1hdHRlci50d29CeXRlT3AoT1AyX0NWVFNTMlNEX1ZzZFdzZCwgZHN0LCAoUmVnaXN0ZXJJ
RClzcmMpOwogICAgIH0KLSAgICAKKworICAgIHZvaWQgY3Z0c3Myc2RfbXIoaW50IG9mZnNldCwg
UmVnaXN0ZXJJRCBiYXNlLCBYTU1SZWdpc3RlcklEIGRzdCkKKyAgICB7CisgICAgICAgIG1fZm9y
bWF0dGVyLnByZWZpeChQUkVfU1NFX0YzKTsKKyAgICAgICAgbV9mb3JtYXR0ZXIudHdvQnl0ZU9w
KE9QMl9DVlRTUzJTRF9Wc2RXc2QsIGRzdCwgYmFzZSwgb2Zmc2V0KTsKKyAgICB9CisKICNpZiBD
UFUoWDg2XzY0KQogICAgIHZvaWQgY3Z0dHNkMnNpcV9ycihYTU1SZWdpc3RlcklEIHNyYywgUmVn
aXN0ZXJJRCBkc3QpCiAgICAgewpAQCAtMjA1MSw2ICsyMDYzLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9mb3JtYXR0ZXIucHJlZml4KFBSRV9TU0VfRjIpOwogICAgICAgICBtX2Zvcm1hdHRlci50
d29CeXRlT3AoT1AyX01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQpc3JjLCBiYXNlLCBpbmRleCwg
c2NhbGUsIG9mZnNldCk7CiAgICAgfQorCisgICAgdm9pZCBtb3Zzc19ybShYTU1SZWdpc3RlcklE
IHNyYywgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlKQorICAgIHsKKyAgICAgICAgbV9mb3Jt
YXR0ZXIucHJlZml4KFBSRV9TU0VfRjMpOworICAgICAgICBtX2Zvcm1hdHRlci50d29CeXRlT3Ao
T1AyX01PVlNEX1dzZFZzZCwgKFJlZ2lzdGVySUQpc3JjLCBiYXNlLCBvZmZzZXQpOworICAgIH0K
ICAgICAKICAgICB2b2lkIG1vdnNzX3JtKFhNTVJlZ2lzdGVySUQgc3JjLCBpbnQgb2Zmc2V0LCBS
ZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSkKICAgICB7CkBAIC0y
MDY5LDcgKzIwODcsMTMgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJF
X1NTRV9GMik7CiAgICAgICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNkV3Nk
LCBkc3QsIGJhc2UsIGluZGV4LCBzY2FsZSwgb2Zmc2V0KTsKICAgICB9Ci0gICAgCisKKyAgICB2
b2lkIG1vdnNzX21yKGludCBvZmZzZXQsIFJlZ2lzdGVySUQgYmFzZSwgWE1NUmVnaXN0ZXJJRCBk
c3QpCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnR3b0J5dGVPcChPUDJfTU9WU0RfVnNkV3NkLCAoUmVnaXN0ZXJJRClk
c3QsIGJhc2UsIG9mZnNldCk7CisgICAgfQorCiAgICAgdm9pZCBtb3Zzc19tcihpbnQgb2Zmc2V0
LCBSZWdpc3RlcklEIGJhc2UsIFJlZ2lzdGVySUQgaW5kZXgsIGludCBzY2FsZSwgWE1NUmVnaXN0
ZXJJRCBkc3QpCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci5wcmVmaXgoUFJFX1NTRV9GMyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDBmYWJlNDlh
N2RjYmY2ZDg0ZmI5NGY3MjQwNjNjNWU0MDk5NDEwNDcuLmIyN2U1NWM1MGQwYmM5YjkyODYwNjZi
ZjI1ZDQ3MzkxZDY3MzllZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCkBAIC00NzUsNyArNDc1LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIEJ5IGNvbnZlbnRp
b24sIHdlIHVzZSBPb3BzIHRvIG1lYW4gIkkgZG9uJ3Qga25vdyIuCiAgICAgQWlyOjpPcGNvZGUg
dHJ5T3Bjb2RlRm9yVHlwZSgKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bj
b2RlIG9wY29kZTY0LCBBaXI6Ok9wY29kZSBvcGNvZGVEb3VibGUsIFR5cGUgdHlwZSkKKyAgICAg
ICAgQWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9wY29k
ZSBvcGNvZGVEb3VibGUsIEFpcjo6T3Bjb2RlIG9wY29kZUZsb2F0LCBUeXBlIHR5cGUpCiAgICAg
ewogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGU7CiAgICAgICAgIHN3aXRjaCAodHlwZSkgewpA
QCAtNDg1LDYgKzQ4NSw5IEBAIHByaXZhdGU6CiAgICAgICAgIGNhc2UgSW50NjQ6CiAgICAgICAg
ICAgICBvcGNvZGUgPSBvcGNvZGU2NDsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
IEZsb2F0OgorICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRmxvYXQ7CisgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBEb3VibGU6CiAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVE
b3VibGU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTQ5NiwxOCArNDk5LDI4IEBAIHByaXZhdGU6
CiAgICAgICAgIHJldHVybiBvcGNvZGU7CiAgICAgfQogCisgICAgQWlyOjpPcGNvZGUgdHJ5T3Bj
b2RlRm9yVHlwZShBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIFR5
cGUgdHlwZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMy
LCBvcGNvZGU2NCwgQWlyOjpPb3BzLCBBaXI6Ok9vcHMsIHR5cGUpOworICAgIH0KKwogICAgIEFp
cjo6T3Bjb2RlIG9wY29kZUZvclR5cGUoCi0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBB
aXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91YmxlLCBUeXBlIHR5cGUp
CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWly
OjpPcGNvZGUgb3Bjb2RlRG91YmxlLCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCwgVHlwZSB0eXBl
KQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShv
cGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgdHlwZSk7CisgICAgICAgIEFpcjo6T3Bj
b2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBvcGNvZGVE
b3VibGUsIG9wY29kZUZsb2F0LCB0eXBlKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQob3Bjb2Rl
ICE9IEFpcjo6T29wcyk7CiAgICAgICAgIHJldHVybiBvcGNvZGU7CiAgICAgfQogCi0gICAgdGVt
cGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFpcjo6T3Bjb2RlIG9wY29kZTY0LCBBaXI6Ok9w
Y29kZSBvcGNvZGVEb3VibGU+CisgICAgQWlyOjpPcGNvZGUgb3Bjb2RlRm9yVHlwZShBaXI6Ok9w
Y29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQsIFR5cGUgdHlwZSkKKyAgICB7Cisg
ICAgICAgIHJldHVybiB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgQWlyOjpP
b3BzLCBBaXI6Ok9vcHMsIHR5cGUpOworICAgIH0KKworICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2Rl
IG9wY29kZTMyLCBBaXI6Ok9wY29kZSBvcGNvZGU2NCwgQWlyOjpPcGNvZGUgb3Bjb2RlRG91Ymxl
LCBBaXI6Ok9wY29kZSBvcGNvZGVGbG9hdCA9IEFpcjo6T29wcz4KICAgICB2b2lkIGFwcGVuZFVu
T3AoVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gb3Bj
b2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIG9wY29kZURvdWJsZSwgdmFsdWUtPnR5cGUo
KSk7CisgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUob3Bjb2RlMzIs
IG9wY29kZTY0LCBvcGNvZGVEb3VibGUsIG9wY29kZUZsb2F0LCB2YWx1ZS0+dHlwZSgpKTsKICAg
ICAgICAgCiAgICAgICAgIFRtcCByZXN1bHQgPSB0bXAobV92YWx1ZSk7CiAKQEAgLTU2Nyw3ICs1
ODAsNyBAQCBwcml2YXRlOgogICAgICAgICBDb21tdXRhdGl2aXR5IGNvbW11dGF0aXZpdHkgPSBO
b3RDb21tdXRhdGl2ZT4KICAgICB2b2lkIGFwcGVuZEJpbk9wKFZhbHVlKiBsZWZ0LCBWYWx1ZSog
cmlnaHQpCiAgICAgewotICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBl
KG9wY29kZTMyLCBvcGNvZGU2NCwgb3Bjb2RlRG91YmxlLCBsZWZ0LT50eXBlKCkpOworICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwg
b3Bjb2RlRG91YmxlLCBBaXI6Ok9vcHMsIGxlZnQtPnR5cGUoKSk7CiAgICAgICAgIAogICAgICAg
ICBUbXAgcmVzdWx0ID0gdG1wKG1fdmFsdWUpOwogICAgICAgICAKQEAgLTY0OCw3ICs2NjEsNyBA
QCBwcml2YXRlOgogICAgIHRlbXBsYXRlPEFpcjo6T3Bjb2RlIG9wY29kZTMyLCBBaXI6Ok9wY29k
ZSBvcGNvZGU2ND4KICAgICB2b2lkIGFwcGVuZFNoaWZ0KFZhbHVlKiB2YWx1ZSwgVmFsdWUqIGFt
b3VudCkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IG9wY29kZUZvclR5cGUo
b3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIHZhbHVlLT50eXBlKCkpOworICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2NCwgdmFs
dWUtPnR5cGUoKSk7CiAgICAgICAgIAogICAgICAgICBpZiAoaW1tKGFtb3VudCkpIHsKICAgICAg
ICAgICAgIGFwcGVuZChNb3ZlLCB0bXAodmFsdWUpLCB0bXAobV92YWx1ZSkpOwpAQCAtNjY0LDcg
KzY3Nyw3IEBAIHByaXZhdGU6CiAgICAgdGVtcGxhdGU8QWlyOjpPcGNvZGUgb3Bjb2RlMzIsIEFp
cjo6T3Bjb2RlIG9wY29kZTY0PgogICAgIGJvb2wgdHJ5QXBwZW5kU3RvcmVVbk9wKFZhbHVlKiB2
YWx1ZSkKICAgICB7Ci0gICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHRyeU9wY29kZUZvclR5
cGUob3Bjb2RlMzIsIG9wY29kZTY0LCBBaXI6Ok9vcHMsIHZhbHVlLT50eXBlKCkpOworICAgICAg
ICBBaXI6Ok9wY29kZSBvcGNvZGUgPSB0cnlPcGNvZGVGb3JUeXBlKG9wY29kZTMyLCBvcGNvZGU2
NCwgdmFsdWUtPnR5cGUoKSk7CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAKQEAgLTY4Nyw3ICs3MDAsNyBAQCBwcml2
YXRlOgogICAgICAgICBBaXI6Ok9wY29kZSBvcGNvZGUzMiwgQWlyOjpPcGNvZGUgb3Bjb2RlNjQs
IENvbW11dGF0aXZpdHkgY29tbXV0YXRpdml0eSA9IE5vdENvbW11dGF0aXZlPgogICAgIGJvb2wg
dHJ5QXBwZW5kU3RvcmVCaW5PcChWYWx1ZSogbGVmdCwgVmFsdWUqIHJpZ2h0KQogICAgIHsKLSAg
ICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bj
b2RlNjQsIEFpcjo6T29wcywgbGVmdC0+dHlwZSgpKTsKKyAgICAgICAgQWlyOjpPcGNvZGUgb3Bj
b2RlID0gdHJ5T3Bjb2RlRm9yVHlwZShvcGNvZGUzMiwgb3Bjb2RlNjQsIGxlZnQtPnR5cGUoKSk7
CiAgICAgICAgIGlmIChvcGNvZGUgPT0gQWlyOjpPb3BzKQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgICAgICAKQEAgLTc0NiwxMSArNzU5LDE1IEBAIHByaXZhdGU6CiAgICAgICAgIGNh
c2UgSW50NjQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChpczY0Qml0KCkpOwogICAgICAg
ICAgICAgcmV0dXJuIE1vdmU7CisgICAgICAgIGNhc2UgRmxvYXQ6CisgICAgICAgICAgICByZXR1
cm4gTW92ZUZsb2F0OwogICAgICAgICBjYXNlIERvdWJsZToKICAgICAgICAgICAgIHJldHVybiBN
b3ZlRG91YmxlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAg
cmV0dXJuIEFpcjo6T29wczsKICAgICB9CiAKICAgICBBaXI6Ok9wY29kZSByZWxheGVkTW92ZUZv
clR5cGUoVHlwZSB0eXBlKQpAQCAtNzU5LDExICs3NzYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAg
Y2FzZSBJbnQzMjoKICAgICAgICAgY2FzZSBJbnQ2NDoKICAgICAgICAgICAgIHJldHVybiBNb3Zl
OworICAgICAgICBjYXNlIEZsb2F0OgogICAgICAgICBjYXNlIERvdWJsZToKICAgICAgICAgICAg
IHJldHVybiBNb3ZlRG91YmxlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgY2FzZSBWb2lkOgorICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgcmV0dXJuIEFpcjo6T29wczsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZS4uLiBBcmd1bWVudHM+CkBAIC0xNDQ2LDcgKzE0NjYsNyBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIG1ha2VzIHNlbnNlIG9uIFg4Ni4gSSBkb24ndCBr
bm93IGlmIGl0IG1ha2VzIHNlbnNlIGFueXdoZXJlIGVsc2UuCiAgICAgICAgICAgICAgICAgYXBw
ZW5kKE1vdmUsIHRtcChtX3ZhbHVlLT5jaGlsZCgwKSksIHRtcChtX3ZhbHVlKSk7CiAgICAgICAg
ICAgICAgICAgYXBwZW5kKAotICAgICAgICAgICAgICAgICAgICBvcGNvZGVGb3JUeXBlKEFkZDMy
LCBBZGQ2NCwgQWlyOjpPb3BzLCBtX3ZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpKSwKKyAgICAgICAg
ICAgICAgICAgICAgb3Bjb2RlRm9yVHlwZShBZGQzMiwgQWRkNjQsIG1fdmFsdWUtPmNoaWxkKDAp
LT50eXBlKCkpLAogICAgICAgICAgICAgICAgICAgICB0bXAobV92YWx1ZSksIHRtcChtX3ZhbHVl
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpAQCAtMTU0Miw2ICsx
NTYyLDE2IEBAIHByaXZhdGU6CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAg
ICAgICBjYXNlIEZsb2F0VG9Eb3VibGU6IHsKKyAgICAgICAgICAgIGFwcGVuZFVuT3A8QWlyOjpP
b3BzLCBBaXI6Ok9vcHMsIEFpcjo6T29wcywgQ29udmVydEZsb2F0VG9Eb3VibGU+KG1fdmFsdWUt
PmNoaWxkKDApKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGNh
c2UgRG91YmxlVG9GbG9hdDogeworICAgICAgICAgICAgYXBwZW5kVW5PcDxBaXI6Ok9vcHMsIEFp
cjo6T29wcywgQ29udmVydERvdWJsZVRvRmxvYXQ+KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIGNhc2UgQXJndW1lbnRSZWc6IHsK
ICAgICAgICAgICAgIG1fcHJvbG9ndWUuYXBwZW5kKEluc3QoCiAgICAgICAgICAgICAgICAgbW92
ZUZvclR5cGUobV92YWx1ZS0+dHlwZSgpKSwgbV92YWx1ZSwKQEAgLTE2ODYsNiArMTcxNiw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBjYXNlIEludDY0OgogICAgICAgICAgICAgICAgIGFwcGVu
ZChNb3ZlLCBUbXAoR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpLCB0bXAoY0NhbGwpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmxvYXQ6CiAgICAgICAgICAgICBj
YXNlIERvdWJsZToKICAgICAgICAgICAgICAgICBhcHBlbmQoTW92ZURvdWJsZSwgVG1wKEZQUklu
Zm86OnJldHVyblZhbHVlRlBSKSwgdG1wKGNDYWxsKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CkBAIC0xNzUwLDcgKzE3ODEsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGFwcGVuZChN
b3ZlLCB0bXAocmlnaHQpLCByZXN1bHQpOwogCiAgICAgICAgICAgICAgICAgQWlyOjpPcGNvZGUg
b3Bjb2RlID0KLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlRm9yVHlwZShCcmFuY2hOZWczMiwg
QnJhbmNoTmVnNjQsIEFpcjo6T29wcywgY2hlY2tWYWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAg
ICAgICAgICAgb3Bjb2RlRm9yVHlwZShCcmFuY2hOZWczMiwgQnJhbmNoTmVnNjQsIGNoZWNrVmFs
dWUtPnR5cGUoKSk7CiAgICAgICAgICAgICAgICAgQ2hlY2tTcGVjaWFsKiBzcGVjaWFsID0gZW5z
dXJlQ2hlY2tTcGVjaWFsKG9wY29kZSwgMik7CiAKICAgICAgICAgICAgICAgICBJbnN0IGluc3Qo
UGF0Y2gsIGNoZWNrVmFsdWUsIEFyZzo6c3BlY2lhbChzcGVjaWFsKSk7CkBAIC0xNzY4LDE0ICsx
Nzk5LDE0IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBTdGFja21hcFNwZWNpYWw6OlJvbGVNb2Rl
IHN0YWNrbWFwUm9sZSA9IFN0YWNrbWFwU3BlY2lhbDo6U2FtZUFzUmVwOwogICAgICAgICAgICAg
c3dpdGNoIChtX3ZhbHVlLT5vcGNvZGUoKSkgewogICAgICAgICAgICAgY2FzZSBDaGVja0FkZDoK
LSAgICAgICAgICAgICAgICBvcGNvZGUgPSBvcGNvZGVGb3JUeXBlKEJyYW5jaEFkZDMyLCBCcmFu
Y2hBZGQ2NCwgQWlyOjpPb3BzLCBtX3ZhbHVlLT50eXBlKCkpOworICAgICAgICAgICAgICAgIG9w
Y29kZSA9IG9wY29kZUZvclR5cGUoQnJhbmNoQWRkMzIsIEJyYW5jaEFkZDY0LCBtX3ZhbHVlLT50
eXBlKCkpOwogICAgICAgICAgICAgICAgIGNvbW11dGF0aXZpdHkgPSBDb21tdXRhdGl2ZTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ2hlY2tTdWI6Ci0gICAgICAg
ICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hTdWIzMiwgQnJhbmNoU3ViNjQs
IEFpcjo6T29wcywgbV92YWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBvcGNvZGUgPSBv
cGNvZGVGb3JUeXBlKEJyYW5jaFN1YjMyLCBCcmFuY2hTdWI2NCwgbV92YWx1ZS0+dHlwZSgpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ2hlY2tNdWw6Ci0gICAg
ICAgICAgICAgICAgb3Bjb2RlID0gb3Bjb2RlRm9yVHlwZShCcmFuY2hNdWwzMiwgQnJhbmNoTXVs
NjQsIEFpcjo6T29wcywgY2hlY2tWYWx1ZS0+dHlwZSgpKTsKKyAgICAgICAgICAgICAgICBvcGNv
ZGUgPSBvcGNvZGVGb3JUeXBlKEJyYW5jaE11bDMyLCBCcmFuY2hNdWw2NCwgY2hlY2tWYWx1ZS0+
dHlwZSgpKTsKICAgICAgICAgICAgICAgICBzdGFja21hcFJvbGUgPSBTdGFja21hcFNwZWNpYWw6
OkZvcmNlTGF0ZVVzZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1
bHQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5jcHAKaW5kZXggZmE1
NjIyNTIzODc5YWY0N2NjM2VmYmUzNWU3YmVlNWQzMGVlYmJkNC4uZTA0ODFjNjE2NmU3ODQ4NDk3
NGNkODJiM2M1ZDc2ZWViNjg0YTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzTWVtb3J5VmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM01l
bW9yeVZhbHVlLmNwcApAQCAtNDUsOSArNDUsNiBAQCBzaXplX3QgTWVtb3J5VmFsdWU6OmFjY2Vz
c0J5dGVTaXplKCkgY29uc3QKICAgICBjYXNlIExvYWQxNlM6CiAgICAgY2FzZSBTdG9yZTE2Ogog
ICAgICAgICByZXR1cm4gMjsKLSAgICBjYXNlIExvYWRGbG9hdDoKLSAgICBjYXNlIFN0b3JlRmxv
YXQ6Ci0gICAgICAgIHJldHVybiA0OwogICAgIGNhc2UgTG9hZDoKICAgICAgICAgcmV0dXJuIHNp
emVvZlR5cGUodHlwZSgpKTsKICAgICBjYXNlIFN0b3JlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM01lbW9yeVZhbHVlLmgKaW5kZXggZTJhMTA0YzM1NGNkNGIyZjJiNDhmNjNmOGNkNjY3MDBh
MTU0NmJjNS4uYTk2NDhlOWNhNTQzYTNjZDA1NjY0MmUzZjY4NjY4MmFjOWJkNDU2OCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTWVtb3J5VmFsdWUuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNNZW1vcnlWYWx1ZS5oCkBAIC00MiwxMSArNDIsOSBAQCBw
dWJsaWM6CiAgICAgICAgIGNhc2UgTG9hZDhTOgogICAgICAgICBjYXNlIExvYWQxNlo6CiAgICAg
ICAgIGNhc2UgTG9hZDE2UzoKLSAgICAgICAgY2FzZSBMb2FkRmxvYXQ6CiAgICAgICAgIGNhc2Ug
TG9hZDoKICAgICAgICAgY2FzZSBTdG9yZTg6CiAgICAgICAgIGNhc2UgU3RvcmUxNjoKLSAgICAg
ICAgY2FzZSBTdG9yZUZsb2F0OgogICAgICAgICBjYXNlIFN0b3JlOgogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAgICAgICAgIGRlZmF1bHQ6CkBAIC04OSwxMiArODcsOCBAQCBwcml2YXRlOgog
ICAgICAgICAgICAgY2FzZSBMb2FkMTZTOgogICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09
IEludDMyKTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgTG9hZEZs
b2F0OgotICAgICAgICAgICAgICAgIEFTU0VSVCh0eXBlID09IERvdWJsZSk7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFN0b3JlODoKICAgICAgICAgICAgIGNhc2Ug
U3RvcmUxNjoKLSAgICAgICAgICAgIGNhc2UgU3RvcmVGbG9hdDoKICAgICAgICAgICAgIGNhc2Ug
U3RvcmU6CiAgICAgICAgICAgICAgICAgQVNTRVJUKHR5cGUgPT0gVm9pZCk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0xMDYsNyArMTAwLDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIFVzZSB0
aGlzIGZvcm0gZm9yIGxvYWRzIHdoZXJlIHRoZSByZXR1cm4gdHlwZSBpcyBpbXBsaWVkLgogICAg
IE1lbW9yeVZhbHVlKHVuc2lnbmVkIGluZGV4LCBPcGNvZGUgb3Bjb2RlLCBPcmlnaW4gb3JpZ2lu
LCBWYWx1ZSogcG9pbnRlciwgaW50MzJfdCBvZmZzZXQgPSAwKQotICAgICAgICA6IE1lbW9yeVZh
bHVlKGluZGV4LCBvcGNvZGUsIG9wY29kZSA9PSBMb2FkRmxvYXQgPyBEb3VibGUgOiBJbnQzMiwg
b3JpZ2luLCBwb2ludGVyLCBvZmZzZXQpCisgICAgICAgIDogTWVtb3J5VmFsdWUoaW5kZXgsIG9w
Y29kZSwgSW50MzIsIG9yaWdpbiwgcG9pbnRlciwgb2Zmc2V0KQogICAgIHsKICAgICB9CiAKQEAg
LTEyMiw3ICsxMTYsNiBAQCBwcml2YXRlOgogICAgICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsK
ICAgICAgICAgICAgIGNhc2UgU3RvcmU4OgogICAgICAgICAgICAgY2FzZSBTdG9yZTE2OgotICAg
ICAgICAgICAgY2FzZSBTdG9yZUZsb2F0OgogICAgICAgICAgICAgY2FzZSBTdG9yZToKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmNwcAppbmRleCBlMTViYjhhMTcxMGIyMjExNTA2NTc1NDNkZTI3YzI0NGFm
MDAyYTFkLi5hODMwNThhMGNmNzNiNGQ3ODY1NGJmODkzZGRjZjA5ODY0MmU3NWZmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNPcGNvZGUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5jcHAKQEAgLTE2MSwxNSArMTYxLDE4IEBAIHZvaWQg
cHJpbnRJbnRlcm5hbChQcmludFN0cmVhbSYgb3V0LCBPcGNvZGUgb3Bjb2RlKQogICAgIGNhc2Ug
VHJ1bmM6CiAgICAgICAgIG91dC5wcmludCgiVHJ1bmMiKTsKICAgICAgICAgcmV0dXJuOwotICAg
IGNhc2UgRlJvdW5kOgotICAgICAgICBvdXQucHJpbnQoIkZSb3VuZCIpOwotICAgICAgICByZXR1
cm47CiAgICAgY2FzZSBJVG9EOgogICAgICAgICBvdXQucHJpbnQoIklUb0QiKTsKICAgICAgICAg
cmV0dXJuOwogICAgIGNhc2UgRFRvSTMyOgogICAgICAgICBvdXQucHJpbnQoIkRUb0kzMiIpOwog
ICAgICAgICByZXR1cm47CisgICAgY2FzZSBGbG9hdFRvRG91YmxlOgorICAgICAgICBvdXQucHJp
bnQoIkZsb2F0VG9Eb3VibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgRG91YmxlVG9G
bG9hdDoKKyAgICAgICAgb3V0LnByaW50KCJEb3VibGVUb0Zsb2F0Iik7CisgICAgICAgIHJldHVy
bjsKICAgICBjYXNlIEVxdWFsOgogICAgICAgICBvdXQucHJpbnQoIkVxdWFsIik7CiAgICAgICAg
IHJldHVybjsKQEAgLTIxNSw5ICsyMTgsNiBAQCB2b2lkIHByaW50SW50ZXJuYWwoUHJpbnRTdHJl
YW0mIG91dCwgT3Bjb2RlIG9wY29kZSkKICAgICBjYXNlIExvYWQxNlM6CiAgICAgICAgIG91dC5w
cmludCgiTG9hZDE2UyIpOwogICAgICAgICByZXR1cm47Ci0gICAgY2FzZSBMb2FkRmxvYXQ6Ci0g
ICAgICAgIG91dC5wcmludCgiTG9hZEZsb2F0Iik7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNl
IExvYWQ6CiAgICAgICAgIG91dC5wcmludCgiTG9hZCIpOwogICAgICAgICByZXR1cm47CkBAIC0y
MjcsOSArMjI3LDYgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIE9wY29k
ZSBvcGNvZGUpCiAgICAgY2FzZSBTdG9yZTE2OgogICAgICAgICBvdXQucHJpbnQoIlN0b3JlMTYi
KTsKICAgICAgICAgcmV0dXJuOwotICAgIGNhc2UgU3RvcmVGbG9hdDoKLSAgICAgICAgb3V0LnBy
aW50KCJTdG9yZUZsb2F0Iik7Ci0gICAgICAgIHJldHVybjsKICAgICBjYXNlIFN0b3JlOgogICAg
ICAgICBvdXQucHJpbnQoIlN0b3JlIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM09wY29kZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzT3Bjb2RlLmgKaW5kZXggZjBmM2FiOGJjMGM5ZWVkNTNiYjc3NTgzOTI5MTlhZWNlODg4
NTE3OS4uNThmMzM0ZTkwZjRkNGVlODk3Mzg0YmM1NWVhYjU0NjJiNmNiOTU3OCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzT3Bjb2RlLmgKQEAgLTk2LDEyICs5NiwxMyBAQCBlbnVtIE9wY29kZSA6
IGludDE2X3QgewogICAgIFpFeHQzMiwKICAgICAvLyBUYWtlcyBJbnQ2NCBhbmQgcmV0dXJucyBJ
bnQzMjoKICAgICBUcnVuYywKLSAgICAvLyBUYWtlcyBhbmQgcmV0dXJucyBEb3VibGU6Ci0gICAg
RlJvdW5kLAogICAgIC8vIFRha2VzIGludHMgYW5kIHJldHVybnMgRG91YmxlOgogICAgIElUb0Qs
CiAgICAgLy8gVGFrZXMgRG91YmxlIGFuZCByZXR1cm5zIEludDMyOgogICAgIERUb0kzMiwKKyAg
ICAvLyBDb252ZXJ0IGJldHdlZW4gZG91YmxlIGFuZCBmbG9hdC4KKyAgICBGbG9hdFRvRG91Ymxl
LAorICAgIERvdWJsZVRvRmxvYXQsCiAKICAgICAvLyBQb2x5bW9ycGhpYyBjb21wYXJpc29ucywg
dXNhYmxlIHdpdGggYW55IHZhbHVlIHR5cGUuIFJldHVybnMgaW50MzIgMCBvciAxLiBOb3RlIHRo
YXQgIk5vdCIKICAgICAvLyBpcyBqdXN0IEVxdWFsKHgsIDApLCBhbmQgIlRvQm9vbGVhbiIgaXMg
anVzdCBOb3RFcXVhbCh4LCAwKS4KQEAgLTEyOCw4ICsxMjksNiBAQCBlbnVtIE9wY29kZSA6IGlu
dDE2X3QgewogICAgIExvYWQ4UywKICAgICBMb2FkMTZaLAogICAgIExvYWQxNlMsCi0gICAgLy8g
VGhpcyByZXR1cm5zIERvdWJsZToKLSAgICBMb2FkRmxvYXQsCiAgICAgLy8gVGhpcyByZXR1cm5z
IHdoYXRldmVyIHRoZSByZXR1cm4gdHlwZSBpczoKICAgICBMb2FkLAogCkBAIC0xMzcsOSArMTM2
LDcgQEAgZW51bSBPcGNvZGUgOiBpbnQxNl90IHsKICAgICAvLyBUaGVzZSB0YWtlIGFuIEludDMy
IHZhbHVlOgogICAgIFN0b3JlOCwKICAgICBTdG9yZTE2LAotICAgIC8vIFRoaXMgdGFrZXMgYSBE
b3VibGUgdmFsdWU6Ci0gICAgU3RvcmVGbG9hdCwKLSAgICAvLyBUaGlzIGlzIGEgcG9seW1vcnBo
aWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgYW5kIERvdWJsZToKKyAgICAvLyBUaGlzIGlzIGEg
cG9seW1vcnBoaWMgc3RvcmUgZm9yIEludDMyLCBJbnQ2NCwgRmxvYXQsIGFuZCBEb3VibGUuCiAg
ICAgU3RvcmUsCiAKICAgICAvLyBUaGlzIGlzIGEgcmVndWxhciBvcmRpbmFyeSBDIGZ1bmN0aW9u
IGNhbGwsIHVzaW5nIHRoZSBzeXN0ZW0gQyBjYWxsaW5nIGNvbnZlbnRpb24uIE1ha2Ugc3VyZQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IDhj
Mjc2NGYwYjRjZDVjNjFmYmQzNTZhOTEzNzVlNDEwYmZjMmFkMDYuLmJiZTA0OGY1YmU3NDhiYzRl
NzhhMzI3MTA0NGEyMWY2Zjg0MDUzMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTU0MSw2ICs1NDEsMTYgQEAgcHJpdmF0ZToKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgRG91YmxlVG9GbG9h
dDoKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogRG91YmxlVG9GbG9hdChGbG9hdFRvRG91Ymxl
KHZhbHVlKSkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogdmFsdWUKKyAgICAgICAgICAgIGlm
IChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gRmxvYXRUb0RvdWJsZSkgeworICAgICAg
ICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobV92YWx1ZS0+Y2hpbGQoMCkt
PmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKICAgICAg
ICAgY2FzZSBTZWxlY3Q6CiAgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IFNlbGVjdChjb25zdGFu
dCwgYSwgYikKICAgICAgICAgICAgIC8vIEludG8gdGhpczogY29uc3RhbnQgPyBhIDogYgpAQCAt
NTk1LDExICs2MDUsOSBAQCBwcml2YXRlOgogICAgICAgICBjYXNlIExvYWQ4UzoKICAgICAgICAg
Y2FzZSBMb2FkMTZaOgogICAgICAgICBjYXNlIExvYWQxNlM6Ci0gICAgICAgIGNhc2UgTG9hZEZs
b2F0OgogICAgICAgICBjYXNlIExvYWQ6CiAgICAgICAgIGNhc2UgU3RvcmU4OgogICAgICAgICBj
YXNlIFN0b3JlMTY6Ci0gICAgICAgIGNhc2UgU3RvcmVGbG9hdDoKICAgICAgICAgY2FzZSBTdG9y
ZTogewogICAgICAgICAgICAgVmFsdWUqIGFkZHJlc3MgPSBtX3ZhbHVlLT5sYXN0Q2hpbGQoKTsK
ICAgICAgICAgICAgIE1lbW9yeVZhbHVlKiBtZW1vcnkgPSBtX3ZhbHVlLT5hczxNZW1vcnlWYWx1
ZT4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1R5cGUuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAKaW5kZXggMDIzNWFhNDcyMDQzYTk3
MTdjNDU2ZDlhYzMwNTNjMzM0N2E3MDE5My4uMDA1N2VhZjYxN2UwZDQ3YTQyZDg3M2FmYjVmNzFi
MzBmYzE0ZGMwMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5jcHAKQEAgLTQ2LDYgKzQ2
LDkgQEAgdm9pZCBwcmludEludGVybmFsKFByaW50U3RyZWFtJiBvdXQsIFR5cGUgdHlwZSkKICAg
ICBjYXNlIEludDY0OgogICAgICAgICBvdXQucHJpbnQoIkludDY0Iik7CiAgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIEZsb2F0OgorICAgICAgICBvdXQucHJpbnQoIkZsb2F0Iik7CisgICAgICAg
IHJldHVybjsKICAgICBjYXNlIERvdWJsZToKICAgICAgICAgb3V0LnByaW50KCJEb3VibGUiKTsK
ICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0Iz
VHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVHlwZS5oCmluZGV4IGY5YTNhZTBm
ZmQ4YzBkYzNiN2VlNTVkYjI1ZWFhYTJjZWNkZTA2YWMuLmRkZTQxNDFmY2Y5NmE2NjkzMDcxYmJj
YjJkOGVjZmI5MDhhMDE1NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNUeXBlLmgKQEAgLTM3LDYg
KzM3LDcgQEAgZW51bSBUeXBlIDogaW50OF90IHsKICAgICBWb2lkLAogICAgIEludDMyLAogICAg
IEludDY0LAorICAgIEZsb2F0LAogICAgIERvdWJsZQogfTsKIApAQCAtNDcsNyArNDgsNyBAQCBp
bmxpbmUgYm9vbCBpc0ludChUeXBlIHR5cGUpCiAKIGlubGluZSBib29sIGlzRmxvYXQoVHlwZSB0
eXBlKQogewotICAgIHJldHVybiB0eXBlID09IERvdWJsZTsKKyAgICByZXR1cm4gdHlwZSA9PSBG
bG9hdCB8fCB0eXBlID09IERvdWJsZTsKIH0KIAogaW5saW5lIFR5cGUgcG9pbnRlclR5cGUoKQpA
QCAtNjMsNiArNjQsNyBAQCBpbmxpbmUgc2l6ZV90IHNpemVvZlR5cGUoVHlwZSB0eXBlKQogICAg
IGNhc2UgVm9pZDoKICAgICAgICAgcmV0dXJuIDA7CiAgICAgY2FzZSBJbnQzMjoKKyAgICBjYXNl
IEZsb2F0OgogICAgICAgICByZXR1cm4gNDsKICAgICBjYXNlIEludDY0OgogICAgIGNhc2UgRG91
YmxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsaWRhdGUuY3BwCmluZGV4IDEwNjQxYTA2
MmZhYmEwNTEwYzM3OWM5Y2JmNDRjNTg5YWY4M2YyM2QuLjdkNmZjOTA4Mjk2YWIyZTMzYzdiYWNm
ZGE4ZDMyM2E2NDYyMmNhMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbGlkYXRlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWxpZGF0ZS5j
cHAKQEAgLTE1Miw2ICsxNTIsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUo
dmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAg
ICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpLCAo
IkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkg
PT0gdmFsdWUtPmNoaWxkKDEpLT50eXBlKCksICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSAhPSBGbG9hdCwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpICE9IFZvaWQsICgiQXQgIiwg
KnZhbHVlKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENoaWxs
RGl2OgpAQCAtMjAzLDcgKzIwNCw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFU
RSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIsICp2YWx1ZSkpOwogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTcXJ0OgotICAgICAgICAgICAgY2FzZSBGUm91
bmQ6CiAgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwg
KCJBdCAiLCAqdmFsdWUpKTsKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MCktPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAgICAg
VkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CkBAIC0y
MTgsNiArMjE4LDE2IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+
Y2hpbGQoMCktPnR5cGUoKSA9PSBEb3VibGUsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAg
ICAgICAgVkFMSURBVEUodmFsdWUtPnR5cGUoKSA9PSBJbnQzMiwgKCJBdCAiLCAqdmFsdWUpKTsK
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRmxvYXRUb0RvdWJsZToK
KyAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAxLCAoIkF0
ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+
dHlwZSgpID09IEZsb2F0LCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElE
QVRFKHZhbHVlLT50eXBlKCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgorICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVl
KSk7CisgICAgICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0g
RG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOworICAgICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVl
LT50eXBlKCkgPT0gRmxvYXQsICgiQXQgIiwgKnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICBjYXNlIEVxdWFsOgogICAgICAgICAgICAgY2FzZSBOb3RFcXVhbDoK
ICAgICAgICAgICAgIGNhc2UgTGVzc1RoYW46CkBAIC0yNTIsMTIgKzI2Miw2IEBAIHB1YmxpYzoK
ICAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+dHlwZSgpID09IEludDMyLCAoIkF0ICIs
ICp2YWx1ZSkpOwogICAgICAgICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMb2FkRmxvYXQ6Ci0gICAg
ICAgICAgICAgICAgVkFMSURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMSwgKCJBdCAiLCAq
dmFsdWUpKTsKLSAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMCktPnR5cGUo
KSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAgICAgICAgIFZB
TElEQVRFKHZhbHVlLT50eXBlKCkgPT0gRG91YmxlLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAg
ICAgICAgICAgIHZhbGlkYXRlU3RhY2tBY2Nlc3ModmFsdWUpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBMb2FkOgogICAgICAgICAgICAgICAgIFZBTElEQVRFKHZh
bHVlLT5udW1DaGlsZHJlbigpID09IDEsICgiQXQgIiwgKnZhbHVlKSk7CiAgICAgICAgICAgICAg
ICAgVkFMSURBVEUodmFsdWUtPmNoaWxkKDApLT50eXBlKCkgPT0gcG9pbnRlclR5cGUoKSwgKCJB
dCAiLCAqdmFsdWUpKTsKQEAgLTI3MiwxMyArMjc2LDYgQEAgcHVibGljOgogICAgICAgICAgICAg
ICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsKICAg
ICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU3RvcmVGbG9hdDoKLSAgICAgICAgICAgICAgICBW
QUxJREFURSh2YWx1ZS0+bnVtQ2hpbGRyZW4oKSA9PSAyLCAoIkF0ICIsICp2YWx1ZSkpOwotICAg
ICAgICAgICAgICAgIFZBTElEQVRFKHZhbHVlLT5jaGlsZCgwKS0+dHlwZSgpID09IERvdWJsZSwg
KCJBdCAiLCAqdmFsdWUpKTsKLSAgICAgICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQo
MSktPnR5cGUoKSA9PSBwb2ludGVyVHlwZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwotICAgICAgICAg
ICAgICAgIFZBTElEQVRFKHZhbHVlLT50eXBlKCkgPT0gVm9pZCwgKCJBdCAiLCAqdmFsdWUpKTsK
LSAgICAgICAgICAgICAgICB2YWxpZGF0ZVN0YWNrQWNjZXNzKHZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU3RvcmU6CiAgICAgICAgICAgICAgICAgVkFM
SURBVEUodmFsdWUtPm51bUNoaWxkcmVuKCkgPT0gMiwgKCJBdCAiLCAqdmFsdWUpKTsKICAgICAg
ICAgICAgICAgICBWQUxJREFURSh2YWx1ZS0+Y2hpbGQoMSktPnR5cGUoKSA9PSBwb2ludGVyVHlw
ZSgpLCAoIkF0ICIsICp2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCmlu
ZGV4IDc2NjkzZDYyODI5MDE1ZTM3MzE5NTc0ZDc1MDQ0YzJlMThiMDY5ZmYuLjYyZjQxM2M3OWJi
ODk1N2FiODRhMDJjNjRmNGE5NzhlM2MwNGRhYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNW
YWx1ZS5jcHAKQEAgLTMzNCw5ICszMzQsMTAgQEAgRWZmZWN0cyBWYWx1ZTo6ZWZmZWN0cygpIGNv
bnN0CiAgICAgY2FzZSBTRXh0MzI6CiAgICAgY2FzZSBaRXh0MzI6CiAgICAgY2FzZSBUcnVuYzoK
LSAgICBjYXNlIEZSb3VuZDoKICAgICBjYXNlIElUb0Q6CiAgICAgY2FzZSBEVG9JMzI6CisgICAg
Y2FzZSBGbG9hdFRvRG91YmxlOgorICAgIGNhc2UgRG91YmxlVG9GbG9hdDoKICAgICBjYXNlIEVx
dWFsOgogICAgIGNhc2UgTm90RXF1YWw6CiAgICAgY2FzZSBMZXNzVGhhbjoKQEAgLTM1NiwxNCAr
MzU3LDEyIEBAIEVmZmVjdHMgVmFsdWU6OmVmZmVjdHMoKSBjb25zdAogICAgIGNhc2UgTG9hZDhT
OgogICAgIGNhc2UgTG9hZDE2WjoKICAgICBjYXNlIExvYWQxNlM6Ci0gICAgY2FzZSBMb2FkRmxv
YXQ6CiAgICAgY2FzZSBMb2FkOgogICAgICAgICByZXN1bHQucmVhZHMgPSBhczxNZW1vcnlWYWx1
ZT4oKS0+cmFuZ2UoKTsKICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBlbmRlbnQgPSB0cnVlOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFN0b3JlODoKICAgICBjYXNlIFN0b3JlMTY6Ci0gICAg
Y2FzZSBTdG9yZUZsb2F0OgogICAgIGNhc2UgU3RvcmU6CiAgICAgICAgIHJlc3VsdC53cml0ZXMg
PSBhczxNZW1vcnlWYWx1ZT4oKS0+cmFuZ2UoKTsKICAgICAgICAgcmVzdWx0LmNvbnRyb2xEZXBl
bmRlbnQgPSB0cnVlOwpAQCAtNDEwLDkgKzQwOSwxMCBAQCBWYWx1ZUtleSBWYWx1ZTo6a2V5KCkg
Y29uc3QKICAgICBjYXNlIFpFeHQzMjoKICAgICBjYXNlIENsejoKICAgICBjYXNlIFRydW5jOgot
ICAgIGNhc2UgRlJvdW5kOgogICAgIGNhc2UgSVRvRDoKICAgICBjYXNlIERUb0kzMjoKKyAgICBj
YXNlIEZsb2F0VG9Eb3VibGU6CisgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgogICAgIGNhc2UgQ2hl
Y2s6CiAgICAgICAgIHJldHVybiBWYWx1ZUtleShvcGNvZGUoKSwgdHlwZSgpLCBjaGlsZCgwKSk7
CiAgICAgY2FzZSBBZGQ6CkBAIC01MjcsOSArNTI3LDExIEBAIFR5cGUgVmFsdWU6OnR5cGVGb3Io
T3Bjb2RlIG9wY29kZSwgVmFsdWUqIGZpcnN0Q2hpbGQsIFZhbHVlKiBzZWNvbmRDaGlsZCkKICAg
ICBjYXNlIFNFeHQzMjoKICAgICBjYXNlIFpFeHQzMjoKICAgICAgICAgcmV0dXJuIEludDY0Owot
ICAgIGNhc2UgRlJvdW5kOgorICAgIGNhc2UgRmxvYXRUb0RvdWJsZToKICAgICBjYXNlIElUb0Q6
CiAgICAgICAgIHJldHVybiBEb3VibGU7CisgICAgY2FzZSBEb3VibGVUb0Zsb2F0OgorICAgICAg
ICByZXR1cm4gRmxvYXQ7CiAgICAgY2FzZSBCaXR3aXNlQ2FzdDoKICAgICAgICAgaWYgKGZpcnN0
Q2hpbGQtPnR5cGUoKSA9PSBJbnQ2NCkKICAgICAgICAgICAgIHJldHVybiBEb3VibGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZUtleS5jcHAKaW5kZXggM2M4MDU4NjM1MWYyYzQwZTU3
N2M2YjhkNmU0NzA1ZDI1NGNjYjBhZi4uN2I2NDBjMjFjZTkwMDNkZjE3YmViMzMyMmY3OGE2YTA1
MDdhYmQ5ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWVLZXku
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlS2V5LmNwcApAQCAtNDYs
MTQgKzQ2LDE3IEBAIFZhbHVlKiBWYWx1ZUtleTo6bWF0ZXJpYWxpemUoUHJvY2VkdXJlJiBwcm9j
LCBPcmlnaW4gb3JpZ2luKSBjb25zdAogICAgIGNhc2UgRnJhbWVQb2ludGVyOgogICAgICAgICBy
ZXR1cm4gcHJvYy5hZGQ8VmFsdWU+KG9wY29kZSgpLCB0eXBlKCksIG9yaWdpbik7CiAgICAgY2Fz
ZSBJZGVudGl0eToKKyAgICBjYXNlIFNxcnQ6CiAgICAgY2FzZSBTRXh0ODoKICAgICBjYXNlIFNF
eHQxNjoKICAgICBjYXNlIFNFeHQzMjoKICAgICBjYXNlIFpFeHQzMjoKKyAgICBjYXNlIENsejoK
ICAgICBjYXNlIFRydW5jOgotICAgIGNhc2UgRlJvdW5kOgogICAgIGNhc2UgSVRvRDoKICAgICBj
YXNlIERUb0kzMjoKKyAgICBjYXNlIEZsb2F0VG9Eb3VibGU6CisgICAgY2FzZSBEb3VibGVUb0Zs
b2F0OgogICAgIGNhc2UgQ2hlY2s6CiAgICAgICAgIHJldHVybiBwcm9jLmFkZDxWYWx1ZT4ob3Bj
b2RlKCksIHR5cGUoKSwgb3JpZ2luLCBjaGlsZChwcm9jLCAwKSk7CiAgICAgY2FzZSBBZGQ6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJBcmcuaAppbmRleCBiM2ZlNWVjOGQ2YTJhYmRkNjFj
OGVkOGZhMjAxNWRmMWUyMGI5ZTkwLi4xNDY1Njc1YTgzZDA0MjZmNzYxNDM0OGE4YzY0OWNkYzJh
ZmUwZDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0FpckFyZy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyQXJnLmgKQEAgLTIxMSw2ICsy
MTEsNyBAQCBwdWJsaWM6CiAgICAgICAgIGNhc2UgSW50MzI6CiAgICAgICAgIGNhc2UgSW50NjQ6
CiAgICAgICAgICAgICByZXR1cm4gR1A7CisgICAgICAgIGNhc2UgRmxvYXQ6CiAgICAgICAgIGNh
c2UgRG91YmxlOgogICAgICAgICAgICAgcmV0dXJuIEZQOwogICAgICAgICB9CkBAIC0yMjUsNiAr
MjI2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICByZXR1cm4gV2lkdGg4OwogICAgICAgICBjYXNlIEludDMyOgorICAgICAgICBjYXNl
IEZsb2F0OgogICAgICAgICAgICAgcmV0dXJuIFdpZHRoMzI7CiAgICAgICAgIGNhc2UgSW50NjQ6
CiAgICAgICAgIGNhc2UgRG91YmxlOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL2Fpci9BaXJGaXhQYXJ0aWFsUmVnaXN0ZXJTdGFsbHMuY3BwCmluZGV4IDgxY2I0
ZWNmODMyOGJlNzY1OGU1NjVlNTQ5NjA5OGUwMTY4OTk4ZjMuLjBlNzJjNTdlNzc3M2NjNzc0ZmRh
OThiNzE3MjljN2M4OTJkNTYxY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyRml4UGFydGlhbFJlZ2lzdGVyU3RhbGxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvYWlyL0FpckZpeFBhcnRpYWxSZWdpc3RlclN0YWxscy5jcHAKQEAgLTQ2LDYg
KzQ2LDggQEAgbmFtZXNwYWNlIHsKIGJvb2wgaGFzUGFydGlhbFhtbVJlZ1VwZGF0ZShjb25zdCBJ
bnN0JiBpbnN0KQogewogICAgIHN3aXRjaCAoaW5zdC5vcGNvZGUpIHsKKyAgICBjYXNlIENvbnZl
cnREb3VibGVUb0Zsb2F0OgorICAgIGNhc2UgQ29udmVydEZsb2F0VG9Eb3VibGU6CiAgICAgY2Fz
ZSBDb252ZXJ0SW50MzJUb0RvdWJsZToKICAgICBjYXNlIENvbnZlcnRJbnQ2NFRvRG91YmxlOgog
ICAgIGNhc2UgU3FydERvdWJsZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fp
ck9wY29kZS5vcGNvZGVzCmluZGV4IDY3MjZhMzFmZGJiNzExNjBjNzg2MzI0YmJkNTAzYjZhY2Rk
MzhjMzguLjJhMThiYTA4MmJhZjEzNDIxYjIzZmNmZWJiMzExYzllMGQwZTcxYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMjIyLDYg
KzIyMiwxNCBAQCBDb3VudExlYWRpbmdaZXJvczY0IFU6RywgRDpHCiAgICAgVG1wLCBUbXAKICAg
ICBBZGRyLCBUbXAKIAorQ29udmVydERvdWJsZVRvRmxvYXQgVTpGLCBEOkYKKyAgICBUbXAsIFRt
cAorICAgIEFkZHIsIFRtcAorCitDb252ZXJ0RmxvYXRUb0RvdWJsZSBVOkYsIEQ6RgorICAgIFRt
cCwgVG1wCisgICAgQWRkciwgVG1wCisKICMgTm90ZSB0aGF0IE1vdmUgb3BlcmF0ZXMgb3ZlciB0
aGUgZnVsbCByZWdpc3RlciBzaXplLCB3aGljaCBpcyBlaXRoZXIgMzItYml0IG9yIDY0LWJpdCBk
ZXBlbmRpbmcgb24KICMgdGhlIHBsYXRmb3JtLiBJJ20gbm90IGVudGlyZWx5IHN1cmUgdGhhdCB0
aGlzIGlzIGEgZ29vZCB0aGluZzsgaXQgbWlnaHQgYmUgYmV0dGVyIHRvIGp1c3QgaGF2ZSBhCiAj
IE1vdmU2NCBpbnN0cnVjdGlvbi4gT1RPSCwgb3VyIE1hY3JvQXNzZW1ibGVycyBhbHJlYWR5IGhh
dmUgdGhpcyBub3Rpb24gb2YgIm1vdmUoKSIgdGhhdCBiYXNpY2FsbHkKQEAgLTI0OCw2ICsyNTYs
MTMgQEAgTW92ZTMyIFU6RywgRDpHCiBTaWduRXh0ZW5kMzJUb1B0ciBVOkcsIEQ6RwogICAgIFRt
cCwgVG1wCiAKK01vdmVGbG9hdCBVOkYsIEQ6RgorICAgIFRtcCwgVG1wIGFzIG1vdmVEb3VibGUK
KyAgICBBZGRyLCBUbXAgYXMgbG9hZEZsb2F0CisgICAgSW5kZXgsIFRtcCBhcyBsb2FkRmxvYXQK
KyAgICBUbXAsIEFkZHIgYXMgc3RvcmVGbG9hdAorICAgIFRtcCwgSW5kZXggYXMgc3RvcmVGbG9h
dAorCiBNb3ZlRG91YmxlIFU6RiwgRDpGCiAgICAgVG1wLCBUbXAKICAgICBBZGRyLCBUbXAgYXMg
bG9hZERvdWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcAppbmRleCBkNWViNWJlNmY2
YmI3YzIyZjY1Nzk5YjYwZThkNTU4MjM3NWEwZDdlLi4zZTBhYjkyN2Q3Nzk5NzM4MjdiYjM2ZjEx
YjA4MzNlMzEwY2FlM2Y5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVz
dGIzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcApAQCAtMjEx
OCw3ICsyMTE4LDg3IEBAIHZvaWQgdGVzdEJpdHdpc2VDYXN0T25JbnQ2NEluTWVtb3J5KGludDY0
X3QgdmFsdWUpCiAgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHBy
b2MsICZ2YWx1ZSksIGJpdHdpc2VfY2FzdDxkb3VibGU+KHZhbHVlKSkpOwogfQogCi12b2lkIHRl
c3RTdG9yZShpbnQgdmFsdWUpCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdEFyZyhkb3Vi
bGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9
IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8
QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7
CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJs
ZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNGbG9hdCk7CisKKyAgICBDSEVDSyhp
c0lkZW50aWNhbChjb21waWxlQW5kUnVuPGZsb2F0Pihwcm9jLCB2YWx1ZSksIHN0YXRpY19jYXN0
PGZsb2F0Pih2YWx1ZSkpKTsKK30KKwordm9pZCB0ZXN0Q29udmVydERvdWJsZVRvRmxvYXRNZW0o
ZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZERvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1v
cnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBPcmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFs
dWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQs
IE9yaWdpbigpLCBsb2FkZWREb3VibGUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRmxvYXQpOworCisgICAgQ0hFQ0soaXNJZGVu
dGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4ocHJvYywgJnZhbHVlKSwgc3RhdGljX2Nhc3Q8Zmxv
YXQ+KHZhbHVlKSkpOworfQorCit2b2lkIHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdFRvRG91Ymxl
VG9GbG9hdChkb3VibGUgdmFsdWUpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFy
Z3VtZW50RlBSMCk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+
KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFz
RG91YmxlID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmln
aW4oKSwgYXNGbG9hdCk7CisgICAgVmFsdWUqIGFzRmxvYXRBZ2FpbiA9IHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFzRG91YmxlKTsKKyAgICBy
b290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCBhc0Zs
b2F0QWdhaW4pOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxmbG9hdD4o
cHJvYywgdmFsdWUpLCBzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSk7Cit9CisKK3ZvaWQgdGVz
dExvYWRGbG9hdENvbnZlcnREb3VibGVDb252ZXJ0RmxvYXRTdG9yZUZsb2F0KGZsb2F0IHZhbHVl
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgVmFsdWUqIHNyYyA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICBWYWx1ZSog
ZHN0ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpOworICAgIE1lbW9yeVZhbHVlKiBsb2FkZWRGbG9hdCA9IHJv
b3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRmxvYXQsIE9yaWdpbigpLCBz
cmMpOworICAgIFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywg
RmxvYXRUb0RvdWJsZSwgT3JpZ2luKCksIGxvYWRlZEZsb2F0KTsKKyAgICBWYWx1ZSogYXNGbG9h
dEFnYWluID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBEb3VibGVUb0Zsb2F0LCBPcmln
aW4oKSwgYXNEb3VibGUpOworICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywg
U3RvcmUsIE9yaWdpbigpLCBhc0Zsb2F0QWdhaW4sIGRzdCk7CisKKyAgICByb290LT5hcHBlbmRO
ZXc8Q29udHJvbFZhbHVlPihwcm9jLCBSZXR1cm4sIE9yaWdpbigpLCByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgMCkpOworCisgICAgZmxvYXQgaW5wdXQgPSB2
YWx1ZTsKKyAgICBmbG9hdCBvdXRwdXQgPSAwLjsKKyAgICBDSEVDSyghY29tcGlsZUFuZFJ1bjxp
bnQ2NF90Pihwcm9jLCAmaW5wdXQsICZvdXRwdXQpKTsKKyAgICBDSEVDSyhpc0lkZW50aWNhbChp
bnB1dCwgb3V0cHV0KSk7Cit9CisKK3ZvaWQgdGVzdEZyb3VuZEFyZyhkb3VibGUgdmFsdWUpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdW
YWx1ZT4ocHJvYywgT3JpZ2luKCksIEZQUkluZm86OmFyZ3VtZW50RlBSMCk7CisgICAgVmFsdWUq
IGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9y
aWdpbigpLCBhcmd1bWVudCk7CisgICAgVmFsdWUqIGFzRG91YmxlID0gcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPihwcm9jLCBGbG9hdFRvRG91YmxlLCBPcmlnaW4oKSwgYXNGbG9hdCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgYXNEb3Vi
bGUpOworCisgICAgQ0hFQ0soaXNJZGVudGljYWwoY29tcGlsZUFuZFJ1bjxkb3VibGU+KHByb2Ms
IHZhbHVlKSwgc3RhdGljX2Nhc3Q8ZG91YmxlPihzdGF0aWNfY2FzdDxmbG9hdD4odmFsdWUpKSkp
OworfQorCit2b2lkIHRlc3RGcm91bmRNZW0oZG91YmxlIHZhbHVlKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFs
dWUqIGFkZHJlc3MgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgTWVtb3J5VmFsdWUqIGxvYWRlZERv
dWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgTG9hZCwgRG91YmxlLCBP
cmlnaW4oKSwgYWRkcmVzcyk7CisgICAgVmFsdWUqIGFzRmxvYXQgPSByb290LT5hcHBlbmROZXc8
VmFsdWU+KHByb2MsIERvdWJsZVRvRmxvYXQsIE9yaWdpbigpLCBsb2FkZWREb3VibGUpOworICAg
IFZhbHVlKiBhc0RvdWJsZSA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRmxvYXRUb0Rv
dWJsZSwgT3JpZ2luKCksIGFzRmxvYXQpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIGFzRG91YmxlKTsKKworICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48ZG91YmxlPihwcm9jLCAmdmFsdWUpLCBzdGF0aWNfY2FzdDxk
b3VibGU+KHN0YXRpY19jYXN0PGZsb2F0Pih2YWx1ZSkpKSk7Cit9CisKK3ZvaWQgdGVzdFN0b3Jl
MzIoaW50IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwogICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CkBAIC0yNjEyLDIyICsyNjkyLDI4IEBAIHZvaWQgdGVzdFN0
b3JlTG9hZFN0YWNrU2xvdChpbnQgdmFsdWUpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsIHZhbHVlKSA9PSB2YWx1ZSk7CiB9CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbnQz
Ml90IG1vZGVsTG9hZChpbnQzMl90IHZhbHVlKQordGVtcGxhdGU8dHlwZW5hbWUgTG9hZGVkVHlw
ZSwgdHlwZW5hbWUgRWZmZWN0aXZlVHlwZT4KK0VmZmVjdGl2ZVR5cGUgbW9kZWxMb2FkKEVmZmVj
dGl2ZVR5cGUgdmFsdWUpCiB7CiAgICAgdW5pb24gewotICAgICAgICBpbnQzMl90IG9yaWdpbmFs
OwotICAgICAgICBUIGxvYWRlZDsKKyAgICAgICAgRWZmZWN0aXZlVHlwZSBvcmlnaW5hbDsKKyAg
ICAgICAgTG9hZGVkVHlwZSBsb2FkZWQ7CiAgICAgfSB1OwogCiAgICAgdS5vcmlnaW5hbCA9IHZh
bHVlOwotICAgIGlmIChzdGQ6OmlzX3NpZ25lZDxUPjo6dmFsdWUpCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQzMl90Pih1LmxvYWRlZCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGlu
dDMyX3Q+KHN0YXRpY19jYXN0PHVpbnQzMl90Pih1LmxvYWRlZCkpOworICAgIGlmIChzdGQ6Omlz
X3NpZ25lZDxMb2FkZWRUeXBlPjo6dmFsdWUpCisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxF
ZmZlY3RpdmVUeXBlPih1LmxvYWRlZCk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVmZmVjdGl2
ZVR5cGU+KHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6bWFrZV91bnNpZ25lZDxFZmZlY3RpdmVU
eXBlPjo6dHlwZT4odS5sb2FkZWQpKTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4KLXZvaWQg
dGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCit0ZW1wbGF0ZTw+Citm
bG9hdCBtb2RlbExvYWQ8ZmxvYXQsIGZsb2F0PihmbG9hdCB2YWx1ZSkgeyByZXR1cm4gdmFsdWU7
IH0KKwordGVtcGxhdGU8PgorZG91YmxlIG1vZGVsTG9hZDxkb3VibGUsIGRvdWJsZT4oZG91Ymxl
IHZhbHVlKSB7IHJldHVybiB2YWx1ZTsgfQorCit0ZW1wbGF0ZTxCMzo6VHlwZSB0eXBlLCB0eXBl
bmFtZSBDVHlwZSwgdHlwZW5hbWUgSW5wdXRUeXBlPgordm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2Rl
IG9wY29kZSwgSW5wdXRUeXBlIHZhbHVlKQogewogICAgIC8vIFNpbXBsZSBsb2FkIGZyb20gYW4g
YWJzb2x1dGUgYWRkcmVzcy4KICAgICB7CkBAIC0yNjM3LDEwICsyNzIzLDEwIEBAIHZvaWQgdGVz
dExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCiAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0gICAgICAgICAg
ICAgICAgcHJvYywgb3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcHJv
Yywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3RQdHJWYWx1ZT4ocHJvYywgT3JpZ2luKCksICZ2YWx1ZSkpKTsKIAotICAgICAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkp
OworICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jKSwg
bW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKICAgICB9CiAgICAgCiAgICAgLy8gU2ltcGxlIGxv
YWQgZnJvbSBhbiBhZGRyZXNzIGluIGEgcmVnaXN0ZXIuCkBAIC0yNjUxLDEwICsyNzM3LDEwIEBA
IHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCiAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpKTsKIAotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHBy
b2MsICZ2YWx1ZSkgPT0gbW9kZWxMb2FkPFQ+KHZhbHVlKSk7CisgICAgICAgIENIRUNLKGlzSWRl
bnRpY2FsKGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSksIG1vZGVsTG9hZDxDVHlw
ZT4odmFsdWUpKSk7CiAgICAgfQogICAgIAogICAgIC8vIFNpbXBsZSBsb2FkIGZyb20gYW4gYWRk
cmVzcyBpbiBhIHJlZ2lzdGVyLCBhdCBhbiBvZmZzZXQuCkBAIC0yNjY1LDExICsyNzUxLDExIEBA
IHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMyX3QgdmFsdWUpCiAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAogICAgICAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4oCi0g
ICAgICAgICAgICAgICAgcHJvYywgb3Bjb2RlLCBJbnQzMiwgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcHJvYywgb3Bjb2RlLCB0eXBlLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCksCi0gICAgICAgICAgICAgICAgc2l6ZW9mKGludDMyX3QpKSk7CisgICAgICAg
ICAgICAgICAgc2l6ZW9mKElucHV0VHlwZSkpKTsKIAotICAgICAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludDMyX3Q+KHByb2MsICZ2YWx1ZSAtIDEpID09IG1vZGVsTG9hZDxUPih2YWx1ZSkpOwor
ICAgICAgICBDSEVDSyhpc0lkZW50aWNhbChjb21waWxlQW5kUnVuPENUeXBlPihwcm9jLCAmdmFs
dWUgLSAxKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKICAgICB9CiAKICAgICAvLyBMb2Fk
IGZyb20gYSBzaW1wbGUgYmFzZS1pbmRleCB3aXRoIHZhcmlvdXMgc2NhbGVzLgpAQCAtMjY4MCw3
ICsyNzY2LDcgQEAgdm9pZCB0ZXN0TG9hZChCMzo6T3Bjb2RlIG9wY29kZSwgaW50MzJfdCB2YWx1
ZSkKICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCiAgICAgICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAogICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PE1lbW9y
eVZhbHVlPigKLSAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIEludDMyLCBPcmlnaW4oKSwK
KyAgICAgICAgICAgICAgICBwcm9jLCBvcGNvZGUsIHR5cGUsIE9yaWdpbigpLAogICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCiAgICAgICAgICAgICAgICAgICAgIHByb2Ms
IEFkZCwgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1
bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKQEAg
LTI2ODksNyArMjc3NSw3IEBAIHZvaWQgdGVzdExvYWQoQjM6Ok9wY29kZSBvcGNvZGUsIGludDMy
X3QgdmFsdWUpCiAgICAgICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSksCiAgICAg
ICAgICAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgbG9nU2NhbGUpKSkpKTsKIAotICAgICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDMyX3Q+KHByb2MsICZ2YWx1ZSAtIDIsIChzaXplb2YoaW50MzJfdCkgKiAyKSA+PiBsb2dTY2Fs
ZSkgPT0gbW9kZWxMb2FkPFQ+KHZhbHVlKSk7CisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGNv
bXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1ZSAtIDIsIChzaXplb2YoSW5wdXRUeXBlKSAq
IDIpID4+IGxvZ1NjYWxlKSwgbW9kZWxMb2FkPENUeXBlPih2YWx1ZSkpKTsKICAgICB9CiAKICAg
ICAvLyBMb2FkIGZyb20gYSBzaW1wbGUgYmFzZS1pbmRleCB3aXRoIHZhcmlvdXMgc2NhbGVzLCBi
dXQgY29tbXV0ZWQuCkBAIC0yNzAwLDcgKzI3ODYsNyBAQCB2b2lkIHRlc3RMb2FkKEIzOjpPcGNv
ZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQogICAgICAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKICAgICAgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCiAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KAotICAgICAgICAgICAgICAgIHByb2MsIG9w
Y29kZSwgSW50MzIsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHByb2MsIG9wY29kZSwgdHlw
ZSwgT3JpZ2luKCksCiAgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKICAg
ICAgICAgICAgICAgICAgICAgcHJvYywgQWRkLCBPcmlnaW4oKSwKICAgICAgICAgICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKQEAgLTI3MDksNyArMjc5NSw2MyBAQCB2b2lkIHRl
c3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQogICAgICAgICAgICAgICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGxv
Z1NjYWxlKSksCiAgICAgICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKIAotICAg
ICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDMyX3Q+KHByb2MsICZ2YWx1ZSAtIDIsIChzaXpl
b2YoaW50MzJfdCkgKiAyKSA+PiBsb2dTY2FsZSkgPT0gbW9kZWxMb2FkPFQ+KHZhbHVlKSk7Cisg
ICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKGNvbXBpbGVBbmRSdW48Q1R5cGU+KHByb2MsICZ2YWx1
ZSAtIDIsIChzaXplb2YoSW5wdXRUeXBlKSAqIDIpID4+IGxvZ1NjYWxlKSwgbW9kZWxMb2FkPENU
eXBlPih2YWx1ZSkpKTsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkIHRl
c3RMb2FkKEIzOjpPcGNvZGUgb3Bjb2RlLCBpbnQzMl90IHZhbHVlKQoreworICAgIHJldHVybiB0
ZXN0TG9hZDxJbnQzMiwgVD4ob3Bjb2RlLCB2YWx1ZSk7Cit9CisKK3RlbXBsYXRlPEIzOjpUeXBl
IHR5cGUsIHR5cGVuYW1lIFQ+Cit2b2lkIHRlc3RMb2FkKFQgdmFsdWUpCit7CisgICAgcmV0dXJu
IHRlc3RMb2FkPHR5cGUsIFQ+KExvYWQsIHZhbHVlKTsKK30KKwordm9pZCB0ZXN0U3RvcmVGbG9h
dChkb3VibGUgaW5wdXQpCit7CisgICAgLy8gU2ltcGxlIHN0b3JlIGZyb20gYW4gYWRkcmVzcyBp
biBhIHJlZ2lzdGVyLgorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmd1bWVu
dCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgRlBS
SW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFyZ3Vt
ZW50KTsKKworICAgICAgICBWYWx1ZSogZGVzdGluYXRpb25BZGRyZXNzID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgICAgICByb290LT5hcHBlbmROZXc8TWVtb3J5VmFsdWU+KHByb2MsIFN0b3JlLCBP
cmlnaW4oKSwgYXJndW1lbnRBc0Zsb2F0LCBkZXN0aW5hdGlvbkFkZHJlc3MpOworCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KHByb2MsIFJldHVybiwgT3JpZ2luKCksIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCAwKSk7CisKKyAgICAg
ICAgZmxvYXQgb3V0cHV0ID0gMC47CisgICAgICAgIENIRUNLKCFjb21waWxlQW5kUnVuPGludDY0
X3Q+KHByb2MsIGlucHV0LCAmb3V0cHV0KSk7CisgICAgICAgIENIRUNLKGlzSWRlbnRpY2FsKHN0
YXRpY19jYXN0PGZsb2F0PihpbnB1dCksIG91dHB1dCkpOworICAgIH0KKworICAgIC8vIFNpbXBs
ZSBpbmRleGVkIHN0b3JlLgorICAgIHsKKyAgICAgICAgUHJvY2VkdXJlIHByb2M7CisgICAgICAg
IEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgICAgIFZhbHVlKiBhcmd1
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
RlBSSW5mbzo6YXJndW1lbnRGUFIwKTsKKyAgICAgICAgVmFsdWUqIGFyZ3VtZW50QXNGbG9hdCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4ocHJvYywgRG91YmxlVG9GbG9hdCwgT3JpZ2luKCksIGFy
Z3VtZW50KTsKKworICAgICAgICBWYWx1ZSogZGVzdGluYXRpb25CYXNlQWRkcmVzcyA9IHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKTsKKyAgICAgICAgVmFsdWUqIGluZGV4ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpOworICAg
ICAgICBWYWx1ZSogc2NhbGVkSW5kZXggPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgU2hsLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGluZGV4LAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDIpKTsKKyAg
ICAgICAgVmFsdWUqIGRlc3RpbmF0aW9uQWRkcmVzcyA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
cHJvYywgQWRkLCBPcmlnaW4oKSwgc2NhbGVkSW5kZXgsIGRlc3RpbmF0aW9uQmFzZUFkZHJlc3Mp
OworCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxNZW1vcnlWYWx1ZT4ocHJvYywgU3RvcmUsIE9y
aWdpbigpLCBhcmd1bWVudEFzRmxvYXQsIGRlc3RpbmF0aW9uQWRkcmVzcyk7CisKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4ocHJvYywgUmV0dXJuLCBPcmlnaW4oKSwgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIDApKTsKKworICAgICAg
ICBmbG9hdCBvdXRwdXQgPSAwLjsKKyAgICAgICAgQ0hFQ0soIWNvbXBpbGVBbmRSdW48aW50NjRf
dD4ocHJvYywgaW5wdXQsICZvdXRwdXQgLSAxLCAxKSk7CisgICAgICAgIENIRUNLKGlzSWRlbnRp
Y2FsKHN0YXRpY19jYXN0PGZsb2F0PihpbnB1dCksIG91dHB1dCkpOwogICAgIH0KIH0KIApAQCAt
NTQ4Niw0NyArNTYyOCw0MyBAQCBkb3VibGUgbmVnYXRpdmVaZXJvKCkKICAgICByZXR1cm4gLXpl
cm8oKTsKIH0KIAotLy8gU29tZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGJyZXZpdHkgb2Yg
dGhlIHRlc3Qgb3V0cHV0LgotZG91YmxlIHBvc0luZmluaXR5KCkKLXsKLSAgICByZXR1cm4gc3Rk
OjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwotfQotCi1kb3VibGUgbmVnSW5m
aW5pdHkoKQotewotICAgIHJldHVybiAtc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjppbmZp
bml0eSgpOwotfQotCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUeXBlPgogc3RydWN0IE9wZXJhbmQgewog
ICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgVHlwZSB2YWx1ZTsKIH07CiAKLXR5cGVkZWYgT3Bl
cmFuZDxkb3VibGU+IERvdWJsZU9wZXJhbmQ7CiB0eXBlZGVmIE9wZXJhbmQ8aW50NjRfdD4gSW50
NjRPcGVyYW5kOwogdHlwZWRlZiBPcGVyYW5kPGludDMyX3Q+IEludDMyT3BlcmFuZDsKIAotc3Rh
dGljIGNvbnN0IHN0ZDo6YXJyYXk8RG91YmxlT3BlcmFuZCwgOT4mIGRvdWJsZU9wZXJhbmRzKCkK
K3RlbXBsYXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KK3ZvaWQgcG9wdWxhdGVXaXRoSW50ZXJlc3Rp
bmdWYWx1ZXMoVmVjdG9yPE9wZXJhbmQ8RmxvYXRUeXBlPj4mIG9wZXJhbmRzKQogewotICAgIHN0
YXRpYyBjb25zdCBzdGQ6OmFycmF5PERvdWJsZU9wZXJhbmQsIDk+IG9wZXJhbmRzID0ge3sKLSAg
ICAgICAgeyAiTV9QSSIsIE1fUEkgfSwKLSAgICAgICAgeyAiLU1fUEkiLCAtTV9QSSB9LAotICAg
ICAgICB7ICIxLiIsIDEgfSwKLSAgICAgICAgeyAiLTEuIiwgLTEgfSwKLSAgICAgICAgeyAiMCIs
IDAgfSwKLSAgICAgICAgeyAibmVnYXRpdmVaZXJvKCkiLCBuZWdhdGl2ZVplcm8oKSB9LAotICAg
ICAgICB7ICJwb3NJbmZpbml0eSgpIiwgcG9zSW5maW5pdHkoKSB9LAotICAgICAgICB7ICJuZWdJ
bmZpbml0eSgpIiwgbmVnSW5maW5pdHkoKSB9LAotICAgICAgICB7ICJQTmFOIiwgUE5hTiB9LAot
ICAgIH19OworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICIwLiIsIHN0YXRpY19jYXN0PEZsb2F0VHlw
ZT4oMC4pIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMC4iLCBzdGF0aWNfY2FzdDxGbG9h
dFR5cGU+KC0wLikgfSk7CisgICAgb3BlcmFuZHMuYXBwZW5kKHsgIk1fUEkiLCBzdGF0aWNfY2Fz
dDxGbG9hdFR5cGU+KE1fUEkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItTV9QSSIsIHN0
YXRpY19jYXN0PEZsb2F0VHlwZT4oLU1fUEkpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJt
aW4iLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1pbigpIH0pOworICAgIG9wZXJh
bmRzLmFwcGVuZCh7ICJtYXgiLCBzdGQ6Om51bWVyaWNfbGltaXRzPEZsb2F0VHlwZT46Om1heCgp
IH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJsb3dlc3QiLCBzdGQ6Om51bWVyaWNfbGltaXRz
PEZsb2F0VHlwZT46Omxvd2VzdCgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICJlcHNpbG9u
Iiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+OjplcHNpbG9uKCkgfSk7CisgICAgb3Bl
cmFuZHMuYXBwZW5kKHsgImluZmluaXRpIiwgc3RkOjpudW1lcmljX2xpbWl0czxGbG9hdFR5cGU+
OjppbmZpbml0eSgpIH0pOworICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItaW5maW5pdGkiLCAtIHN0
ZDo6bnVtZXJpY19saW1pdHM8RmxvYXRUeXBlPjo6aW5maW5pdHkoKSB9KTsKKyAgICBvcGVyYW5k
cy5hcHBlbmQoeyAiUE5hTiIsIHN0YXRpY19jYXN0PEZsb2F0VHlwZT4oUE5hTikgfSk7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIEZsb2F0VHlwZT4KK1ZlY3RvcjxPcGVyYW5kPEZsb2F0VHlwZT4+
IGZsb2F0aW5nUG9pbnRPcGVyYW5kcygpCit7CisgICAgVmVjdG9yPE9wZXJhbmQ8RmxvYXRUeXBl
Pj4gb3BlcmFuZHM7CisgICAgcG9wdWxhdGVXaXRoSW50ZXJlc3RpbmdWYWx1ZXMob3BlcmFuZHMp
OwogICAgIHJldHVybiBvcGVyYW5kczsKIH07CiAKIHN0YXRpYyBWZWN0b3I8SW50NjRPcGVyYW5k
PiBpbnQ2NE9wZXJhbmRzKCkKIHsKICAgICBWZWN0b3I8SW50NjRPcGVyYW5kPiBvcGVyYW5kczsK
LSAgICBmb3IgKERvdWJsZU9wZXJhbmQgZG91YmxlT3BlcmFuZCA6IGRvdWJsZU9wZXJhbmRzKCkp
CisgICAgZm9yIChjb25zdCBhdXRvJiBkb3VibGVPcGVyYW5kIDogZmxvYXRpbmdQb2ludE9wZXJh
bmRzPGRvdWJsZT4oKSkKICAgICAgICAgb3BlcmFuZHMuYXBwZW5kKHsgZG91YmxlT3BlcmFuZC5u
YW1lLCBiaXR3aXNlX2Nhc3Q8aW50NjRfdD4oZG91YmxlT3BlcmFuZC52YWx1ZSkgfSk7CiAgICAg
b3BlcmFuZHMuYXBwZW5kKHsgIjEiLCAxIH0pOwogICAgIG9wZXJhbmRzLmFwcGVuZCh7ICItMSIs
IC0xIH0pOwpAQCAtNTY4NiwxMSArNTgyNCwxMSBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0
ZXIpCiAgICAgUlVOKHRlc3RNdWxBcmdzMzIoMSwgMikpOwogICAgIFJVTih0ZXN0TXVsTG9hZFR3
aWNlKCkpOwogCi0gICAgUlVOX1VOQVJZKHRlc3RNdWxBcmdEb3VibGUsIGRvdWJsZU9wZXJhbmRz
KCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ3NEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCks
IGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdE11bEFyZ0ltbURvdWJsZSwg
ZG91YmxlT3BlcmFuZHMoKSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0
TXVsSW1tQXJnRG91YmxlLCBkb3VibGVPcGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKLSAg
ICBSVU5fQklOQVJZKHRlc3RNdWxJbW1zRG91YmxlLCBkb3VibGVPcGVyYW5kcygpLCBkb3VibGVP
cGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdE11bEFyZ0RvdWJsZSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnc0RvdWJsZSwg
ZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0TXVsQXJnSW1tRG91YmxlLCBmbG9hdGluZ1Bv
aW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsK
KyAgICBSVU5fQklOQVJZKHRlc3RNdWxJbW1BcmdEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5k
czxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9C
SU5BUlkodGVzdE11bEltbXNEb3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCks
IGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogCiAgICAgUlVOKHRlc3REaXZBcmdE
b3VibGUoTV9QSSkpOwogICAgIFJVTih0ZXN0RGl2QXJnc0RvdWJsZShNX1BJLCAxKSk7CkBAIC01
NzQ2LDExICs1ODg0LDExIEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRlcikKICAgICBSVU4o
dGVzdFN1YkltbUFyZzMyKC0xMywgNDIpKTsKICAgICBSVU5fVU5BUlkodGVzdE5lZ1ZhbHVlU3Vi
T25lMzIsIGludDY0T3BlcmFuZHMoKSk7CiAKLSAgICBSVU5fVU5BUlkodGVzdFN1YkFyZ0RvdWJs
ZSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0U3ViQXJnc0RvdWJsZSwg
ZG91YmxlT3BlcmFuZHMoKSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX0JJTkFSWSh0ZXN0
U3ViQXJnSW1tRG91YmxlLCBkb3VibGVPcGVyYW5kcygpLCBkb3VibGVPcGVyYW5kcygpKTsKLSAg
ICBSVU5fQklOQVJZKHRlc3RTdWJJbW1BcmdEb3VibGUsIGRvdWJsZU9wZXJhbmRzKCksIGRvdWJs
ZU9wZXJhbmRzKCkpOwotICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbXNEb3VibGUsIGRvdWJsZU9w
ZXJhbmRzKCksIGRvdWJsZU9wZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3ViQXJnRG91
YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRl
c3RTdWJBcmdzRG91YmxlLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fQklOQVJZKHRlc3RTdWJBcmdJbW1E
b3VibGUsIGZsb2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCksIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9CSU5BUlkodGVzdFN1YkltbUFyZ0RvdWJsZSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7CisgICAgUlVOX0JJTkFSWSh0ZXN0U3ViSW1tc0RvdWJsZSwgZmxvYXRpbmdQb2ludE9w
ZXJhbmRzPGRvdWJsZT4oKSwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CiAKICAg
ICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7CiAgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQz
LCAwKSk7CkBAIC02MDM2LDIwICs2MTc0LDI4IEBAIHZvaWQgcnVuKGNvbnN0IGNoYXIqIGZpbHRl
cikKICAgICBSVU5fVU5BUlkodGVzdENsekFyZzMyLCBpbnQzMk9wZXJhbmRzKCkpOwogICAgIFJV
Tl9VTkFSWSh0ZXN0Q2x6TWVtMzIsIGludDY0T3BlcmFuZHMoKSk7CiAKLSAgICBSVU5fVU5BUlko
dGVzdFNxcnRBcmcsIGRvdWJsZU9wZXJhbmRzKCkpOwotICAgIFJVTl9VTkFSWSh0ZXN0U3FydElt
bSwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBkb3VibGVP
cGVyYW5kcygpKTsKKyAgICBSVU5fVU5BUlkodGVzdFNxcnRBcmcsIGZsb2F0aW5nUG9pbnRPcGVy
YW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0U3FydEltbSwgZmxvYXRpbmdQb2lu
dE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTcXJ0TWVtLCBmbG9hdGlu
Z1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKIAotICAgIFJVTl9VTkFSWSh0ZXN0RG91YmxlQXJn
VG9JbnQ2NEJpdHdpc2VDYXN0LCBkb3VibGVPcGVyYW5kcygpKTsKLSAgICBSVU5fVU5BUlkodGVz
dERvdWJsZUltbVRvSW50NjRCaXR3aXNlQ2FzdCwgZG91YmxlT3BlcmFuZHMoKSk7Ci0gICAgUlVO
X1VOQVJZKHRlc3RUd29CaXR3aXNlQ2FzdE9uRG91YmxlLCBkb3VibGVPcGVyYW5kcygpKTsKLSAg
ICBSVU5fVU5BUlkodGVzdEJpdHdpc2VDYXN0T25Eb3VibGVJbk1lbW9yeSwgZG91YmxlT3BlcmFu
ZHMoKSk7CisgICAgUlVOX1VOQVJZKHRlc3REb3VibGVBcmdUb0ludDY0Qml0d2lzZUNhc3QsIGZs
b2F0aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0RG91Ymxl
SW1tVG9JbnQ2NEJpdHdpc2VDYXN0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsK
KyAgICBSVU5fVU5BUlkodGVzdFR3b0JpdHdpc2VDYXN0T25Eb3VibGUsIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxkb3VibGU+KCkpOworICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkRvdWJs
ZUluTWVtb3J5LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91YmxlPigpKTsKICAgICBSVU5fVU5B
UlkodGVzdEludDY0QkFyZ1RvRG91YmxlQml0d2lzZUNhc3QsIGludDY0T3BlcmFuZHMoKSk7CiAg
ICAgUlVOX1VOQVJZKHRlc3RJbnQ2NEJJbW1Ub0RvdWJsZUJpdHdpc2VDYXN0LCBpbnQ2NE9wZXJh
bmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0VHdvQml0d2lzZUNhc3RPbkludDY0LCBpbnQ2NE9w
ZXJhbmRzKCkpOwogICAgIFJVTl9VTkFSWSh0ZXN0Qml0d2lzZUNhc3RPbkludDY0SW5NZW1vcnks
IGludDY0T3BlcmFuZHMoKSk7CiAKLSAgICBSVU4odGVzdFN0b3JlKDQ0KSk7CisgICAgUlVOX1VO
QVJZKHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdEFyZywgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRv
dWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0RG91YmxlVG9GbG9hdE1lbSwgZmxv
YXRpbmdQb2ludE9wZXJhbmRzPGRvdWJsZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RDb252ZXJ0
RG91YmxlVG9GbG9hdFRvRG91YmxlVG9GbG9hdCwgZmxvYXRpbmdQb2ludE9wZXJhbmRzPGRvdWJs
ZT4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RTdG9yZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFu
ZHM8ZG91YmxlPigpKTsKKyAgICBSVU5fVU5BUlkodGVzdExvYWRGbG9hdENvbnZlcnREb3VibGVD
b252ZXJ0RmxvYXRTdG9yZUZsb2F0LCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZmxvYXQ+KCkpOwor
ICAgIFJVTl9VTkFSWSh0ZXN0RnJvdW5kQXJnLCBmbG9hdGluZ1BvaW50T3BlcmFuZHM8ZG91Ymxl
PigpKTsKKyAgICBSVU5fVU5BUlkodGVzdEZyb3VuZE1lbSwgZmxvYXRpbmdQb2ludE9wZXJhbmRz
PGRvdWJsZT4oKSk7CisKKyAgICBSVU4odGVzdFN0b3JlMzIoNDQpKTsKICAgICBSVU4odGVzdFN0
b3JlQ29uc3RhbnQoNDkpKTsKICAgICBSVU4odGVzdFN0b3JlQ29uc3RhbnRQdHIoNDkpKTsKICAg
ICBSVU4odGVzdFRydW5jKChzdGF0aWNfY2FzdDxpbnQ2NF90PigxKSA8PCA0MCkgKyA0MikpOwpA
QCAtNjE2MywxNCArNjMwOSwxNyBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAg
UlVOKHRlc3RDb21wYXJlKEJpdEFuZCwgNDIsIDQyKSk7CiAgICAgUlVOKHRlc3RDb21wYXJlKEJp
dEFuZCwgNDIsIDApKTsKIAotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCA2MCkpOwot
ICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAtNjApKTsKLSAgICBSVU4odGVzdExvYWQ8
aW50MzJfdD4oTG9hZCwgMTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAt
MTAwMCkpOwotICAgIFJVTih0ZXN0TG9hZDxpbnQzMl90PihMb2FkLCAxMDAwMDAwKSk7Ci0gICAg
UlVOKHRlc3RMb2FkPGludDMyX3Q+KExvYWQsIC0xMDAwMDAwKSk7Ci0gICAgUlVOKHRlc3RMb2Fk
PGludDMyX3Q+KExvYWQsIDEwMDAwMDAwMDApKTsKLSAgICBSVU4odGVzdExvYWQ8aW50MzJfdD4o
TG9hZCwgLTEwMDAwMDAwMDApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KDYwKSk7CisgICAg
UlVOKHRlc3RMb2FkPEludDMyPigtNjApKTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KDEwMDAp
KTsKKyAgICBSVU4odGVzdExvYWQ8SW50MzI+KC0xMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPElu
dDMyPigxMDAwMDAwKSk7CisgICAgUlVOKHRlc3RMb2FkPEludDMyPigtMTAwMDAwMCkpOworICAg
IFJVTih0ZXN0TG9hZDxJbnQzMj4oMTAwMDAwMDAwMCkpOworICAgIFJVTih0ZXN0TG9hZDxJbnQz
Mj4oLTEwMDAwMDAwMDApKTsKKyAgICBSVU5fVU5BUlkodGVzdExvYWQ8SW50NjQ+LCBpbnQ2NE9w
ZXJhbmRzKCkpOworICAgIFJVTl9VTkFSWSh0ZXN0TG9hZDxGbG9hdD4sIGZsb2F0aW5nUG9pbnRP
cGVyYW5kczxmbG9hdD4oKSk7CisgICAgUlVOX1VOQVJZKHRlc3RMb2FkPERvdWJsZT4sIGZsb2F0
aW5nUG9pbnRPcGVyYW5kczxkb3VibGU+KCkpOwogICAgIAogICAgIFJVTih0ZXN0TG9hZDxpbnQ4
X3Q+KExvYWQ4UywgNjApKTsKICAgICBSVU4odGVzdExvYWQ8aW50OF90PihMb2FkOFMsIC02MCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091dHB1dC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0cHV0LmNwcAppbmRleCA1MWNhMTIx
NjIyNWM5N2I2YTkyMDczNWIxOGQ0OWFlNWRhMzAwOGQxLi41ZWZjNjdkZTE5ZjM2NGQ3N2EyMDhh
ZDVjODhiMTRkMDU1ZDc2MzM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRs
L0ZUTEIzT3V0cHV0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTEIzT3V0
cHV0LmNwcApAQCAtOTksOSArOTksOCBAQCBMVmFsdWUgT3V0cHV0Ojpsb2FkMTZaZXJvRXh0MzIo
VHlwZWRQb2ludGVyIHBvaW50ZXIpCiAKIExWYWx1ZSBPdXRwdXQ6OmxvYWRGbG9hdFRvRG91Ymxl
KFR5cGVkUG9pbnRlciBwb2ludGVyKQogewotICAgIExWYWx1ZSBsb2FkID0gbV9ibG9jay0+YXBw
ZW5kTmV3PEIzOjpNZW1vcnlWYWx1ZT4obV9wcm9jLCBCMzo6TG9hZEZsb2F0LCBCMzo6RG91Ymxl
LCBvcmlnaW4oKSwgcG9pbnRlci52YWx1ZSgpKTsKLSAgICBwb2ludGVyLmhlYXAoKS5kZWNvcmF0
ZUluc3RydWN0aW9uKGxvYWQsICptX2hlYXBzKTsKLSAgICByZXR1cm4gbG9hZDsKKyAgICBMVmFs
dWUgbG9hZGVkRmxvYXQgPSBsb2FkKHBvaW50ZXIsIGZsb2F0VHlwZSk7CisgICAgcmV0dXJuIG1f
YmxvY2stPmFwcGVuZE5ldzxCMzo6VmFsdWU+KG1fcHJvYywgQjM6OkZsb2F0VG9Eb3VibGUsIG9y
aWdpbigpLCBsb2FkZWRGbG9hdCk7CiB9CiAKIHZvaWQgT3V0cHV0OjpzdG9yZShMVmFsdWUgdmFs
dWUsIFR5cGVkUG9pbnRlciBwb2ludGVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExCM091dHB1dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExCM091
dHB1dC5oCmluZGV4IDRmMTJlYjY3YTA0NDBlYzA5MjZkOGUzMjhlMzExZTIzNDFlMmY4YjYuLjQ5
OGNlYTM3ZTUwNjkwZmM5ZGQ3ZTg4ODQ1NzAyZDAzYzU0Zjc1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQjNPdXRwdXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTEIzT3V0cHV0LmgKQEAgLTE5Myw4ICsxOTMsNyBAQCBwdWJsaWM6CiAgICAg
TFZhbHVlIGludFRvUHRyKExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyBDUkFTSCgpOyB9CiAg
ICAgTFZhbHVlIHB0clRvSW50KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlwZSkgeyBDUkFTSCgpOyB9
CiAgICAgTFZhbHVlIGJpdENhc3QoTFZhbHVlLCBMVHlwZSk7Ci0KLSAgICBMVmFsdWUgZnJvdW5k
KExWYWx1ZSBkb3VibGVWYWx1ZSkgeyBDUkFTSCgpOyB9CisgICAgTFZhbHVlIGZyb3VuZChMVmFs
dWUgZG91YmxlVmFsdWUpOwogCiAgICAgTFZhbHVlIGxvYWQoVHlwZWRQb2ludGVyLCBMVHlwZSk7
CiAgICAgdm9pZCBzdG9yZShMVmFsdWUsIFR5cGVkUG9pbnRlcik7CkBAIC00ODMsNiArNDgyLDEy
IEBAIGlubGluZSBMVmFsdWUgT3V0cHV0OjpiaXRDYXN0KExWYWx1ZSB2YWx1ZSwgTFR5cGUgdHlw
ZSkKICAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6
Qml0d2lzZUNhc3QsIG9yaWdpbigpLCB2YWx1ZSk7CiB9CiAKK2lubGluZSBMVmFsdWUgT3V0cHV0
Ojpmcm91bmQoTFZhbHVlIGRvdWJsZVZhbHVlKQoreworICAgIExWYWx1ZSBhc0Zsb2F0ID0gbV9i
bG9jay0+YXBwZW5kTmV3PEIzOjpWYWx1ZT4obV9wcm9jLCBCMzo6RG91YmxlVG9GbG9hdCwgb3Jp
Z2luKCksIGRvdWJsZVZhbHVlKTsKKyAgICByZXR1cm4gbV9ibG9jay0+YXBwZW5kTmV3PEIzOjpW
YWx1ZT4obV9wcm9jLCBCMzo6RmxvYXRUb0RvdWJsZSwgb3JpZ2luKCksIGFzRmxvYXQpOworfQor
CiAjaWYgQ09NUElMRVIoQ0xBTkcpCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9wCiAjZW5k
aWYgLy8gQ09NUElMRVIoQ0xBTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZnRsL0ZUTENvbW1vblZhbHVlcy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENv
bW1vblZhbHVlcy5jcHAKaW5kZXggODYyNWI4ZGU0MDgwNGViZDgwYzRkZmQxZTU2Njc0NmExMDMy
MmIxZi4uMDYxNjk0NDQzYzU1MGFkNDgxZGM1MDM5YTBhN2M4MTdjYzk2ODcyYSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ29tbW9uVmFsdWVzLmNwcApAQCAtNDksNiArNDks
NyBAQCBDb21tb25WYWx1ZXM6OkNvbW1vblZhbHVlcyhMQ29udGV4dCBjb250ZXh0KQogICAgICwg
aW50MzIoQjM6OkludDMyKQogICAgICwgaW50NjQoQjM6OkludDY0KQogICAgICwgaW50UHRyKEIz
Ojpwb2ludGVyVHlwZSgpKQorICAgICwgZmxvYXRUeXBlKEIzOjpEb3VsZSkKICAgICAsIGRvdWJs
ZVR5cGUoQjM6OkRvdWJsZSkKICNlbHNlCiAgICAgOiB2b2lkVHlwZShGVEw6OnZvaWRUeXBlKGNv
bnRleHQpKQpAQCAtNTYsMTAgKzU3LDEwIEBAIENvbW1vblZhbHVlczo6Q29tbW9uVmFsdWVzKExD
b250ZXh0IGNvbnRleHQpCiAgICAgLCBpbnQzMihpbnQzMlR5cGUoY29udGV4dCkpCiAgICAgLCBp
bnQ2NChpbnQ2NFR5cGUoY29udGV4dCkpCiAgICAgLCBpbnRQdHIoaW50UHRyVHlwZShjb250ZXh0
KSkKKyAgICAsIGZsb2F0VHlwZShGVEw6OmZsb2F0VHlwZShjb250ZXh0KSkKICAgICAsIGRvdWJs
ZVR5cGUoRlRMOjpkb3VibGVUeXBlKGNvbnRleHQpKQogICAgICwgaW50OChpbnQ4VHlwZShjb250
ZXh0KSkKICAgICAsIGludDE2KGludDE2VHlwZShjb250ZXh0KSkKLSAgICAsIGZsb2F0VHlwZShG
VEw6OmZsb2F0VHlwZShjb250ZXh0KSkKICAgICAsIHJlZjgocG9pbnRlclR5cGUoaW50OCkpCiAg
ICAgLCByZWYxNihwb2ludGVyVHlwZShpbnQxNikpCiAgICAgLCByZWYzMihwb2ludGVyVHlwZShp
bnQzMikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENvbW1vblZh
bHVlcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExDb21tb25WYWx1ZXMuaAppbmRl
eCA2MTYxOTExZDdiYzY3MGM1ZjFlZWJhYzhlYjI1MmE3YzY4OGI3MDE4Li42ZDZhMzViNmYyZGU3
ZDZhNjRiNGUxMWQ3MTdmNjUwM2ZkMzI5N2I4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZnRsL0ZUTENvbW1vblZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9m
dGwvRlRMQ29tbW9uVmFsdWVzLmgKQEAgLTU4LDExICs1OCwxMSBAQCBwdWJsaWM6CiAgICAgY29u
c3QgTFR5cGUgaW50MzI7CiAgICAgY29uc3QgTFR5cGUgaW50NjQ7CiAgICAgY29uc3QgTFR5cGUg
aW50UHRyOworICAgIGNvbnN0IExUeXBlIGZsb2F0VHlwZTsKICAgICBjb25zdCBMVHlwZSBkb3Vi
bGVUeXBlOwogI2lmICFGVExfVVNFU19CMwogICAgIGNvbnN0IExUeXBlIGludDg7CiAgICAgY29u
c3QgTFR5cGUgaW50MTY7Ci0gICAgY29uc3QgTFR5cGUgZmxvYXRUeXBlOwogICAgIGNvbnN0IExU
eXBlIHJlZjg7CiAgICAgY29uc3QgTFR5cGUgcmVmMTY7CiAgICAgY29uc3QgTFR5cGUgcmVmMzI7
Cg==
</data>
<flag name="review"
          id="291731"
          type_id="1"
          status="-"
          setter="fpizlo"
    />
          </attachment>
      

    </bug>

</bugzilla>