<?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>150827</bug_id>
          
          <creation_ts>2015-11-02 17:31:22 -0800</creation_ts>
          <short_desc>[JSC] Add Air lowering for BitOr and impove BitAnd</short_desc>
          <delta_ts>2015-11-03 15:25:44 -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>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>
          
          <blocked>150279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>fpizlo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1138784</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-02 17:31:22 -0800</bug_when>
    <thetext>[JSC] Add Air lowering for BitOr and impove BitAnd</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138785</commentid>
    <comment_count>1</comment_count>
      <attachid>264650</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-02 17:33:13 -0800</bug_when>
    <thetext>Created attachment 264650
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138798</commentid>
    <comment_count>2</comment_count>
      <attachid>264650</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-02 18:34:50 -0800</bug_when>
    <thetext>Comment on attachment 264650
Patch

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

This breaks the build because Patchpoints use immOrTmp.  Patchpoints could actually handle a imm64, so they could just use immForMove.  But that calls into question the use of the name &quot;immForMove&quot; if it&apos;s being used for Patchpoints. ;-)

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:229
&gt; +        // The MacroAssembler move with a 32bit immediate zero extend the value, losing
&gt; +        // the top bits for negative values.

This isn&apos;t true - the X86_64 semantics of a 32-bit immediate is sign extension.  Maybe the semantics call for zero-extension in some instructions but not others?

&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:237
&gt; +        if (value-&gt;representableAs&lt;int64_t&gt;())
&gt; +            return Arg::imm64(value-&gt;asNumber&lt;int64_t&gt;());

I don&apos;t think this belongs here, if the name of the instruction is &quot;ForMove&quot;.  Move in Air cannot do a 64-bit move to an address.  And yet, all of the users of this are happy with 64-bit immediates.  Also, to fix the build you need to use this exactly method for Patchpoints.  That will actually fix a bug: in trunk, Patchpoints will require an extra Move to materialize 64-bit immediates, even though the Patchpoint code will admit an imm64.  Oddly, Patchpoints also accept imm64&apos;s for double uses.

I think there are two paths forward for fixing the Patchpoint build and making this make more sense.  I don&apos;t care which we do:

1) Special-case Patchpoints, maybe with their own helpers, on the grounds that Patchpoints are unusually permissive when it comes to operands.  If you do that, then all callers of immForMove or immOrTmpForMove really want to just emit a move of an immediate-or-whatever to a temporary.  You could make this a lot simpler by introducing a method called moveToTmp(Value*, Tmp).  It will emit a relaxedMoveForType(value-&gt;type()) and it will use whatever immediate it can.

2) Continue to have a method called immOrTmp, rather than immForMove, since this method is called for Patchpoints without actually requiring a separate Move.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138800</commentid>
    <comment_count>3</comment_count>
      <attachid>264650</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2015-11-02 18:43:50 -0800</bug_when>
    <thetext>Comment on attachment 264650
Patch

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

&gt;&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:229
&gt;&gt; +        // the top bits for negative values.
&gt; 
&gt; This isn&apos;t true - the X86_64 semantics of a 32-bit immediate is sign extension.  Maybe the semantics call for zero-extension in some instructions but not others?

Actually, marking r- because I don&apos;t think we want to land this until we have clarity on this issue.  We should ensure that the semantics of Arg::imm in a 64-bit context are consistent.  Either it should be zero extension, or sign extension.  For example, I just tested the following pieces of code and in both cases I got sign extension rather than zero extension:

        .text
        .globl _foo
_foo:   
        mov $-1, %rax
        ret
        
        .globl _bar
_bar:
        add $-1, %rdi
        mov %rdi, %rax
        ret
        
So it would seem that X86 wants to do sign extension.  I believe that the &quot;bug&quot; here is how move(TrustedImm32, RegisterID) is implemented.  It would probably be very risky to fix this bug by changing MacroAssembler behavior.  But, we could introduce a second form of move(TrustedImm32, RegisterID) that does sign extension.  We could call it signExtend32ToPtr(TrustedImm32, RegisterID) and we could do the following in AirOpcode.opcodes:

    Imm, Tmp as signExtend32ToPtr</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138801</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-02 18:55:32 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 264650 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=264650&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/b3/B3LowerToAir.cpp:229
&gt; &gt;&gt; +        // the top bits for negative values.
&gt; &gt; 
&gt; &gt; This isn&apos;t true - the X86_64 semantics of a 32-bit immediate is sign extension.  Maybe the semantics call for zero-extension in some instructions but not others?

That&apos;s a move with REX.W. If you check the x86 MacroAssembler, it does a 32bits moves.
I did not change the implementation since a comment says it is intentional.

I&apos;ll add a signExtend32ToPtr for a REX.W with 32bits immediate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1138846</commentid>
    <comment_count>5</comment_count>
      <attachid>264668</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-02 21:56:36 -0800</bug_when>
    <thetext>Created attachment 264668
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139113</commentid>
    <comment_count>6</comment_count>
      <attachid>264735</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-03 15:08:31 -0800</bug_when>
    <thetext>Created attachment 264735
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139120</commentid>
    <comment_count>7</comment_count>
      <attachid>264735</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-03 15:25:39 -0800</bug_when>
    <thetext>Comment on attachment 264735
Patch

Clearing flags on attachment: 264735

Committed r191983: &lt;http://trac.webkit.org/changeset/191983&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1139121</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2015-11-03 15:25:44 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264650</attachid>
            <date>2015-11-02 17:33:13 -0800</date>
            <delta_ts>2015-11-02 21:56:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150827-20151102173217.patch</filename>
            <type>text/plain</type>
            <size>37219</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZTg0ZDkzZDdiYjFiNWVhM2U3NzlmMWM4ODQ4MzJhMmJlY2U5NGNhLi45MTQ1MzgwZWI5Nzg4Y2Ix
OWY5ZTlhMjcxYzhiMjYwMTMxZDYxMWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNS0xMS0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQWlyIGxvd2VyaW5nIGZvciBCaXRPciBhbmQgaW1w
b3ZlIEJpdEFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLUIzIHRvIEFpciBsb3dlcmluZyBmb3IgQmlyT3Iu
CisgICAgICAgIC1Db2RlZ2VuIGZvciBCaXRPci4KKyAgICAgICAgLVN0cmVuZ3RoIHJlZHVjdGlv
biBmb3IgQml0T3IgYW5kIEJpdEFuZC4KKyAgICAgICAgLVRlc3RzIGZvciBCaXRBbmQgYW5kIEJp
dE9yLgorICAgICAgICAtQnVnIGZpeDogTW92ZTY0IHdpdGggYSBuZWdhdGl2ZSB2YWx1ZSB3YXMg
ZGVzdHJveWluZyB0aGUgdG9wIGJpdHMuCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6Yml0T3JDb25zdGFudCk6CisgICAgICAgICog
YjMvQjNDb25zdDMyVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbnN0NjRWYWx1ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6Yml0T3JDb25zdGFudCk6CisgICAgICAgICogYjMvQjND
b25zdDY0VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjppbW1Gb3JNb3ZlKToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXBGb3JNb3ZlKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6dHJ5T3IpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojp0cnlDb25zdDY0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5VXBz
aWxvbik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUlkZW50aXR5KToK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5UmV0dXJuKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAq
IGIzL0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5zOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
VmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpiaXRPckNv
bnN0YW50KToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvYWlyL0Fpck9w
Y29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0UmV0dXJuQ29uc3Q2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJncyk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kU2FtZUFyZyk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Qml0QW5kSW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJnSW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRJbW1BcmcpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5k
SW1tQml0QW5kQXJnSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdzMzIpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZFNhbWVBcmczMik6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Qml0QW5kSW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdJbW0z
Mik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kSW1tQXJnMzIpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JB
cmdzKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPclNhbWVBcmcpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEJpdE9ySW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JBcmdJbW0p
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE9ySW1tQXJnKToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPcklt
bUJpdE9yQXJnSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckFyZ3MzMik6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JTYW1lQXJnMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dEJpdE9ySW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckFyZ0ltbTMyKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckltbUFyZzMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRPckJpdE9yQXJnSW1tSW1tMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE9ySW1t
Qml0T3JBcmdJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE1LTExLTAyICBN
YXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTbmlwcGVmeSBvcF9hZGQg
Zm9yIHRoZSBiYXNlbGluZSBKSVQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdDMyVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Qz
MlZhbHVlLmNwcAppbmRleCBiMjhmYWYzZDMyZmZmYjJmZGM0NzdiMTY0OWRjZjcwNGMxYzgxZGQx
Li4yZDU5ZjQxYjJmMzdlNmEyYzk5YjFiZWQ1ZTBkMWYzNzczNTVhY2Q0IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKQEAgLTYxLDYgKzYxLDIwIEBAIFZh
bHVlKiBDb25zdDMyVmFsdWU6OnN1YkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90
aGVyKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCBt
X3ZhbHVlIC0gb3RoZXItPmFzSW50MzIoKSk7CiB9CiAKK1ZhbHVlKiBDb25zdDMyVmFsdWU6OmJp
dEFuZENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAg
IGlmICghb3RoZXItPmhhc0ludDMyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJl
dHVybiBwcm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCBtX3ZhbHVlICYgb3RoZXItPmFz
SW50MzIoKSk7Cit9CisKK1ZhbHVlKiBDb25zdDMyVmFsdWU6OmJpdE9yQ29uc3RhbnQoUHJvY2Vk
dXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50
MzIoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0
MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgfCBvdGhlci0+YXNJbnQzMigpKTsKK30KKwogVmFs
dWUqIENvbnN0MzJWYWx1ZTo6ZXF1YWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVlKiBv
dGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaAppbmRleCBmYWM3NjYwZTM1MWJkYjQyOGMwNDI2
NTRlZTdiZDg4NzUxNDc2OTVhLi5iZjAyODFlMTQyZWU4NWE3ZjYyZmNhNDE2MTg4NmMwNzdlNTMz
NDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaApAQCAtNDQs
NiArNDQsOCBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZENvbnN0YW50KFByb2NlZHVyZSYsIGlu
dDMyX3Qgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBhZGRDb25zdGFudChQcm9j
ZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBzdWJDb25z
dGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVl
KiBiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRl
OworICAgIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGVxdWFsQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUq
IG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbm90RXF1YWxDb25zdGFudChQcm9j
ZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmNwcAppbmRleCA4NmUzYzkyMGZkZDVmZGY0OTdiZWRl
ODgxM2E3Mzg2MzAzODIzOTY0Li5lYWVmYTMxYjhlMTM4ZDlhN2QwOWI2NjhiMzJhZWIzNjM1Yzhm
YjhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKQEAg
LTYxLDYgKzYxLDIwIEBAIFZhbHVlKiBDb25zdDY0VmFsdWU6OnN1YkNvbnN0YW50KFByb2NlZHVy
ZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0
VmFsdWU+KG9yaWdpbigpLCBtX3ZhbHVlIC0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKK1ZhbHVl
KiBDb25zdDY0VmFsdWU6OmJpdEFuZENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90
aGVyKSBjb25zdAoreworICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbigpLCBt
X3ZhbHVlICYgb3RoZXItPmFzSW50NjQoKSk7Cit9CisKK1ZhbHVlKiBDb25zdDY0VmFsdWU6OmJp
dE9yQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAg
aWYgKCFvdGhlci0+aGFzSW50NjQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0
dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgfCBvdGhlci0+YXNJ
bnQ2NCgpKTsKK30KKwogVmFsdWUqIENvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudChQcm9jZWR1
cmUmIHByb2MsIFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2
NCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVl
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuaAppbmRleCA2YTEy
YzBjMzk2NTk1Mzg4Zjk5ZTU2YmQxYzU3NDBiMWRjMTNjNTYzLi5jZjM1MmE1MGMxNDk2ZDVlZTll
OTcxMDFkMDU2ZDYyMDQ0ODMyZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdDY0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDY0VmFsdWUuaApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZENvbnN0
YW50KFByb2NlZHVyZSYsIGludDMyX3Qgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVl
KiBhZGRDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIFZhbHVlKiBzdWJDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92
ZXJyaWRlOworICAgIFZhbHVlKiBiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYs
IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGVxdWFsQ29uc3RhbnQo
UHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbm90
RXF1YWxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDhmMzA1NzAy
MDkxOGRhMWRlNGRjYTJkMDIzMTQyMmM4MTQ1OGQyYjMuLmUyYTFlZmIwNGM5ZDFiMWMzZWFlOGZj
NGIzNWQ3MWQ0NDQ1MmJhN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0xvd2VyVG9BaXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCkBAIC0yMjMsOSArMjIzLDI1IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIEFyZygp
OwogICAgIH0KIAotICAgIEFyZyBpbW1PclRtcChWYWx1ZSogdmFsdWUpCisgICAgQXJnIGltbUZv
ck1vdmUoVmFsdWUqIHZhbHVlKQogICAgIHsKLSAgICAgICAgaWYgKEFyZyByZXN1bHQgPSBpbW0o
dmFsdWUpKQorICAgICAgICAvLyBUaGUgTWFjcm9Bc3NlbWJsZXIgbW92ZSB3aXRoIGEgMzJiaXQg
aW1tZWRpYXRlIHplcm8gZXh0ZW5kIHRoZSB2YWx1ZSwgbG9zaW5nCisgICAgICAgIC8vIHRoZSB0
b3AgYml0cyBmb3IgbmVnYXRpdmUgdmFsdWVzLgorICAgICAgICBpZiAodmFsdWUtPnJlcHJlc2Vu
dGFibGVBczxpbnQzMl90PigpKSB7CisgICAgICAgICAgICBpbnQzMl90IGludDMyVmFsdWUgPSB2
YWx1ZS0+YXNOdW1iZXI8aW50MzJfdD4oKTsKKyAgICAgICAgICAgIGlmIChpbnQzMlZhbHVlID49
IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIEFyZzo6aW1tKGludDMyVmFsdWUpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHZhbHVlLT5yZXByZXNlbnRhYmxlQXM8aW50NjRfdD4oKSkKKyAg
ICAgICAgICAgIHJldHVybiBBcmc6OmltbTY0KHZhbHVlLT5hc051bWJlcjxpbnQ2NF90PigpKTsK
KworICAgICAgICByZXR1cm4gQXJnKCk7CisgICAgfQorCisgICAgQXJnIGltbU9yVG1wRm9yTW92
ZShWYWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAoQXJnIHJlc3VsdCA9IGltbUZvck1v
dmUodmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgcmV0dXJuIHRt
cCh2YWx1ZSk7CiAgICAgfQpAQCAtNTg2LDYgKzYwMiwyMSBAQCBwdWJsaWM6CiAgICAgICAgIH0K
ICAgICB9CiAKKyAgICBib29sIHRyeU9yKFZhbHVlKiBsZWZ0LCBWYWx1ZSogcmlnaHQpCisgICAg
eworICAgICAgICBzd2l0Y2ggKGxlZnQtPnR5cGUoKSkgeworICAgICAgICBjYXNlIEludDMyOgor
ICAgICAgICAgICAgYXBwZW5kQmluT3A8T3IzMiwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjYXNlIEludDY0OgorICAgICAgICAg
ICAgYXBwZW5kQmluT3A8T3I2NCwgQ29tbXV0YXRpdmU+KGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLy8gRklYTUU6
IEltcGxlbWVudCBtb3JlIHR5cGVzIQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisgICAgfQorCiAgICAgYm9vbCB0cnlTaGwoVmFsdWUqIHZhbHVlLCBWYWx1ZSogYW1vdW50
KQogICAgIHsKICAgICAgICAgQWlyOjpPcGNvZGUgb3Bjb2RlID0gdmFsdWUtPnR5cGUoKSA9PSBJ
bnQzMiA/IExzaGlmdDMyIDogTHNoaWZ0NjQ7CkBAIC02OTEsMTEgKzcyMiw3IEBAIHB1YmxpYzoK
ICAgICAKICAgICBib29sIHRyeUNvbnN0NjQoKQogICAgIHsKLSAgICAgICAgaWYgKGltbShjdXJy
ZW50VmFsdWUpKSB7Ci0gICAgICAgICAgICBhcHBlbmQoTW92ZSwgaW1tKGN1cnJlbnRWYWx1ZSks
IHRtcChjdXJyZW50VmFsdWUpKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9
Ci0gICAgICAgIGFwcGVuZChNb3ZlLCBBcmc6OmltbTY0KGN1cnJlbnRWYWx1ZS0+YXNJbnQ2NCgp
KSwgdG1wKGN1cnJlbnRWYWx1ZSkpOworICAgICAgICBhcHBlbmQoTW92ZSwgaW1tRm9yTW92ZShj
dXJyZW50VmFsdWUpLCB0bXAoY3VycmVudFZhbHVlKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KIApAQCAtNzE4LDcgKzc0NSw3IEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIGFwcGVu
ZCgKICAgICAgICAgICAgIHJlbGF4ZWRNb3ZlRm9yVHlwZSh2YWx1ZS0+dHlwZSgpKSwKLSAgICAg
ICAgICAgIGltbU9yVG1wKHZhbHVlKSwKKyAgICAgICAgICAgIGltbU9yVG1wRm9yTW92ZSh2YWx1
ZSksCiAgICAgICAgICAgICB0bXAoY3VycmVudFZhbHVlLT5hczxVcHNpbG9uVmFsdWU+KCktPnBo
aSgpKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KQEAgLTc4MiwxMyArODA5LDEzIEBA
IHB1YmxpYzoKIAogICAgIGJvb2wgdHJ5SWRlbnRpdHkoVmFsdWUqIHZhbHVlKQogICAgIHsKLSAg
ICAgICAgYXBwZW5kKHJlbGF4ZWRNb3ZlRm9yVHlwZSh2YWx1ZS0+dHlwZSgpKSwgaW1tT3JUbXAo
dmFsdWUpLCB0bXAoY3VycmVudFZhbHVlKSk7CisgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZv
clR5cGUodmFsdWUtPnR5cGUoKSksIGltbU9yVG1wRm9yTW92ZSh2YWx1ZSksIHRtcChjdXJyZW50
VmFsdWUpKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIAogICAgIGJvb2wgdHJ5
UmV0dXJuKFZhbHVlKiB2YWx1ZSkKICAgICB7Ci0gICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZv
clR5cGUodmFsdWUtPnR5cGUoKSksIGltbU9yVG1wKHZhbHVlKSwgVG1wKEdQUkluZm86OnJldHVy
blZhbHVlR1BSKSk7CisgICAgICAgIGFwcGVuZChyZWxheGVkTW92ZUZvclR5cGUodmFsdWUtPnR5
cGUoKSksIGltbU9yVG1wRm9yTW92ZSh2YWx1ZSksIFRtcChHUFJJbmZvOjpyZXR1cm5WYWx1ZUdQ
UikpOwogICAgICAgICBhcHBlbmQoUmV0KTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJpbmdNYXRjaGVyLnBh
dHRlcm5zIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRl
cm5zCmluZGV4IDMxMWFjMTE3ZjIzZDE1MmQzMjVlMjE3YjJmOGE3NDJjYjBiZWUwNjAuLjJjM2M5
YmE5ZjNkMjM2ODJkYmRjYWU0NWFiN2FiYTRmOTljNTU4NjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyaW5nTWF0Y2hlci5wYXR0ZXJucworKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlcmluZ01hdGNoZXIucGF0dGVybnMKQEAgLTMzLDYgKzMz
LDcgQEAgTG9hZCA9IExvYWQoYWRkcmVzcykKIEFkZCA9IEFkZChsZWZ0LCByaWdodCkKIFN1YiA9
IFN1YihsZWZ0LCByaWdodCkKIEFuZCA9IEJpdEFuZChsZWZ0LCByaWdodCkKK09yID0gQml0T3Io
bGVmdCwgcmlnaHQpCiAKIFNobCA9IFNobCh2YWx1ZSwgYW1vdW50KQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggZTBlZWRlNDZlODE4NWRj
ODA3NGViMzQ5MTdjOTQ2NmE5YWM3Y2I0ZS4uM2UzNjAyNWIxNWQ0NGNjNjQ2MDMwMWQ5MmI1NGY3
MDg4ZDNkNTQ5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNl
U3RyZW5ndGguY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVu
Z3RoLmNwcApAQCAtMTM3LDYgKzEzNywxMDQgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgYnJl
YWs7CiAKKyAgICAgICAgY2FzZSBCaXRBbmQ6CisgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2
aXR5KCk7CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKGNvbnN0YW50MSwgY29u
c3RhbnQyKQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiBjb25zdGFudDEgJiBjb25zdGFudDIK
KyAgICAgICAgICAgIGlmIChWYWx1ZSogY29uc3RhbnRCaXRBbmQgPSBtX3ZhbHVlLT5jaGlsZCgw
KS0+Yml0QW5kQ29uc3RhbnQobV9wcm9jLCBtX3ZhbHVlLT5jaGlsZCgxKSkpIHsKKyAgICAgICAg
ICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKGNvbnN0YW50Qml0QW5kKTsKKyAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBC
aXRBbmQoQml0QW5kKHZhbHVlLCBjb25zdGFudDEpLCBjb25zdGFudDIpCisgICAgICAgICAgICAv
LyBJbnRvIHRoaXM6IEJpdEFuZCh2YWx1ZSwgY29uc3RhbnQxICYgY29uc3RhbnQyKS4KKyAgICAg
ICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQml0QW5kKSB7CisgICAg
ICAgICAgICAgICAgVmFsdWUqIG5ld0NvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMSktPmJpdEFu
ZENvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKTsKKyAgICAgICAg
ICAgICAgICBpZiAobmV3Q29uc3RhbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRp
b25TZXQuaW5zZXJ0VmFsdWUobV9pbmRleCwgbmV3Q29uc3RhbnQpOworICAgICAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5jaGlsZCgwKSA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMSkgPSBuZXdDb25zdGFudDsKKyAgICAg
ICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKHZhbHVlWCwgdmFs
dWVYKQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiB2YWx1ZVguCisgICAgICAgICAgICBpZiAo
bV92YWx1ZS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAgICAg
ICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAg
ICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdEFuZCh2YWx1ZSwgemVy
by1jb25zdGFudCkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogemVyby1jb25zdGFudC4KKyAg
ICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkpIHsKKyAgICAgICAgICAg
ICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAg
ICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdEFuZCh2YWx1ZSwg
YWxsLW9uZXMpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IHZhbHVlLgorICAgICAgICAgICAg
aWYgKChtX3ZhbHVlLT50eXBlKCkgPT0gSW50NjQgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50
KDB4ZmZmZmZmZmZmZmZmZmZmZikpCisgICAgICAgICAgICAgICAgfHwgKG1fdmFsdWUtPnR5cGUo
KSA9PSBJbnQzMiAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMHhmZmZmZmZmZikpKSB7Cisg
ICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGls
ZCgwKSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSBCaXRPcjoKKyAgICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKKworICAgICAg
ICAgICAgLy8gVHVybiB0aGlzOiBCaXRPcihjb25zdGFudDEsIGNvbnN0YW50MikKKyAgICAgICAg
ICAgIC8vIEludG8gdGhpczogY29uc3RhbnQxIHwgY29uc3RhbnQyCisgICAgICAgICAgICBpZiAo
VmFsdWUqIGNvbnN0YW50Qml0QW5kID0gbV92YWx1ZS0+Y2hpbGQoMCktPmJpdE9yQ29uc3RhbnQo
bV9wcm9jLCBtX3ZhbHVlLT5jaGlsZCgxKSkpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlV2l0
aE5ld1ZhbHVlKGNvbnN0YW50Qml0QW5kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRBbmQoQml0QW5kKHZhbHVl
LCBjb25zdGFudDEpLCBjb25zdGFudDIpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdEFu
ZCh2YWx1ZSwgY29uc3RhbnQxICYgY29uc3RhbnQyKS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVl
LT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQml0T3IpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSog
bmV3Q29uc3RhbnQgPSBtX3ZhbHVlLT5jaGlsZCgxKS0+Yml0T3JDb25zdGFudChtX3Byb2MsIG1f
dmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgaWYgKG5ld0NvbnN0
YW50KSB7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydFZhbHVlKG1f
aW5kZXgsIG5ld0NvbnN0YW50KTsKKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQo
MCkgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgICAgIG1f
dmFsdWUtPmNoaWxkKDEpID0gbmV3Q29uc3RhbnQ7CisgICAgICAgICAgICAgICAgICAgIG1fY2hh
bmdlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUdXJuIHRoaXM6IEJpdE9yKHZhbHVlWCwgdmFsdWVYKQorICAgICAgICAgICAgLy8g
SW50byB0aGlzOiB2YWx1ZVguCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCkgPT0g
bV92YWx1ZS0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0
aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAvLyBUdXJuIHRoaXM6IEJpdE9yKHZhbHVlLCB6ZXJvLWNvbnN0YW50KQorICAgICAgICAg
ICAgLy8gSW50byB0aGlzOiB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgx
KS0+aXNJbnQoMCkpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50
aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAv
LyBUdXJuIHRoaXM6IEJpdE9yKHZhbHVlLCBhbGwtb25lcykKKyAgICAgICAgICAgIC8vIEludG8g
dGhpczogYWxsLW9uZXMuCisgICAgICAgICAgICBpZiAoKG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQ2
NCAmJiBtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMHhmZmZmZmZmZmZmZmZmZmZmKSkKKyAgICAg
ICAgICAgICAgICB8fCAobV92YWx1ZS0+dHlwZSgpID09IEludDMyICYmIG1fdmFsdWUtPmNoaWxk
KDEpLT5pc0ludCgweGZmZmZmZmZmKSkpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBs
YWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBicmVhazsKKwogICAgICAgICBjYXNlIExvYWQ4WjoKICAgICAgICAgY2FzZSBM
b2FkOFM6CiAgICAgICAgIGNhc2UgTG9hZDE2WjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy9CM1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVl
LmNwcAppbmRleCBiZTA1OWUzN2Y4Njk3NzQ5YmYxOTAwMjcyNzY4M2RhMjM1Nzg2ZWJjLi42ZjY4
MzRhODU1NzUzMjgyODU3ZmQ3MTBmMDYwNjY2OGVlNmM2NzliIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2IzL0IzVmFsdWUuY3BwCkBAIC0xMjcsNiArMTI3LDE2IEBAIFZhbHVlKiBWYWx1ZTo6c3ViQ29u
c3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQog
CitWYWx1ZSogVmFsdWU6OmJpdEFuZENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKikgY29uc3QK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworVmFsdWUqIFZhbHVlOjpiaXRPckNvbnN0YW50
KFByb2NlZHVyZSYsIFZhbHVlKikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwog
VmFsdWUqIFZhbHVlOjplcXVhbENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKikgY29uc3QKIHsK
ICAgICByZXR1cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1ZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IGJj
NjY5M2ZkZTEyMDM1ZGRkYmYxYzQ2YmYzZGM3MjA4YjJkYmRiOTcuLjA3MjJiZDI5ZDUwYzE1N2Fh
N2NmMDZlMzkyODU1OTI5M2Y1N2YwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM1ZhbHVlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaApA
QCAtMTEyLDYgKzExMiw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZhbHVlKiBhZGRDb25zdGFu
dChQcm9jZWR1cmUmLCBpbnQzMl90IG90aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBh
ZGRDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwg
VmFsdWUqIHN1YkNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Q7CisgICAg
dmlydHVhbCBWYWx1ZSogYml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBj
b25zdDsKKyAgICB2aXJ0dWFsIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVl
KiBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVhbCBWYWx1ZSogZXF1YWxDb25zdGFudChQcm9jZWR1
cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIG5vdEVxdWFsQ29u
c3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMTEwMzE2OTRiODZlYjdj
ZjlmNDM2ZThhMTAwYjNlYjk5Zjg5ZGY5Ny4uM2ZkZmM2NTMzYmRhZTc4YjdkODRkNTY2NDk1ODAx
MzgxYjg5OTMzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJP
cGNvZGUub3Bjb2RlcworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzCkBAIC0xMDcsNiArMTA3LDE3IEBAIExzaGlmdDMyIFU6RywgVUQ6RwogICAgIFRt
cCosIFRtcAogICAgIEltbSwgVG1wCiAKK09yMzIgVTpHLCBVRDpHCisgICAgVG1wLCBUbXAKKyAg
ICBJbW0sIFRtcAorICAgIFRtcCwgQWRkcgorICAgIEFkZHIsIFRtcAorICAgIEltbSwgQWRkcgor
CitPcjY0IFU6RywgVUQ6RworICAgIFRtcCwgVG1wCisgICAgSW1tLCBUbXAKKwogTHNoaWZ0NjQg
VTpHLCBVRDpHCiAgICAgVG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKaW5kZXggMWVkMTRiZGMzNjc4MGMxODdhZTY5ZGQwYmJiODczMTkzNGJkY2Vm
MC4uNDgxZDY3YTQ3NzA0ZWNjNTk5M2I3MWFhYTNkZTE3ZGNkZjZjZDgxMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAgLTEyMCw2ICsxMjAsMTcgQEAgdm9pZCB0ZXN0QXJnKGlu
dCBhcmd1bWVudCkKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYXJndW1lbnQp
ID09IGFyZ3VtZW50KTsKIH0KIAordm9pZCB0ZXN0UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVl
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCB2YWx1ZSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxp
bnQ2NF90Pihwcm9jKSA9PSB2YWx1ZSk7Cit9CisKIHZvaWQgdGVzdEFkZEFyZ3MoaW50IGEsIGlu
dCBiKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMjcyLDYgKzI4Myw0NjEgQEAgdm9pZCB0
ZXN0U3ViSW1tQXJnMzIoaW50IGEsIGludCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBiKSA9PSBhIC0gYik7CiB9CiAKK3ZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRfdCBh
LCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYikgPT0gKGEgJiBiKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdEFuZFNhbWVBcmcoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIGFyZ3VtZW50LAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJp
dEFuZEltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4o
cHJvYykgPT0gKGEgJiBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbShpbnQ2NF90IGEs
IGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290
ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAor
ICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5m
bzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBhKSA9PSAoYSAmIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kSW1tQXJnKGlu
dDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludDY0X3Q+KHByb2MsIGIpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRC
aXRBbmRBcmdJbW1JbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICBQ
cm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOwor
ICAgIFZhbHVlKiBpbm5lckJpdEFuZCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
IHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lckJpdEFuZCwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoKGEgJiBiKSAm
IGMpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tKGludDY0X3QgYSwgaW50
NjRfdCBiLCBpbnQ2NF90IGMpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogaW5uZXJCaXRBbmQgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQ
UkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFs
dWU+KHByb2MsIE9yaWdpbigpLCBjKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAor
ICAgICAgICAgICAgaW5uZXJCaXRBbmQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYikgPT0gKGEgJiAoYiAmIGMpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFy
Z3MzMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9j
ayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZh
bHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IChhICYgYikpOworfQorCit2
b2lkIHRlc3RCaXRBbmRTYW1lQXJnMzIoaW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1l
bnQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICBhcmd1bWVudCwKKyAgICAgICAgICAgIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhjb21waWxl
QW5kUnVuPGludD4ocHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbXMzMihp
bnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikp
KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSAoYSAmIGIpKTsKK30K
Kwordm9pZCB0ZXN0Qml0QW5kQXJnSW1tMzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVy
ZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBC
aXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjph
cmd1bWVudEdQUjApKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHBy
b2MsIGEpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1BcmczMihpbnQgYSwg
aW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEgJiBiKSk7Cit9CisKK3ZvaWQgdGVz
dEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICBWYWx1ZSogaW5uZXJCaXRBbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBw
cm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAor
ICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3Jp
Z2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lckJp
dEFuZCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBjKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09
ICgoYSAmIGIpICYgYykpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0zMihp
bnQgYSwgaW50IGIsIGludCBjKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQs
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgaW5uZXJCaXRBbmQpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSAmIChiICYgYykpKTsKK30KKwordm9p
ZCB0ZXN0Qml0T3JBcmdzKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRP
ciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1
ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICBy
b290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86
OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJv
YywgYSwgYikgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yU2FtZUFyZyhpbnQ2NF90
IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2Mu
YWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3Jp
Z2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9j
LCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAgICAgIGFy
Z3VtZW50KSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09
IGEpOworfQorCit2b2lkIHRlc3RCaXRPckltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxD
b25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0
T3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7Cisg
ICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmRO
ZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0so
Y29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0
ZXN0Qml0T3JJbW1BcmcoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9y
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAg
Q0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKK30KKwor
dm9pZCB0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRf
dCBjKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRH
UFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGIpKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJv
YywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGlubmVyQml0T3Is
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYykpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0g
KChhIHwgYikgfCBjKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0oaW50NjRf
dCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdE9y
ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
YSksCisgICAgICAgICAgICBpbm5lckJpdE9yKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVu
PGludDY0X3Q+KHByb2MsIGIpID09IChhIHwgKGIgfCBjKSkpOworfQorCit2b2lkIHRlc3RCaXRP
ckFyZ3MzMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSwgYikgPT0gKGEgfCBiKSk7Cit9CisK
K3ZvaWQgdGVzdEJpdE9yU2FtZUFyZzMyKGludCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdp
bigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIGFyZ3VtZW50LAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSBhKTsKK30KKwordm9pZCB0ZXN0
Qml0T3JJbW1zMzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJh
c2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSAo
YSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdJbW0zMihpbnQgYSwgaW50IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRS
dW48aW50Pihwcm9jLCBhKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JJbW1Bcmcz
MihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayog
cm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVl
PigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5k
TmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywg
VHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKwor
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKK30KKwor
dm9pZCB0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogaW5uZXJCaXRPciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5l
ckJpdE9yLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGMpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkg
PT0gKChhIHwgYikgfCBjKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMihp
bnQgYSwgaW50IGIsIGludCBjKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0T3IgPSByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOworICAgIHJvb3QtPmFwcGVu
ZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0T3IsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGEpLAorICAgICAgICAgICAgaW5uZXJCaXRPcikpOworCisgICAgQ0hFQ0soY29t
cGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IChhIHwgKGIgfCBjKSkpOworfQorCiB2b2lkIHRl
c3RTdG9yZShpbnQgdmFsdWUpCiB7CiAgICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMjIzLDYgKzE2
ODksOCBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3Q0MigpKTsK
ICAgICBSVU4odGVzdExvYWQ0MigpKTsKICAgICBSVU4odGVzdEFyZyg0MykpOworICAgIFJVTih0
ZXN0UmV0dXJuQ29uc3Q2NCg1KSk7CisgICAgUlVOKHRlc3RSZXR1cm5Db25zdDY0KC00MikpOwog
CiAgICAgUlVOKHRlc3RBZGRBcmdzKDEsIDEpKTsKICAgICBSVU4odGVzdEFkZEFyZ3MoMSwgMikp
OwpAQCAtMTI2Miw2ICsxNzMwLDExMiBAQCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAg
ICAgUlVOKHRlc3RTdWJJbW1BcmczMigxMywgLTQyKSk7CiAgICAgUlVOKHRlc3RTdWJJbW1Bcmcz
MigtMTMsIDQyKSk7CiAKKyAgICBSVU4odGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7CisgICAgUlVO
KHRlc3RCaXRBbmRBcmdzKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDEwLCAzKSk7
CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBS
VU4odGVzdEJpdEFuZFNhbWVBcmcoNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoMCkp
OworICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZygzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1l
QXJnKDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tcyg0MywgNDMp
KTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdEFuZElt
bXMoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMoNDIsIDB4ZmZmZmZmZmZmZmZmZmZm
ZikpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0
QW5kQXJnSW1tKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oMTAsIDMpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZEFyZ0ltbSg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVO
KHRlc3RCaXRBbmRJbW1BcmcoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmcoNDMs
IDApKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUFyZygxMCwgMykpOworICAgIFJVTih0ZXN0Qml0
QW5kSW1tQXJnKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJp
dEFuZEFyZ0ltbUltbSgyLCA3LCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1J
bW0oMSwgNiwgNikpOworICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tKDB4ZmZmZiwg
MjQsIDcpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbSg3LCAyLCAzKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0oNiwgMSwgNikpOworICAgIFJVTih0ZXN0
Qml0QW5kSW1tQml0QW5kQXJnSW1tKDI0LCAweGZmZmYsIDcpKTsKKyAgICBSVU4odGVzdEJpdEFu
ZEFyZ3MzMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ3MzMig0MywgMCkpOworICAg
IFJVTih0ZXN0Qml0QW5kQXJnczMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIo
NDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmczMig0MykpOworICAg
IFJVTih0ZXN0Qml0QW5kU2FtZUFyZzMyKDApKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcz
MigzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnMzIoMHhmZmZmZmZmZikpOworICAgIFJV
Tih0ZXN0Qml0QW5kSW1tczMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tczMyKDQz
LCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1zMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEltbXMzMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tMzIo
NDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0zMig0MywgMCkpOworICAgIFJVTih0
ZXN0Qml0QW5kQXJnSW1tMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDQy
LCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MywgNDMpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZEltbUFyZzMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1B
cmczMigxMCwgMykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoNDIsIDB4ZmZmZmZmZmYp
KTsKKyAgICBSVU4odGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMyKDIsIDcsIDMpKTsKKyAgICBS
VU4odGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMyKDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEJpdEFuZEFyZ0ltbUltbTMyKDB4ZmZmZiwgMjQsIDcpKTsKKyAgICBSVU4odGVzdEJpdEFu
ZEltbUJpdEFuZEFyZ0ltbTMyKDcsIDIsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFu
ZEFyZ0ltbTMyKDYsIDEsIDYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMy
KDI0LCAweGZmZmYsIDcpKTsKKworICAgIFJVTih0ZXN0Qml0T3JBcmdzKDQzLCA0MykpOworICAg
IFJVTih0ZXN0Qml0T3JBcmdzKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MoMTAsIDMp
KTsKKyAgICBSVU4odGVzdEJpdE9yQXJncyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAg
UlVOKHRlc3RCaXRPclNhbWVBcmcoNDMpKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZygwKSk7
CisgICAgUlVOKHRlc3RCaXRPclNhbWVBcmcoMykpOworICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJn
KDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zKDQzLCA0MykpOwor
ICAgIFJVTih0ZXN0Qml0T3JJbW1zKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMoMTAs
IDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tcyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7Cisg
ICAgUlVOKHRlc3RCaXRPckFyZ0ltbSg0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1t
KDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbSgxMCwgMykpOworICAgIFJVTih0ZXN0
Qml0T3JBcmdJbW0oNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JJ
bW1BcmcoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZyg0MywgMCkpOworICAgIFJV
Tih0ZXN0Qml0T3JJbW1BcmcoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnKDQyLCAw
eGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0oMiwg
NywgMykpOworICAgIFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbSgxLCA2LCA2KSk7CisgICAg
UlVOKHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKDB4ZmZmZiwgMjQsIDcpKTsKKyAgICBSVU4odGVz
dEJpdE9ySW1tQml0T3JBcmdJbW0oNywgMiwgMykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRP
ckFyZ0ltbSg2LCAxLCA2KSk7CisgICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKDI0LCAw
eGZmZmYsIDcpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnczMyKDQzLCA0MykpOworICAgIFJVTih0
ZXN0Qml0T3JBcmdzMzIoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnczMyKDEwLCAzKSk7
CisgICAgUlVOKHRlc3RCaXRPckFyZ3MzMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0
Qml0T3JTYW1lQXJnMzIoNDMpKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZzMyKDApKTsKKyAg
ICBSVU4odGVzdEJpdE9yU2FtZUFyZzMyKDMpKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZzMy
KDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tczMyKDQzLCA0MykpOworICAgIFJV
Tih0ZXN0Qml0T3JJbW1zMzIoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tczMyKDEwLCAz
KSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMzMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0
ZXN0Qml0T3JBcmdJbW0zMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tMzIoNDMs
IDApKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJp
dE9yQXJnSW1tMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIo
NDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZzMyKDQzLCAwKSk7CisgICAgUlVOKHRl
c3RCaXRPckltbUFyZzMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZzMyKDQyLCAw
eGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tMzIoMiwgNywgMykp
OworICAgIFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbTMyKDEsIDYsIDYpKTsKKyAgICBSVU4o
dGVzdEJpdE9yQml0T3JBcmdJbW1JbW0zMigweGZmZmYsIDI0LCA3KSk7CisgICAgUlVOKHRlc3RC
aXRPckltbUJpdE9yQXJnSW1tMzIoNywgMiwgMykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRP
ckFyZ0ltbTMyKDYsIDEsIDYpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMigy
NCwgMHhmZmZmLCA3KSk7CisKICAgICBSVU4odGVzdFN0b3JlKDQ0KSk7CiAgICAgUlVOKHRlc3RT
dG9yZUNvbnN0YW50KDQ5KSk7CiAgICAgUlVOKHRlc3RTdG9yZUNvbnN0YW50UHRyKDQ5KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264668</attachid>
            <date>2015-11-02 21:56:36 -0800</date>
            <delta_ts>2015-11-03 15:08:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150827-20151102215540.patch</filename>
            <type>text/plain</type>
            <size>39349</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
ZmFkYjI0ZGFhMzBjN2UxYjJhYjQwOGEzYjlhOTFkMTFkYWM4NzQ5Li5hMDMzYmY1MTU5Mjk3ZWY2
MjgxYmI4NjIzNmYwMDEzNjNlMTQ4MjU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNS0xMS0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQWlyIGxvd2VyaW5nIGZvciBCaXRPciBhbmQgaW1w
b3ZlIEJpdEFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgSW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLUIzIHRvIEFpciBsb3dlcmluZyBmb3IgQmlyT3Iu
CisgICAgICAgIC1Db2RlZ2VuIGZvciBCaXRPci4KKyAgICAgICAgLVN0cmVuZ3RoIHJlZHVjdGlv
biBmb3IgQml0T3IgYW5kIEJpdEFuZC4KKyAgICAgICAgLVRlc3RzIGZvciBCaXRBbmQgYW5kIEJp
dE9yLgorICAgICAgICAtQnVnIGZpeDogTW92ZTY0IHdpdGggYSBuZWdhdGl2ZSB2YWx1ZSB3YXMg
ZGVzdHJveWluZyB0aGUgdG9wIGJpdHMuCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5j
cHA6CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAg
ICAgICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6Yml0T3JDb25zdGFudCk6CisgICAgICAgICog
YjMvQjNDb25zdDMyVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbnN0NjRWYWx1ZS5jcHA6Cisg
ICAgICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAg
KEpTQzo6QjM6OkNvbnN0NjRWYWx1ZTo6Yml0T3JDb25zdGFudCk6CisgICAgICAgICogYjMvQjND
b25zdDY0VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAo
SlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjppbW1Gb3JNb3ZlKToKKyAgICAgICAgKEpTQzo6QjM6
OkFpcjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXBGb3JNb3ZlKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6dHJ5T3IpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWly
Ojp0cnlDb25zdDY0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5VXBz
aWxvbik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUlkZW50aXR5KToK
KyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5UmV0dXJuKToKKyAgICAgICAg
KEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAq
IGIzL0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5zOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3Ry
ZW5ndGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6
VmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpiaXRPckNv
bnN0YW50KToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvYWlyL0Fpck9w
Y29kZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0UmV0dXJuQ29uc3Q2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJncyk6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kU2FtZUFyZyk6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Qml0QW5kSW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJnSW1tKToK
KyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRJbW1BcmcpOgorICAgICAgICAoSlNDOjpCMzo6
dGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5k
SW1tQml0QW5kQXJnSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdzMzIpOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZFNhbWVBcmczMik6CisgICAgICAgIChKU0M6OkIz
Ojp0ZXN0Qml0QW5kSW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdJbW0z
Mik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kSW1tQXJnMzIpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JB
cmdzKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPclNhbWVBcmcpOgorICAgICAgICAoSlND
OjpCMzo6dGVzdEJpdE9ySW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JBcmdJbW0p
OgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE9ySW1tQXJnKToKKyAgICAgICAgKEpTQzo6QjM6
OnRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPcklt
bUJpdE9yQXJnSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckFyZ3MzMik6CisgICAg
ICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JTYW1lQXJnMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dEJpdE9ySW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckFyZ0ltbTMyKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckltbUFyZzMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRPckJpdE9yQXJnSW1tSW1tMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE9ySW1t
Qml0T3JBcmdJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE1LTExLTAyICBT
YWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFdyb25nIHZhbHVlIHJl
Y292ZXJ5IGZvciBERkcgdHJ5L2NhdGNoIHdpdGggYSBnZXR0ZXIgdGhhdCB0aHJvd3MgZHVyaW5n
IGFuIElDIG1pc3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggM2VhMTQzYzNhODBj
YTdlZjFlNDQxMmY4ZGQ2NjRjYmFkODE0YzIwYy4uYzNhZjExMmQzNWQ3MTY1Zjg4MzcwOTk2OGE4
OGNkODE0MmI4YjBiOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3Jp
cHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTMxOTksNyAr
MzE5OSw3IEBACiAJCTcwQjBBOUQwMUE5QjY2MjAwMDAxMzA2QSAvKiBSdW50aW1lRmxhZ3MuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUnVudGltZUZsYWdzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA3MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRv
clByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJdGVy
YXRvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwREMzRTA4
MUIyREYyQzcwMDA1NDI5OSAvKiBJdGVyYXRvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJdGVyYXRvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQk3MERFOUEwODFCRTdENjcwMDA1RDg5RDkgLyogTExJbnRBc3NlbWJseS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBMTEludEFzc2VtYmx5Lmg7IHBhdGggPSBM
TEludEFzc2VtYmx5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcwREU5QTA4MUJF
N0Q2NzAwMDVEODlEOSAvKiBMTEludEFzc2VtYmx5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IExMSW50QXNzZW1ibHkuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NzBFQzBFQkMxQUEwRDdEQTAwQjZBQUZBIC8qIEpTU3RyaW5nSXRlcmF0b3IuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNTdHJpbmdJdGVyYXRvci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcwRUMwRUJEMUFBMEQ3REEwMEI2QUFGQSAvKiBKU1N0
cmluZ0l0ZXJhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTU3RyaW5n
SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzBFQzBFQzAxQUEwRDdE
QTAwQjZBQUZBIC8qIFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFN0cmluZ0l0ZXJhdG9yUHJvdG90eXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24uaAppbmRleCA0YTZjZTdkNTY4YzVl
ZDE5MmQ5MzE0ZWMyOWZiMDg2ZWZjNTQ3NGFlLi42N2FjYzViMjMzZjhlZTY3OTJjNzg1YTAyODBi
NWUyNmRjZGRmNzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyWDg2Q29tbW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4NkNvbW1vbi5oCkBAIC0xMDUyLDYgKzEwNTIsMTEgQEAg
cHVibGljOgogICAgICAgICAgICAgbV9hc3NlbWJsZXIueGNoZ3FfcnIocmVnMSwgcmVnMik7CiAg
ICAgfQogCisgICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0cihUcnVzdGVkSW1tMzIgaW1tLCBSZWdp
c3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci5tb3ZfaTMycihpbW0ubV92
YWx1ZSwgZGVzdCk7CisgICAgfQorCiAgICAgdm9pZCBzaWduRXh0ZW5kMzJUb1B0cihSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92
c3hkX3JyKHNyYywgZGVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL1g4NkFzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9Y
ODZBc3NlbWJsZXIuaAppbmRleCA3M2VhYjlmM2Q4OWZhMzE0YjY3ZmRiOWYzMWQ5NzFiODk0MmQ4
YTdkLi40ODJlNmZhODk0YzFhMzYxODNmYjlmMjljYzFlNTRjMzVhN2M0NjY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKQEAgLTE0OTIsNiAr
MTQ5MiwxMiBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX01P
Vl9FQVhJdiwgZHN0KTsKICAgICAgICAgbV9mb3JtYXR0ZXIuaW1tZWRpYXRlNjQoaW1tKTsKICAg
ICB9CisKKyAgICB2b2lkIG1vdl9pMzJyKGludDMyX3QgaW1tLCBSZWdpc3RlcklEIGRzdCkKKyAg
ICB7CisgICAgICAgIG1fZm9ybWF0dGVyLm9uZUJ5dGVPcDY0KE9QX0dST1VQMTFfRXZJeiwgR1JP
VVAxMV9NT1YsIGRzdCk7CisgICAgICAgIG1fZm9ybWF0dGVyLmltbWVkaWF0ZTMyKGltbSk7Cisg
ICAgfQogICAgIAogICAgIHZvaWQgbW92c3hkX3JyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRzdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDMyVmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNw
cAppbmRleCBiMjhmYWYzZDMyZmZmYjJmZGM0NzdiMTY0OWRjZjcwNGMxYzgxZGQxLi4yZDU5ZjQx
YjJmMzdlNmEyYzk5YjFiZWQ1ZTBkMWYzNzczNTVhY2Q0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAKQEAgLTYxLDYgKzYxLDIwIEBAIFZhbHVlKiBDb25z
dDMyVmFsdWU6OnN1YkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25z
dAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCBtX3ZhbHVlIC0g
b3RoZXItPmFzSW50MzIoKSk7CiB9CiAKK1ZhbHVlKiBDb25zdDMyVmFsdWU6OmJpdEFuZENvbnN0
YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAoreworICAgIGlmICghb3Ro
ZXItPmhhc0ludDMyKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIHJldHVybiBwcm9j
LmFkZDxDb25zdDMyVmFsdWU+KG9yaWdpbigpLCBtX3ZhbHVlICYgb3RoZXItPmFzSW50MzIoKSk7
Cit9CisKK1ZhbHVlKiBDb25zdDMyVmFsdWU6OmJpdE9yQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9j
LCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4o
b3JpZ2luKCksIG1fdmFsdWUgfCBvdGhlci0+YXNJbnQzMigpKTsKK30KKwogVmFsdWUqIENvbnN0
MzJWYWx1ZTo6ZXF1YWxDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVlKiBvdGhlcikgY29u
c3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNDb25zdDMyVmFsdWUuaAppbmRleCBmYWM3NjYwZTM1MWJkYjQyOGMwNDI2NTRlZTdiZDg4
NzUxNDc2OTVhLi5iZjAyODFlMTQyZWU4NWE3ZjYyZmNhNDE2MTg4NmMwNzdlNTMzNDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuaApAQCAtNDQsNiArNDQsOCBA
QCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZENvbnN0YW50KFByb2NlZHVyZSYsIGludDMyX3Qgb3Ro
ZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBhZGRDb25zdGFudChQcm9jZWR1cmUmLCBW
YWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBzdWJDb25zdGFudChQcm9j
ZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXRBbmRD
b25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOworICAgIFZh
bHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgVmFsdWUqIGVxdWFsQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBj
b25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbm90RXF1YWxDb25zdGFudChQcm9jZWR1cmUmLCBW
YWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3Q2NFZhbHVlLmNwcAppbmRleCA4NmUzYzkyMGZkZDVmZGY0OTdiZWRlODgxM2E3Mzg2
MzAzODIzOTY0Li5lYWVmYTMxYjhlMTM4ZDlhN2QwOWI2NjhiMzJhZWIzNjM1YzhmYjhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKQEAgLTYxLDYgKzYx
LDIwIEBAIFZhbHVlKiBDb25zdDY0VmFsdWU6OnN1YkNvbnN0YW50KFByb2NlZHVyZSYgcHJvYywg
VmFsdWUqIG90aGVyKSBjb25zdAogICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9y
aWdpbigpLCBtX3ZhbHVlIC0gb3RoZXItPmFzSW50NjQoKSk7CiB9CiAKK1ZhbHVlKiBDb25zdDY0
VmFsdWU6OmJpdEFuZENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25z
dAoreworICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworICAgIHJldHVybiBwcm9jLmFkZDxDb25zdDY0VmFsdWU+KG9yaWdpbigpLCBtX3ZhbHVlICYg
b3RoZXItPmFzSW50NjQoKSk7Cit9CisKK1ZhbHVlKiBDb25zdDY0VmFsdWU6OmJpdE9yQ29uc3Rh
bnQoUHJvY2VkdXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhl
ci0+aGFzSW50NjQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2Mu
YWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgfCBvdGhlci0+YXNJbnQ2NCgpKTsK
K30KKwogVmFsdWUqIENvbnN0NjRWYWx1ZTo6ZXF1YWxDb25zdGFudChQcm9jZWR1cmUmIHByb2Ms
IFZhbHVlKiBvdGhlcikgY29uc3QKIHsKICAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3Q2NFZhbHVlLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuaAppbmRleCA2YTEyYzBjMzk2NTk1
Mzg4Zjk5ZTU2YmQxYzU3NDBiMWRjMTNjNTYzLi5jZjM1MmE1MGMxNDk2ZDVlZTllOTcxMDFkMDU2
ZDYyMDQ0ODMyZTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25z
dDY0VmFsdWUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUu
aApAQCAtNDQsNiArNDQsOCBAQCBwdWJsaWM6CiAgICAgVmFsdWUqIGFkZENvbnN0YW50KFByb2Nl
ZHVyZSYsIGludDMyX3Qgb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVlKiBhZGRDb25z
dGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVl
KiBzdWJDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIFZhbHVlKiBiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0
IG92ZXJyaWRlOworICAgIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGVxdWFsQ29uc3RhbnQoUHJvY2VkdXJl
JiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogbm90RXF1YWxDb25z
dGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlclRvQWlyLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCmluZGV4IDQ1YTA3ZTM1YWQ1MjgyZmE3
ZThiYzU2YzQ0YzJhMWYxMTgwMjEwY2IuLjdhNTUyYTExZWRjODU3YjAwZGRiZDIzODY4MDczYzc3
Yzc0NzdjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9B
aXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyVG9BaXIuY3BwCkBA
IC02MDksNiArNjA5LDIxIEBAIHB1YmxpYzoKICAgICAgICAgfQogICAgIH0KIAorICAgIGJvb2wg
dHJ5T3IoVmFsdWUqIGxlZnQsIFZhbHVlKiByaWdodCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAo
bGVmdC0+dHlwZSgpKSB7CisgICAgICAgIGNhc2UgSW50MzI6CisgICAgICAgICAgICBhcHBlbmRC
aW5PcDxPcjMyLCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOworICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIGNhc2UgSW50NjQ6CisgICAgICAgICAgICBhcHBlbmRCaW5PcDxPcjY0
LCBDb21tdXRhdGl2ZT4obGVmdCwgcmlnaHQpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1vcmUgdHlw
ZXMhCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKICAgICBi
b29sIHRyeVNobChWYWx1ZSogdmFsdWUsIFZhbHVlKiBhbW91bnQpCiAgICAgewogICAgICAgICBB
aXI6Ok9wY29kZSBvcGNvZGUgPSB2YWx1ZS0+dHlwZSgpID09IEludDMyID8gTHNoaWZ0MzIgOiBM
c2hpZnQ2NDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyaW5n
TWF0Y2hlci5wYXR0ZXJucyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0xvd2VyaW5nTWF0
Y2hlci5wYXR0ZXJucwppbmRleCAxNzkyNWNmNThlMzY5NzA5N2JjNzgyYTRmMWUxY2I2MjNiOTZj
MTZhLi4yMGJhY2MyZjk5Yjc5NmUwMzI1Mjk2ZGJjOTA4ZGExYThhNWM5NDE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNMb3dlcmluZ01hdGNoZXIucGF0dGVybnMKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5zCkBA
IC0zMyw2ICszMyw3IEBAIExvYWQgPSBMb2FkKGFkZHJlc3MpCiBBZGQgPSBBZGQobGVmdCwgcmln
aHQpCiBTdWIgPSBTdWIobGVmdCwgcmlnaHQpCiBBbmQgPSBCaXRBbmQobGVmdCwgcmlnaHQpCitP
ciA9IEJpdE9yKGxlZnQsIHJpZ2h0KQogCiBTaGwgPSBTaGwodmFsdWUsIGFtb3VudCkKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCmluZGV4IGUwZWVk
ZTQ2ZTgxODVkYzgwNzRlYjM0OTE3Yzk0NjZhOWFjN2NiNGUuLjNlMzYwMjViMTVkNDRjYzY0NjAz
MDFkOTJiNTRmNzA4OGQzZDU0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM1JlZHVjZVN0cmVuZ3RoLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNS
ZWR1Y2VTdHJlbmd0aC5jcHAKQEAgLTEzNyw2ICsxMzcsMTA0IEBAIHByaXZhdGU6CiAKICAgICAg
ICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgQml0QW5kOgorICAgICAgICAgICAgaGFuZGxl
Q29tbXV0YXRpdml0eSgpOworCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdEFuZChjb25z
dGFudDEsIGNvbnN0YW50MikKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogY29uc3RhbnQxICYg
Y29uc3RhbnQyCisgICAgICAgICAgICBpZiAoVmFsdWUqIGNvbnN0YW50Qml0QW5kID0gbV92YWx1
ZS0+Y2hpbGQoMCktPmJpdEFuZENvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMSkpKSB7
CisgICAgICAgICAgICAgICAgcmVwbGFjZVdpdGhOZXdWYWx1ZShjb25zdGFudEJpdEFuZCk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1
cm4gdGhpczogQml0QW5kKEJpdEFuZCh2YWx1ZSwgY29uc3RhbnQxKSwgY29uc3RhbnQyKQorICAg
ICAgICAgICAgLy8gSW50byB0aGlzOiBCaXRBbmQodmFsdWUsIGNvbnN0YW50MSAmIGNvbnN0YW50
MikuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEJpdEFu
ZCkgeworICAgICAgICAgICAgICAgIFZhbHVlKiBuZXdDb25zdGFudCA9IG1fdmFsdWUtPmNoaWxk
KDEpLT5iaXRBbmRDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgxKSk7
CisgICAgICAgICAgICAgICAgaWYgKG5ld0NvbnN0YW50KSB7CisgICAgICAgICAgICAgICAgICAg
IG1faW5zZXJ0aW9uU2V0Lmluc2VydFZhbHVlKG1faW5kZXgsIG5ld0NvbnN0YW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCkgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hp
bGQoMCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDEpID0gbmV3Q29uc3Rh
bnQ7CisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdEFuZCh2
YWx1ZVgsIHZhbHVlWCkKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogdmFsdWVYLgorICAgICAg
ICAgICAgaWYgKG1fdmFsdWUtPmNoaWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpKSB7CisgICAg
ICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgw
KSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRBbmQo
dmFsdWUsIHplcm8tY29uc3RhbnQpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IHplcm8tY29u
c3RhbnQuCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDApKSB7Cisg
ICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGls
ZCgxKSk7CisgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRB
bmQodmFsdWUsIGFsbC1vbmVzKQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiB2YWx1ZS4KKyAg
ICAgICAgICAgIGlmICgobV92YWx1ZS0+dHlwZSgpID09IEludDY0ICYmIG1fdmFsdWUtPmNoaWxk
KDEpLT5pc0ludCgweGZmZmZmZmZmZmZmZmZmZmYpKQorICAgICAgICAgICAgICAgIHx8IChtX3Zh
bHVlLT50eXBlKCkgPT0gSW50MzIgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDB4ZmZmZmZm
ZmYpKSkgeworICAgICAgICAgICAgICAgIG1fdmFsdWUtPnJlcGxhY2VXaXRoSWRlbnRpdHkobV92
YWx1ZS0+Y2hpbGQoMCkpOworICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgQml0T3I6CisgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7
CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0T3IoY29uc3RhbnQxLCBjb25zdGFudDIp
CisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IGNvbnN0YW50MSB8IGNvbnN0YW50MgorICAgICAg
ICAgICAgaWYgKFZhbHVlKiBjb25zdGFudEJpdEFuZCA9IG1fdmFsdWUtPmNoaWxkKDApLT5iaXRP
ckNvbnN0YW50KG1fcHJvYywgbV92YWx1ZS0+Y2hpbGQoMSkpKSB7CisgICAgICAgICAgICAgICAg
cmVwbGFjZVdpdGhOZXdWYWx1ZShjb25zdGFudEJpdEFuZCk7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKEJp
dEFuZCh2YWx1ZSwgY29uc3RhbnQxKSwgY29uc3RhbnQyKQorICAgICAgICAgICAgLy8gSW50byB0
aGlzOiBCaXRBbmQodmFsdWUsIGNvbnN0YW50MSAmIGNvbnN0YW50MikuCisgICAgICAgICAgICBp
ZiAobV92YWx1ZS0+Y2hpbGQoMCktPm9wY29kZSgpID09IEJpdE9yKSB7CisgICAgICAgICAgICAg
ICAgVmFsdWUqIG5ld0NvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMSktPmJpdE9yQ29uc3RhbnQo
bV9wcm9jLCBtX3ZhbHVlLT5jaGlsZCgwKS0+Y2hpbGQoMSkpOworICAgICAgICAgICAgICAgIGlm
IChuZXdDb25zdGFudCkgeworICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNl
cnRWYWx1ZShtX2luZGV4LCBuZXdDb25zdGFudCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFs
dWUtPmNoaWxkKDApID0gbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDApOworICAgICAgICAgICAg
ICAgICAgICBtX3ZhbHVlLT5jaGlsZCgxKSA9IG5ld0NvbnN0YW50OworICAgICAgICAgICAgICAg
ICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRPcih2YWx1ZVgsIHZhbHVlWCkKKyAgICAg
ICAgICAgIC8vIEludG8gdGhpczogdmFsdWVYLgorICAgICAgICAgICAgaWYgKG1fdmFsdWUtPmNo
aWxkKDApID09IG1fdmFsdWUtPmNoaWxkKDEpKSB7CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+
cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAg
bV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRPcih2YWx1ZSwgemVyby1jb25zdGFudCkK
KyAgICAgICAgICAgIC8vIEludG8gdGhpczogdmFsdWUuCisgICAgICAgICAgICBpZiAobV92YWx1
ZS0+Y2hpbGQoMSktPmlzSW50KDApKSB7CisgICAgICAgICAgICAgICAgbV92YWx1ZS0+cmVwbGFj
ZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAgICAgICAgICAgbV9jaGFu
Z2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRPcih2YWx1ZSwgYWxsLW9uZXMpCisgICAgICAgICAg
ICAvLyBJbnRvIHRoaXM6IGFsbC1vbmVzLgorICAgICAgICAgICAgaWYgKChtX3ZhbHVlLT50eXBl
KCkgPT0gSW50NjQgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDB4ZmZmZmZmZmZmZmZmZmZm
ZikpCisgICAgICAgICAgICAgICAgfHwgKG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiAmJiBtX3Zh
bHVlLT5jaGlsZCgxKS0+aXNJbnQoMHhmZmZmZmZmZikpKSB7CisgICAgICAgICAgICAgICAgbV92
YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgxKSk7CisgICAgICAgICAg
ICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgY2FzZSBMb2FkOFo6CiAgICAg
ICAgIGNhc2UgTG9hZDhTOgogICAgICAgICBjYXNlIExvYWQxNlo6CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5jcHAKaW5kZXggYmUwNTllMzdmODY5Nzc0OWJmMTkwMDI3Mjc2ODNkYTIzNTc4
NmViYy4uNmY2ODM0YTg1NTc1MzI4Mjg1N2ZkNzEwZjA2MDY2NjhlZTZjNjc5YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcApAQCAtMTI3LDYgKzEyNywxNiBAQCBWYWx1ZSogVmFs
dWU6OnN1YkNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKikgY29uc3QKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAorVmFsdWUqIFZhbHVlOjpiaXRBbmRDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1
ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK1ZhbHVlKiBWYWx1ZTo6Yml0
T3JDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSopIGNvbnN0Cit7CisgICAgcmV0dXJuIG51bGxw
dHI7Cit9CisKIFZhbHVlKiBWYWx1ZTo6ZXF1YWxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSop
IGNvbnN0CiB7CiAgICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYjMvQjNWYWx1ZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUu
aAppbmRleCBkYmQxMWNlZjMxMzMxYjk5YjFlMGYzZDIwNDk1ZTdmMDcyMzllYjU4Li4yMmMzY2Fk
MDAzYzliMmU0N2VjZmFmOTcwMTdmYTY4M2QwYTVmYzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M1ZhbHVlLmgKQEAgLTExMiw2ICsxMTIsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBWYWx1ZSog
YWRkQ29uc3RhbnQoUHJvY2VkdXJlJiwgaW50MzJfdCBvdGhlcikgY29uc3Q7CiAgICAgdmlydHVh
bCBWYWx1ZSogYWRkQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdDsKICAg
ICB2aXJ0dWFsIFZhbHVlKiBzdWJDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNv
bnN0OworICAgIHZpcnR1YWwgVmFsdWUqIGJpdEFuZENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVl
KiBvdGhlcikgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSogYml0T3JDb25zdGFudChQcm9jZWR1
cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIGVxdWFsQ29uc3Rh
bnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBu
b3RFcXVhbENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9haXIvQWlyT3Bjb2RlLm9wY29kZXMgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCmluZGV4IDExMDMx
Njk0Yjg2ZWI3Y2Y5ZjQzNmU4YTEwMGIzZWI5OWY4OWRmOTcuLjNkMDI1MDI3YzgxMDFjYTYyNzlj
MmQ3OTRmMWUyNTE3ODQ3YTg3ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9haXIvQWlyT3Bjb2RlLm9wY29kZXMKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fp
ci9BaXJPcGNvZGUub3Bjb2RlcwpAQCAtMTA3LDYgKzEwNywxNyBAQCBMc2hpZnQzMiBVOkcsIFVE
OkcKICAgICBUbXAqLCBUbXAKICAgICBJbW0sIFRtcAogCitPcjMyIFU6RywgVUQ6RworICAgIFRt
cCwgVG1wCisgICAgSW1tLCBUbXAKKyAgICBUbXAsIEFkZHIKKyAgICBBZGRyLCBUbXAKKyAgICBJ
bW0sIEFkZHIKKworT3I2NCBVOkcsIFVEOkcKKyAgICBUbXAsIFRtcAorICAgIEltbSwgVG1wCisK
IExzaGlmdDY0IFU6RywgVUQ6RwogICAgIFRtcCosIFRtcAogICAgIEltbSwgVG1wCkBAIC0xMjEs
NyArMTMyLDcgQEAgTXVsMzIgVTpHLCBVRDpHCiAjIG1lYW5zIG1vdmVQdHIuCiBNb3ZlIFU6Rywg
RDpHCiAgICAgVG1wLCBUbXAKLSAgICBJbW0sIFRtcAorICAgIEltbSwgVG1wIGFzIHNpZ25FeHRl
bmQzMlRvUHRyCiAgICAgSW1tNjQsIFRtcAogICAgIEFkZHIsIFRtcCBhcyBsb2FkUHRyICMgVGhp
cyBtZWFucyB0aGF0ICJNb3ZlIEFkZHIsIFRtcCIgaXMgY29kZS1nZW5lcmF0ZWQgYXMgImxvYWQi
IG5vdCAibW92ZSIuCiAgICAgSW5kZXgsIFRtcCBhcyBsb2FkUHRyCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYjMvdGVzdGIzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My90ZXN0YjMuY3BwCmluZGV4IDY4N2Q4ZjE0YTdhMzNjNzcyNzgwMGQxMmU1OTAxYWI1ZWIyZjhh
ZmQuLmRjZjI0ODlkZDRjMWI0ZjdmNzlhY2JhNmEyNjQzNTJkY2EyN2RmMDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0YjMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9iMy90ZXN0YjMuY3BwCkBAIC0xMjAsNiArMTIwLDE3IEBAIHZvaWQgdGVzdEFyZyhp
bnQgYXJndW1lbnQpCiAgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGFyZ3VtZW50
KSA9PSBhcmd1bWVudCk7CiB9CiAKK3ZvaWQgdGVzdFJldHVybkNvbnN0NjQoaW50NjRfdCB2YWx1
ZSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBw
cm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgdmFsdWUpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50NjRfdD4ocHJvYykgPT0gdmFsdWUpOworfQorCiB2b2lkIHRlc3RBZGRBcmdzKGludCBhLCBp
bnQgYikKIHsKICAgICBQcm9jZWR1cmUgcHJvYzsKQEAgLTI3Miw2ICsyODMsNDYxIEBAIHZvaWQg
dGVzdFN1YkltbUFyZzMyKGludCBhLCBpbnQgYikKICAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYikgPT0gYSAtIGIpOwogfQogCit2b2lkIHRlc3RCaXRBbmRBcmdzKGludDY0X3Qg
YSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJ
bmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSk7CisKKyAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEsIGIpID09IChhICYgYikpOwor
fQorCit2b2lkIHRlc3RCaXRBbmRTYW1lQXJnKGludDY0X3QgYSkKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVl
KiBhcmd1bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmln
aW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisg
ICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAgICAgIGFyZ3VtZW50KSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IGEpOworfQorCit2b2lkIHRlc3RC
aXRBbmRJbW1zKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+
KHByb2MpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRBcmdJbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSkgPT0gKGEgJiBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbUFyZyhp
bnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9s
VmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBh
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFu
ZFJ1bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAoYSAmIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5k
Qml0QW5kQXJnSW1tSW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICBWYWx1ZSogaW5uZXJCaXRBbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7Cisg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwg
T3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBw
cm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgaW5uZXJCaXRBbmQsCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsK
KworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKChhICYgYikg
JiBjKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbShpbnQ2NF90IGEsIGlu
dDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZh
bHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFs
dWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwK
KyAgICAgICAgICAgIGlubmVyQml0QW5kKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dDY0X3Q+KHByb2MsIGIpID09IChhICYgKGIgJiBjKSkpOworfQorCit2b2lkIHRlc3RCaXRBbmRB
cmdzMzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxv
Y2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1
bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJl
Z1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIxKSkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhLCBiKSA9PSAoYSAmIGIpKTsKK30KKwor
dm9pZCB0ZXN0Qml0QW5kU2FtZUFyZzMyKGludCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3Vt
ZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPihwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BS
SW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgYXJndW1lbnQsCisgICAgICAgICAgICBhcmd1bWVudCkpOworCisgICAgQ0hFQ0soY29tcGls
ZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IGEpOworfQorCit2b2lkIHRlc3RCaXRBbmRJbW1zMzIo
aW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIp
KSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0gKGEgJiBiKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbTMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1
cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJv
b3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdp
bigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywg
Qml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihw
cm9jLCBhKSA9PSAoYSAmIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kSW1tQXJnMzIoaW50IGEs
IGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAg
ICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAg
ICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSkpOworCisgICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIpID09IChhICYgYikpOworfQorCit2b2lkIHRl
c3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQoreworICAgIFBy
b2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7Cisg
ICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
cHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1l
bnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9y
aWdpbigpLCBiKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAg
IHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4o
CisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgaW5uZXJC
aXRBbmQsCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBP
cmlnaW4oKSwgYykpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9
PSAoKGEgJiBiKSAmIGMpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tMzIo
aW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdEFuZCA9IHJv
b3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywg
T3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4o
cHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOworICAgIHJvb3QtPmFw
cGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0QW5k
LCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIGlubmVyQml0QW5kKSk7CisKKyAgICBDSEVD
Syhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEgJiAoYiAmIGMpKSk7Cit9CisKK3Zv
aWQgdGVzdEJpdE9yQXJncyhpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9jZWR1cmUg
cHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigp
LAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0
T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFs
dWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZv
Ojphcmd1bWVudEdQUjEpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHBy
b2MsIGEsIGIpID09IChhIHwgYikpOworfQorCit2b2lkIHRlc3RCaXRPclNhbWVBcmcoaW50NjRf
dCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9j
LmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgYXJndW1lbnQsCisgICAgICAgICAgICBh
cmd1bWVudCkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9
PSBhKTsKK30KKwordm9pZCB0ZXN0Qml0T3JJbW1zKGludDY0X3QgYSwgaW50NjRfdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYykgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJp
dE9yQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOwor
ICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5k
TmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3Jp
Z2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJv
YywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5h
cHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNL
KGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQg
dGVzdEJpdE9ySW1tQXJnKGludDY0X3QgYSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRP
ciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYikgPT0gKGEgfCBiKSk7Cit9CisK
K3ZvaWQgdGVzdEJpdE9yQml0T3JBcmdJbW1JbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0
X3QgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJv
Yy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdE9yID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBl
bmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50
R1BSMCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBiKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lckJpdE9y
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGMpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09
ICgoYSB8IGIpIHwgYykpOworfQorCit2b2lkIHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKGludDY0
X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogaW5uZXJCaXRP
ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdp
bigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29u
c3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250
cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290
LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAor
ICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IGEpLAorICAgICAgICAgICAgaW5uZXJCaXRPcikpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ2NF90Pihwcm9jLCBiKSA9PSAoYSB8IChiIHwgYykpKTsKK30KKwordm9pZCB0ZXN0Qml0
T3JBcmdzMzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2lj
QmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRy
b2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAg
ICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBU
cnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50
UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisg
ICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEsIGIpID09IChhIHwgYikpOworfQor
Cit2b2lkIHRlc3RCaXRPclNhbWVBcmczMihpbnQgYSkKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsK
KyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBhcmd1
bWVudCA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIFRydW5jLCBPcmln
aW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2lu
KCksCisgICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAgICAgIGFyZ3VtZW50KSk7CisKKyAg
ICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVz
dEJpdE9ySW1tczMyKGludCBhLCBpbnQgYikKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBC
YXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIHJvb3QtPmFwcGVuZE5ldzxD
b250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigp
LAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywg
T3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYykgPT0g
KGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yQXJnSW1tMzIoaW50IGEsIGludCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5k
UnVuPGludD4ocHJvYywgYSkgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9ySW1tQXJn
MzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAg
ICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisg
ICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2Ms
IFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCkpKSk7CisK
KyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYikgPT0gKGEgfCBiKSk7Cit9CisK
K3ZvaWQgdGVzdEJpdE9yQml0T3JBcmdJbW1JbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGlubmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYikpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgaW5u
ZXJCaXRPciwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBjKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEp
ID09ICgoYSB8IGIpIHwgYykpOworfQorCit2b2lkIHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIo
aW50IGEsIGludCBiLCBpbnQgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Js
b2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdE9yID0gcm9v
dC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAg
ICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9y
aWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIGlubmVyQml0T3IpKTsKKworICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSAoYSB8IChiIHwgYykpKTsKK30KKwogdm9pZCB0
ZXN0U3RvcmUoaW50IHZhbHVlKQogewogICAgIFByb2NlZHVyZSBwcm9jOwpAQCAtMTI1MCw2ICsx
NzE2LDggQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQogICAgIFJVTih0ZXN0NDIoKSk7
CiAgICAgUlVOKHRlc3RMb2FkNDIoKSk7CiAgICAgUlVOKHRlc3RBcmcoNDMpKTsKKyAgICBSVU4o
dGVzdFJldHVybkNvbnN0NjQoNSkpOworICAgIFJVTih0ZXN0UmV0dXJuQ29uc3Q2NCgtNDIpKTsK
IAogICAgIFJVTih0ZXN0QWRkQXJncygxLCAxKSk7CiAgICAgUlVOKHRlc3RBZGRBcmdzKDEsIDIp
KTsKQEAgLTEyODksNiArMTc1NywxMTIgQEAgdm9pZCBydW4oY29uc3QgY2hhciogZmlsdGVyKQog
ICAgIFJVTih0ZXN0U3ViSW1tQXJnMzIoMTMsIC00MikpOwogICAgIFJVTih0ZXN0U3ViSW1tQXJn
MzIoLTEzLCA0MikpOwogCisgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCA0MykpOworICAgIFJV
Tih0ZXN0Qml0QW5kQXJncyg0MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kQXJncygxMCwgMykp
OworICAgIFJVTih0ZXN0Qml0QW5kQXJncyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAg
UlVOKHRlc3RCaXRBbmRTYW1lQXJnKDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnKDAp
KTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoMykpOworICAgIFJVTih0ZXN0Qml0QW5kU2Ft
ZUFyZygweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMoNDMsIDQz
KSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1zKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJ
bW1zKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1zKDQyLCAweGZmZmZmZmZmZmZmZmZm
ZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSg0MywgNDMpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEFyZ0ltbSg0MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDEwLCAzKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0oNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJV
Tih0ZXN0Qml0QW5kSW1tQXJnKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQz
LCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmcoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEltbUFyZyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRC
aXRBbmRBcmdJbW1JbW0oMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0QW5kQml0QW5kQXJnSW1t
SW1tKDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbSgweGZmZmYs
IDI0LCA3KSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0oNywgMiwgMykpOwor
ICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tKDYsIDEsIDYpKTsKKyAgICBSVU4odGVz
dEJpdEFuZEltbUJpdEFuZEFyZ0ltbSgyNCwgMHhmZmZmLCA3KSk7CisgICAgUlVOKHRlc3RCaXRB
bmRBcmdzMzIoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIoNDMsIDApKTsKKyAg
ICBSVU4odGVzdEJpdEFuZEFyZ3MzMigxMCwgMykpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnczMy
KDQyLCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnMzIoNDMpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZFNhbWVBcmczMigwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJn
MzIoMykpOworICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZzMyKDB4ZmZmZmZmZmYpKTsKKyAgICBS
VU4odGVzdEJpdEFuZEltbXMzMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0
MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tczMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RC
aXRBbmRJbW1zMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMy
KDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tMzIoNDMsIDApKTsKKyAgICBSVU4o
dGVzdEJpdEFuZEFyZ0ltbTMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdJbW0zMig0
MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnMzIoNDMsIDQzKSk7Cisg
ICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kSW1t
QXJnMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUFyZzMyKDQyLCAweGZmZmZmZmZm
KSk7CisgICAgUlVOKHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0zMigyLCA3LCAzKSk7CisgICAg
UlVOKHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0zMigxLCA2LCA2KSk7CisgICAgUlVOKHRlc3RC
aXRBbmRCaXRBbmRBcmdJbW1JbW0zMigweGZmZmYsIDI0LCA3KSk7CisgICAgUlVOKHRlc3RCaXRB
bmRJbW1CaXRBbmRBcmdJbW0zMig3LCAyLCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRB
bmRBcmdJbW0zMig2LCAxLCA2KSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0z
MigyNCwgMHhmZmZmLCA3KSk7CisKKyAgICBSVU4odGVzdEJpdE9yQXJncyg0MywgNDMpKTsKKyAg
ICBSVU4odGVzdEJpdE9yQXJncyg0MywgMCkpOworICAgIFJVTih0ZXN0Qml0T3JBcmdzKDEwLCAz
KSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAg
IFJVTih0ZXN0Qml0T3JTYW1lQXJnKDQzKSk7CisgICAgUlVOKHRlc3RCaXRPclNhbWVBcmcoMCkp
OworICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnKDMpKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFy
ZygweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tcyg0MywgNDMpKTsK
KyAgICBSVU4odGVzdEJpdE9ySW1tcyg0MywgMCkpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zKDEw
LCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOwor
ICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0oNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0lt
bSg0MywgMCkpOworICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0oMTAsIDMpKTsKKyAgICBSVU4odGVz
dEJpdE9yQXJnSW1tKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdE9y
SW1tQXJnKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1BcmcoNDMsIDApKTsKKyAgICBS
VU4odGVzdEJpdE9ySW1tQXJnKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZyg0Miwg
MHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tKDIs
IDcsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0oMSwgNiwgNikpOworICAg
IFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbSgweGZmZmYsIDI0LCA3KSk7CisgICAgUlVOKHRl
c3RCaXRPckltbUJpdE9yQXJnSW1tKDcsIDIsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQml0
T3JBcmdJbW0oNiwgMSwgNikpOworICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbSgyNCwg
MHhmZmZmLCA3KSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MzMig0MywgNDMpKTsKKyAgICBSVU4o
dGVzdEJpdE9yQXJnczMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MzMigxMCwgMykp
OworICAgIFJVTih0ZXN0Qml0T3JBcmdzMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVz
dEJpdE9yU2FtZUFyZzMyKDQzKSk7CisgICAgUlVOKHRlc3RCaXRPclNhbWVBcmczMigwKSk7Cisg
ICAgUlVOKHRlc3RCaXRPclNhbWVBcmczMigzKSk7CisgICAgUlVOKHRlc3RCaXRPclNhbWVBcmcz
MigweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMzMig0MywgNDMpKTsKKyAgICBS
VU4odGVzdEJpdE9ySW1tczMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMzMigxMCwg
MykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4o
dGVzdEJpdE9yQXJnSW1tMzIoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbTMyKDQz
LCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbTMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RC
aXRPckFyZ0ltbTMyKDQyLCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZzMy
KDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1BcmczMig0MywgMCkpOworICAgIFJVTih0
ZXN0Qml0T3JJbW1BcmczMigxMCwgMykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1BcmczMig0Miwg
MHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JCaXRPckFyZ0ltbUltbTMyKDIsIDcsIDMp
KTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0zMigxLCA2LCA2KSk7CisgICAgUlVO
KHRlc3RCaXRPckJpdE9yQXJnSW1tSW1tMzIoMHhmZmZmLCAyNCwgNykpOworICAgIFJVTih0ZXN0
Qml0T3JJbW1CaXRPckFyZ0ltbTMyKDcsIDIsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQml0
T3JBcmdJbW0zMig2LCAxLCA2KSk7CisgICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIo
MjQsIDB4ZmZmZiwgNykpOworCiAgICAgUlVOKHRlc3RTdG9yZSg0NCkpOwogICAgIFJVTih0ZXN0
U3RvcmVDb25zdGFudCg0OSkpOwogICAgIFJVTih0ZXN0U3RvcmVDb25zdGFudFB0cig0OSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDFjZWNiNWRjMzE0YjU1NzMzMzc3NjJlMWNlMDY3MzBlZmFlMTNhMmEuLjk1YjFiYWJhYjg2
NTc5MzZkNmU2NTdlYWNiN2JmOGI3ODNmYTFlOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE0OTc2LDYgKzE0OTc2LDcgQEAK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwogLyogRW5k
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KKwogLyogQmVnaW4gUEJYR3JvdXAg
c2VjdGlvbiAqLwogCQkwMEI5MzE4MDEzQkE4NjdGMDAzNUE5NDggLyogcGFyc2VyICovID0gewog
CQkJaXNhID0gUEJYR3JvdXA7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264735</attachid>
            <date>2015-11-03 15:08:31 -0800</date>
            <delta_ts>2015-11-03 15:08:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150827-20151103150734.patch</filename>
            <type>text/plain</type>
            <size>36853</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxOTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA4
ZGEyNDE1MGY0ODFlMWY5OTY5MjU5NjkyNDFmNjk4ODg2YzI4MTAzLi4wYTdlM2Q5NTdmZDczMGNk
ZTMyZjNmNWZmMTNlMTNkMDA5MmNlOWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3MyBAQAorMjAxNS0xMS0wMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgQWlyIGxvd2VyaW5nIGZvciBCaXRPciBhbmQgaW1w
b3ZlIEJpdEFuZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTUwODI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRmlsaXAgUGl6bG8uCisKKyAgICAgICAg
SW4gdGhpcyBwYXRjaDoKKyAgICAgICAgLUIzIHRvIEFpciBsb3dlcmluZyBmb3IgQmlyT3IuCisg
ICAgICAgIC1Db2RlZ2VuIGZvciBCaXRPci4KKyAgICAgICAgLVN0cmVuZ3RoIHJlZHVjdGlvbiBm
b3IgQml0T3IgYW5kIEJpdEFuZC4KKyAgICAgICAgLVRlc3RzIGZvciBCaXRBbmQgYW5kIEJpdE9y
LgorICAgICAgICAtQnVnIGZpeDogTW92ZTY0IHdpdGggYSBuZWdhdGl2ZSB2YWx1ZSB3YXMgZGVz
dHJveWluZyB0aGUgdG9wIGJpdHMuCisKKyAgICAgICAgKiBiMy9CM0NvbnN0MzJWYWx1ZS5jcHA6
CisgICAgICAgIChKU0M6OkIzOjpDb25zdDMyVmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAg
ICAgKEpTQzo6QjM6OkNvbnN0MzJWYWx1ZTo6Yml0T3JDb25zdGFudCk6CisgICAgICAgICogYjMv
QjNDb25zdDMyVmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0NvbnN0NjRWYWx1ZS5jcHA6CisgICAg
ICAgIChKU0M6OkIzOjpDb25zdDY0VmFsdWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAgKEpT
Qzo6QjM6OkNvbnN0NjRWYWx1ZTo6Yml0T3JDb25zdGFudCk6CisgICAgICAgICogYjMvQjNDb25z
dDY0VmFsdWUuaDoKKyAgICAgICAgKiBiMy9CM0xvd2VyVG9BaXIuY3BwOgorICAgICAgICAoSlND
OjpCMzo6QWlyOjpMb3dlclRvQWlyOjppbW1Gb3JNb3ZlKToKKyAgICAgICAgKEpTQzo6QjM6OkFp
cjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXBGb3JNb3ZlKToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6
TG93ZXJUb0Fpcjo6dHJ5T3IpOgorICAgICAgICAoSlNDOjpCMzo6QWlyOjpMb3dlclRvQWlyOjp0
cnlDb25zdDY0KToKKyAgICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5VXBzaWxv
bik6CisgICAgICAgIChKU0M6OkIzOjpBaXI6Okxvd2VyVG9BaXI6OnRyeUlkZW50aXR5KToKKyAg
ICAgICAgKEpTQzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6dHJ5UmV0dXJuKToKKyAgICAgICAgKEpT
Qzo6QjM6OkFpcjo6TG93ZXJUb0Fpcjo6aW1tT3JUbXApOiBEZWxldGVkLgorICAgICAgICAqIGIz
L0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5zOgorICAgICAgICAqIGIzL0IzUmVkdWNlU3RyZW5n
dGguY3BwOgorICAgICAgICAqIGIzL0IzVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpCMzo6VmFs
dWU6OmJpdEFuZENvbnN0YW50KToKKyAgICAgICAgKEpTQzo6QjM6OlZhbHVlOjpiaXRPckNvbnN0
YW50KToKKyAgICAgICAgKiBiMy9CM1ZhbHVlLmg6CisgICAgICAgICogYjMvYWlyL0Fpck9wY29k
ZS5vcGNvZGVzOgorICAgICAgICAqIGIzL3Rlc3RiMy5jcHA6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0UmV0dXJuQ29uc3Q2NCk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJncyk6Cisg
ICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kU2FtZUFyZyk6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0Qml0QW5kSW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kQXJnSW1tKToKKyAg
ICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRJbW1BcmcpOgorICAgICAgICAoSlNDOjpCMzo6dGVz
dEJpdEFuZEJpdEFuZEFyZ0ltbUltbSk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kSW1t
Qml0QW5kQXJnSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdzMzIpOgorICAg
ICAgICAoSlNDOjpCMzo6dGVzdEJpdEFuZFNhbWVBcmczMik6CisgICAgICAgIChKU0M6OkIzOjp0
ZXN0Qml0QW5kSW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRBbmRBcmdJbW0zMik6
CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0QW5kSW1tQXJnMzIpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RC
aXRBbmRJbW1CaXRBbmRBcmdJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JBcmdz
KToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPclNhbWVBcmcpOgorICAgICAgICAoSlNDOjpC
Mzo6dGVzdEJpdE9ySW1tcyk6CisgICAgICAgIChKU0M6OkIzOjp0ZXN0Qml0T3JBcmdJbW0pOgor
ICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE9ySW1tQXJnKToKKyAgICAgICAgKEpTQzo6QjM6OnRl
c3RCaXRPckJpdE9yQXJnSW1tSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckltbUJp
dE9yQXJnSW1tKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckFyZ3MzMik6CisgICAgICAg
IChKU0M6OkIzOjp0ZXN0Qml0T3JTYW1lQXJnMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJp
dE9ySW1tczMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RCaXRPckFyZ0ltbTMyKToKKyAgICAg
ICAgKEpTQzo6QjM6OnRlc3RCaXRPckltbUFyZzMyKToKKyAgICAgICAgKEpTQzo6QjM6OnRlc3RC
aXRPckJpdE9yQXJnSW1tSW1tMzIpOgorICAgICAgICAoSlNDOjpCMzo6dGVzdEJpdE9ySW1tQml0
T3JBcmdJbW0zMik6CisgICAgICAgIChKU0M6OkIzOjpydW4pOgorCiAyMDE1LTExLTAzICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogSGFuZGxlIG9yIFJlbW92ZSBQYXJzZUhUTUwgVGltZWxpbmUgRXZlbnQgUmVjb3JkcwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlclg4
NkNvbW1vbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxl
clg4NkNvbW1vbi5oCmluZGV4IDRhNmNlN2Q1NjhjNWVkMTkyZDkzMTRlYzI5ZmIwODZlZmM1NDc0
YWUuLjY3YWNjNWIyMzNmOGVlNjc5MmM3ODVhMDI4MGI1ZTI2ZGNkZGY3NmYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJYODZDb21tb24u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyWDg2
Q29tbW9uLmgKQEAgLTEwNTIsNiArMTA1MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci54Y2hncV9ycihyZWcxLCByZWcyKTsKICAgICB9CiAKKyAgICB2b2lkIHNpZ25FeHRl
bmQzMlRvUHRyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdl9pMzJyKGltbS5tX3ZhbHVlLCBkZXN0KTsKKyAgICB9CisKICAg
ICB2b2lkIHNpZ25FeHRlbmQzMlRvUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3Qp
CiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZzeGRfcnIoc3JjLCBkZXN0KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvWDg2QXNzZW1ibGVyLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL1g4NkFzc2VtYmxlci5oCmluZGV4IDczZWFi
OWYzZDg5ZmEzMTRiNjdmZGI5ZjMxZDk3MWI4OTQyZDhhN2QuLjQ4MmU2ZmE4OTRjMWEzNjE4M2Zi
OWYyOWNjMWU1NGMzNWE3YzQ2NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvWDg2QXNzZW1ibGVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9YODZBc3NlbWJsZXIuaApAQCAtMTQ5Miw2ICsxNDkyLDEyIEBAIHB1YmxpYzoKICAgICAg
ICAgbV9mb3JtYXR0ZXIub25lQnl0ZU9wNjQoT1BfTU9WX0VBWEl2LCBkc3QpOwogICAgICAgICBt
X2Zvcm1hdHRlci5pbW1lZGlhdGU2NChpbW0pOwogICAgIH0KKworICAgIHZvaWQgbW92X2kzMnIo
aW50MzJfdCBpbW0sIFJlZ2lzdGVySUQgZHN0KQorICAgIHsKKyAgICAgICAgbV9mb3JtYXR0ZXIu
b25lQnl0ZU9wNjQoT1BfR1JPVVAxMV9Fdkl6LCBHUk9VUDExX01PViwgZHN0KTsKKyAgICAgICAg
bV9mb3JtYXR0ZXIuaW1tZWRpYXRlMzIoaW1tKTsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBtb3Zz
eGRfcnIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZHN0KQogICAgIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYjMvQjNDb25zdDMyVmFsdWUuY3BwCmluZGV4IGIyOGZhZjNkMzJmZmZiMmZk
YzQ3N2IxNjQ5ZGNmNzA0YzFjODFkZDEuLjJkNTlmNDFiMmYzN2U2YTJjOTliMWJlZDVlMGQxZjM3
NzM1NWFjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJW
YWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzQ29uc3QzMlZhbHVlLmNw
cApAQCAtNjEsNiArNjEsMjAgQEAgVmFsdWUqIENvbnN0MzJWYWx1ZTo6c3ViQ29uc3RhbnQoUHJv
Y2VkdXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0CiAgICAgcmV0dXJuIHByb2MuYWRkPENv
bnN0MzJWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgLSBvdGhlci0+YXNJbnQzMigpKTsKIH0KIAor
VmFsdWUqIENvbnN0MzJWYWx1ZTo6Yml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBWYWx1
ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFzSW50MzIoKSkKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENvbnN0MzJWYWx1ZT4ob3JpZ2lu
KCksIG1fdmFsdWUgJiBvdGhlci0+YXNJbnQzMigpKTsKK30KKworVmFsdWUqIENvbnN0MzJWYWx1
ZTo6Yml0T3JDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVlKiBvdGhlcikgY29uc3QKK3sK
KyAgICBpZiAoIW90aGVyLT5oYXNJbnQzMigpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gcHJvYy5hZGQ8Q29uc3QzMlZhbHVlPihvcmlnaW4oKSwgbV92YWx1ZSB8IG90aGVy
LT5hc0ludDMyKCkpOworfQorCiBWYWx1ZSogQ29uc3QzMlZhbHVlOjplcXVhbENvbnN0YW50KFBy
b2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAogewogICAgIGlmICghb3RoZXItPmhh
c0ludDMyKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDMy
VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCmluZGV4
IGZhYzc2NjBlMzUxYmRiNDI4YzA0MjY1NGVlN2JkODg3NTE0NzY5NWEuLmJmMDI4MWUxNDJlZTg1
YTdmNjJmY2E0MTYxODg2YzA3N2U1MzM0NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0MzJWYWx1ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9C
M0NvbnN0MzJWYWx1ZS5oCkBAIC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKICAgICBWYWx1ZSogYWRk
Q29uc3RhbnQoUHJvY2VkdXJlJiwgaW50MzJfdCBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
VmFsdWUqIGFkZENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgVmFsdWUqIHN1YkNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGJpdEFuZENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVl
KiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGJpdE9yQ29uc3RhbnQoUHJvY2Vk
dXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAgICBWYWx1ZSogZXF1YWxDb25z
dGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92ZXJyaWRlOwogICAgIFZhbHVl
KiBub3RFcXVhbENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJp
ZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1
ZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNDb25zdDY0VmFsdWUuY3BwCmluZGV4
IDg2ZTNjOTIwZmRkNWZkZjQ5N2JlZGU4ODEzYTczODYzMDM4MjM5NjQuLmVhZWZhMzFiOGUxMzhk
OWE3ZDA5YjY2OGIzMmFlYjM2MzVjOGZiOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L0IzQ29uc3Q2NFZhbHVlLmNwcApAQCAtNjEsNiArNjEsMjAgQEAgVmFsdWUqIENvbnN0NjRWYWx1
ZTo6c3ViQ29uc3RhbnQoUHJvY2VkdXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0CiAgICAg
cmV0dXJuIHByb2MuYWRkPENvbnN0NjRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgLSBvdGhlci0+
YXNJbnQ2NCgpKTsKIH0KIAorVmFsdWUqIENvbnN0NjRWYWx1ZTo6Yml0QW5kQ29uc3RhbnQoUHJv
Y2VkdXJlJiBwcm9jLCBWYWx1ZSogb3RoZXIpIGNvbnN0Cit7CisgICAgaWYgKCFvdGhlci0+aGFz
SW50NjQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgcmV0dXJuIHByb2MuYWRkPENv
bnN0NjRWYWx1ZT4ob3JpZ2luKCksIG1fdmFsdWUgJiBvdGhlci0+YXNJbnQ2NCgpKTsKK30KKwor
VmFsdWUqIENvbnN0NjRWYWx1ZTo6Yml0T3JDb25zdGFudChQcm9jZWR1cmUmIHByb2MsIFZhbHVl
KiBvdGhlcikgY29uc3QKK3sKKyAgICBpZiAoIW90aGVyLT5oYXNJbnQ2NCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gcHJvYy5hZGQ8Q29uc3Q2NFZhbHVlPihvcmlnaW4o
KSwgbV92YWx1ZSB8IG90aGVyLT5hc0ludDY0KCkpOworfQorCiBWYWx1ZSogQ29uc3Q2NFZhbHVl
OjplcXVhbENvbnN0YW50KFByb2NlZHVyZSYgcHJvYywgVmFsdWUqIG90aGVyKSBjb25zdAogewog
ICAgIGlmICghb3RoZXItPmhhc0ludDY0KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNDb25zdDY0VmFsdWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0Nv
bnN0NjRWYWx1ZS5oCmluZGV4IDZhMTJjMGMzOTY1OTUzODhmOTllNTZiZDFjNTc0MGIxZGMxM2M1
NjMuLmNmMzUyYTUwYzE0OTZkNWVlOWU5NzEwMWQwNTZkNjIwNDQ4MzJlODIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9iMy9CM0NvbnN0NjRWYWx1ZS5oCkBAIC00NCw2ICs0NCw4IEBAIHB1Ymxp
YzoKICAgICBWYWx1ZSogYWRkQ29uc3RhbnQoUHJvY2VkdXJlJiwgaW50MzJfdCBvdGhlcikgY29u
c3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIGFkZENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgVmFsdWUqIHN1YkNvbnN0YW50KFByb2NlZHVyZSYs
IFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGJpdEFuZENvbnN0YW50
KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Qgb3ZlcnJpZGU7CisgICAgVmFsdWUqIGJp
dE9yQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdCBvdmVycmlkZTsKICAg
ICBWYWx1ZSogZXF1YWxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0IG92
ZXJyaWRlOwogICAgIFZhbHVlKiBub3RFcXVhbENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBv
dGhlcikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9iMy9CM0xvd2VyVG9BaXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJU
b0Fpci5jcHAKaW5kZXggNDVhMDdlMzVhZDUyODJmYTdlOGJjNTZjNDRjMmExZjExODAyMTBjYi4u
N2E1NTJhMTFlZGM4NTdiMDBkZGJkMjM4NjgwNzNjNzdjNzQ3N2MyNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2IzL0IzTG93ZXJUb0Fpci5jcHAKQEAgLTYwOSw2ICs2MDksMjEgQEAgcHVibGlj
OgogICAgICAgICB9CiAgICAgfQogCisgICAgYm9vbCB0cnlPcihWYWx1ZSogbGVmdCwgVmFsdWUq
IHJpZ2h0KQorICAgIHsKKyAgICAgICAgc3dpdGNoIChsZWZ0LT50eXBlKCkpIHsKKyAgICAgICAg
Y2FzZSBJbnQzMjoKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPE9yMzIsIENvbW11dGF0aXZlPihs
ZWZ0LCByaWdodCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgY2FzZSBJbnQ2
NDoKKyAgICAgICAgICAgIGFwcGVuZEJpbk9wPE9yNjQsIENvbW11dGF0aXZlPihsZWZ0LCByaWdo
dCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbW9yZSB0eXBlcyEKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGJvb2wgdHJ5U2hsKFZhbHVlKiB2YWx1ZSwg
VmFsdWUqIGFtb3VudCkKICAgICB7CiAgICAgICAgIEFpcjo6T3Bjb2RlIG9wY29kZSA9IHZhbHVl
LT50eXBlKCkgPT0gSW50MzIgPyBMc2hpZnQzMiA6IExzaGlmdDY0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5zIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2IzL0IzTG93ZXJpbmdNYXRjaGVyLnBhdHRlcm5zCmluZGV4IDE3OTI1
Y2Y1OGUzNjk3MDk3YmM3ODJhNGYxZTFjYjYyM2I5NmMxNmEuLjIwYmFjYzJmOTliNzk2ZTAzMjUy
OTZkYmM5MDhkYTFhOGE1Yzk0MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
My9CM0xvd2VyaW5nTWF0Y2hlci5wYXR0ZXJucworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNMb3dlcmluZ01hdGNoZXIucGF0dGVybnMKQEAgLTMzLDYgKzMzLDcgQEAgTG9hZCA9IExv
YWQoYWRkcmVzcykKIEFkZCA9IEFkZChsZWZ0LCByaWdodCkKIFN1YiA9IFN1YihsZWZ0LCByaWdo
dCkKIEFuZCA9IEJpdEFuZChsZWZ0LCByaWdodCkKK09yID0gQml0T3IobGVmdCwgcmlnaHQpCiAK
IFNobCA9IFNobCh2YWx1ZSwgYW1vdW50KQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYjMvQjNSZWR1Y2VTdHJlbmd0aC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMv
QjNSZWR1Y2VTdHJlbmd0aC5jcHAKaW5kZXggZTBlZWRlNDZlODE4NWRjODA3NGViMzQ5MTdjOTQ2
NmE5YWM3Y2I0ZS4uM2UzNjAyNWIxNWQ0NGNjNjQ2MDMwMWQ5MmI1NGY3MDg4ZDNkNTQ5NSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzUmVkdWNlU3RyZW5ndGguY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1JlZHVjZVN0cmVuZ3RoLmNwcApAQCAtMTM3
LDYgKzEzNywxMDQgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgYnJlYWs7CiAKKyAgICAgICAg
Y2FzZSBCaXRBbmQ6CisgICAgICAgICAgICBoYW5kbGVDb21tdXRhdGl2aXR5KCk7CisKKyAgICAg
ICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKGNvbnN0YW50MSwgY29uc3RhbnQyKQorICAgICAg
ICAgICAgLy8gSW50byB0aGlzOiBjb25zdGFudDEgJiBjb25zdGFudDIKKyAgICAgICAgICAgIGlm
IChWYWx1ZSogY29uc3RhbnRCaXRBbmQgPSBtX3ZhbHVlLT5jaGlsZCgwKS0+Yml0QW5kQ29uc3Rh
bnQobV9wcm9jLCBtX3ZhbHVlLT5jaGlsZCgxKSkpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNl
V2l0aE5ld1ZhbHVlKGNvbnN0YW50Qml0QW5kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRBbmQoQml0QW5kKHZh
bHVlLCBjb25zdGFudDEpLCBjb25zdGFudDIpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJp
dEFuZCh2YWx1ZSwgY29uc3RhbnQxICYgY29uc3RhbnQyKS4KKyAgICAgICAgICAgIGlmIChtX3Zh
bHVlLT5jaGlsZCgwKS0+b3Bjb2RlKCkgPT0gQml0QW5kKSB7CisgICAgICAgICAgICAgICAgVmFs
dWUqIG5ld0NvbnN0YW50ID0gbV92YWx1ZS0+Y2hpbGQoMSktPmJpdEFuZENvbnN0YW50KG1fcHJv
YywgbV92YWx1ZS0+Y2hpbGQoMCktPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3
Q29uc3RhbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQuaW5zZXJ0VmFs
dWUobV9pbmRleCwgbmV3Q29uc3RhbnQpOworICAgICAgICAgICAgICAgICAgICBtX3ZhbHVlLT5j
aGlsZCgwKSA9IG1fdmFsdWUtPmNoaWxkKDApLT5jaGlsZCgwKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV92YWx1ZS0+Y2hpbGQoMSkgPSBuZXdDb25zdGFudDsKKyAgICAgICAgICAgICAgICAgICAg
bV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIC8vIFR1cm4gdGhpczogQml0QW5kKHZhbHVlWCwgdmFsdWVYKQorICAgICAgICAg
ICAgLy8gSW50byB0aGlzOiB2YWx1ZVguCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQo
MCkgPT0gbV92YWx1ZS0+Y2hpbGQoMSkpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBs
YWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBtX2No
YW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdEFuZCh2YWx1ZSwgemVyby1jb25zdGFudCkKKyAg
ICAgICAgICAgIC8vIEludG8gdGhpczogemVyby1jb25zdGFudC4KKyAgICAgICAgICAgIGlmICht
X3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5y
ZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICBt
X2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJpdEFuZCh2YWx1ZSwgYWxsLW9uZXMpCisgICAg
ICAgICAgICAvLyBJbnRvIHRoaXM6IHZhbHVlLgorICAgICAgICAgICAgaWYgKChtX3ZhbHVlLT50
eXBlKCkgPT0gSW50NjQgJiYgbV92YWx1ZS0+Y2hpbGQoMSktPmlzSW50KDB4ZmZmZmZmZmZmZmZm
ZmZmZikpCisgICAgICAgICAgICAgICAgfHwgKG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQzMiAmJiBt
X3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMHhmZmZmZmZmZikpKSB7CisgICAgICAgICAgICAgICAg
bV92YWx1ZS0+cmVwbGFjZVdpdGhJZGVudGl0eShtX3ZhbHVlLT5jaGlsZCgwKSk7CisgICAgICAg
ICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCaXRPcjoKKyAg
ICAgICAgICAgIGhhbmRsZUNvbW11dGF0aXZpdHkoKTsKKworICAgICAgICAgICAgLy8gVHVybiB0
aGlzOiBCaXRPcihjb25zdGFudDEsIGNvbnN0YW50MikKKyAgICAgICAgICAgIC8vIEludG8gdGhp
czogY29uc3RhbnQxIHwgY29uc3RhbnQyCisgICAgICAgICAgICBpZiAoVmFsdWUqIGNvbnN0YW50
Qml0QW5kID0gbV92YWx1ZS0+Y2hpbGQoMCktPmJpdE9yQ29uc3RhbnQobV9wcm9jLCBtX3ZhbHVl
LT5jaGlsZCgxKSkpIHsKKyAgICAgICAgICAgICAgICByZXBsYWNlV2l0aE5ld1ZhbHVlKGNvbnN0
YW50Qml0QW5kKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgLy8gVHVybiB0aGlzOiBCaXRBbmQoQml0QW5kKHZhbHVlLCBjb25zdGFudDEpLCBj
b25zdGFudDIpCisgICAgICAgICAgICAvLyBJbnRvIHRoaXM6IEJpdEFuZCh2YWx1ZSwgY29uc3Rh
bnQxICYgY29uc3RhbnQyKS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgwKS0+b3Bj
b2RlKCkgPT0gQml0T3IpIHsKKyAgICAgICAgICAgICAgICBWYWx1ZSogbmV3Q29uc3RhbnQgPSBt
X3ZhbHVlLT5jaGlsZCgxKS0+Yml0T3JDb25zdGFudChtX3Byb2MsIG1fdmFsdWUtPmNoaWxkKDAp
LT5jaGlsZCgxKSk7CisgICAgICAgICAgICAgICAgaWYgKG5ld0NvbnN0YW50KSB7CisgICAgICAg
ICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydFZhbHVlKG1faW5kZXgsIG5ld0NvbnN0
YW50KTsKKyAgICAgICAgICAgICAgICAgICAgbV92YWx1ZS0+Y2hpbGQoMCkgPSBtX3ZhbHVlLT5j
aGlsZCgwKS0+Y2hpbGQoMCk7CisgICAgICAgICAgICAgICAgICAgIG1fdmFsdWUtPmNoaWxkKDEp
ID0gbmV3Q29uc3RhbnQ7CisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIHRo
aXM6IEJpdE9yKHZhbHVlWCwgdmFsdWVYKQorICAgICAgICAgICAgLy8gSW50byB0aGlzOiB2YWx1
ZVguCisgICAgICAgICAgICBpZiAobV92YWx1ZS0+Y2hpbGQoMCkgPT0gbV92YWx1ZS0+Y2hpbGQo
MSkpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFs
dWUtPmNoaWxkKDApKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIHRo
aXM6IEJpdE9yKHZhbHVlLCB6ZXJvLWNvbnN0YW50KQorICAgICAgICAgICAgLy8gSW50byB0aGlz
OiB2YWx1ZS4KKyAgICAgICAgICAgIGlmIChtX3ZhbHVlLT5jaGlsZCgxKS0+aXNJbnQoMCkpIHsK
KyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5KG1fdmFsdWUtPmNo
aWxkKDApKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBUdXJuIHRoaXM6IEJp
dE9yKHZhbHVlLCBhbGwtb25lcykKKyAgICAgICAgICAgIC8vIEludG8gdGhpczogYWxsLW9uZXMu
CisgICAgICAgICAgICBpZiAoKG1fdmFsdWUtPnR5cGUoKSA9PSBJbnQ2NCAmJiBtX3ZhbHVlLT5j
aGlsZCgxKS0+aXNJbnQoMHhmZmZmZmZmZmZmZmZmZmZmKSkKKyAgICAgICAgICAgICAgICB8fCAo
bV92YWx1ZS0+dHlwZSgpID09IEludDMyICYmIG1fdmFsdWUtPmNoaWxkKDEpLT5pc0ludCgweGZm
ZmZmZmZmKSkpIHsKKyAgICAgICAgICAgICAgICBtX3ZhbHVlLT5yZXBsYWNlV2l0aElkZW50aXR5
KG1fdmFsdWUtPmNoaWxkKDEpKTsKKyAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVh
azsKKwogICAgICAgICBjYXNlIExvYWQ4WjoKICAgICAgICAgY2FzZSBMb2FkOFM6CiAgICAgICAg
IGNhc2UgTG9hZDE2WjoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1Zh
bHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmNwcAppbmRleCBiZTA1
OWUzN2Y4Njk3NzQ5YmYxOTAwMjcyNzY4M2RhMjM1Nzg2ZWJjLi42ZjY4MzRhODU1NzUzMjgyODU3
ZmQ3MTBmMDYwNjY2OGVlNmM2NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YjMvQjNWYWx1ZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuY3Bw
CkBAIC0xMjcsNiArMTI3LDE2IEBAIFZhbHVlKiBWYWx1ZTo6c3ViQ29uc3RhbnQoUHJvY2VkdXJl
JiwgVmFsdWUqKSBjb25zdAogICAgIHJldHVybiBudWxscHRyOwogfQogCitWYWx1ZSogVmFsdWU6
OmJpdEFuZENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKikgY29uc3QKK3sKKyAgICByZXR1cm4g
bnVsbHB0cjsKK30KKworVmFsdWUqIFZhbHVlOjpiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIFZh
bHVlKikgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKwogVmFsdWUqIFZhbHVlOjpl
cXVhbENvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKikgY29uc3QKIHsKICAgICByZXR1cm4gbnVs
bHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvQjNWYWx1ZS5oCmluZGV4IGRiZDExY2VmMzEzMzFiOTli
MWUwZjNkMjA0OTVlN2YwNzIzOWViNTguLjIyYzNjYWQwMDNjOWIyZTQ3ZWNmYWY5NzAxN2ZhNjgz
ZDBhNWZjOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9CM1ZhbHVlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL0IzVmFsdWUuaApAQCAtMTEyLDYgKzExMiw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZhbHVlKiBhZGRDb25zdGFudChQcm9jZWR1cmUmLCBp
bnQzMl90IG90aGVyKSBjb25zdDsKICAgICB2aXJ0dWFsIFZhbHVlKiBhZGRDb25zdGFudChQcm9j
ZWR1cmUmLCBWYWx1ZSogb3RoZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIHN1YkNvbnN0
YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Q7CisgICAgdmlydHVhbCBWYWx1ZSog
Yml0QW5kQ29uc3RhbnQoUHJvY2VkdXJlJiwgVmFsdWUqIG90aGVyKSBjb25zdDsKKyAgICB2aXJ0
dWFsIFZhbHVlKiBiaXRPckNvbnN0YW50KFByb2NlZHVyZSYsIFZhbHVlKiBvdGhlcikgY29uc3Q7
CiAgICAgdmlydHVhbCBWYWx1ZSogZXF1YWxDb25zdGFudChQcm9jZWR1cmUmLCBWYWx1ZSogb3Ro
ZXIpIGNvbnN0OwogICAgIHZpcnR1YWwgVmFsdWUqIG5vdEVxdWFsQ29uc3RhbnQoUHJvY2VkdXJl
JiwgVmFsdWUqIG90aGVyKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2RlcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy9h
aXIvQWlyT3Bjb2RlLm9wY29kZXMKaW5kZXggMTEwMzE2OTRiODZlYjdjZjlmNDM2ZThhMTAwYjNl
Yjk5Zjg5ZGY5Ny4uM2QwMjUwMjdjODEwMWNhNjI3OWMyZDc5NGYxZTI1MTc4NDdhODdmZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL2Fpci9BaXJPcGNvZGUub3Bjb2Rlcwor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYjMvYWlyL0Fpck9wY29kZS5vcGNvZGVzCkBAIC0x
MDcsNiArMTA3LDE3IEBAIExzaGlmdDMyIFU6RywgVUQ6RwogICAgIFRtcCosIFRtcAogICAgIElt
bSwgVG1wCiAKK09yMzIgVTpHLCBVRDpHCisgICAgVG1wLCBUbXAKKyAgICBJbW0sIFRtcAorICAg
IFRtcCwgQWRkcgorICAgIEFkZHIsIFRtcAorICAgIEltbSwgQWRkcgorCitPcjY0IFU6RywgVUQ6
RworICAgIFRtcCwgVG1wCisgICAgSW1tLCBUbXAKKwogTHNoaWZ0NjQgVTpHLCBVRDpHCiAgICAg
VG1wKiwgVG1wCiAgICAgSW1tLCBUbXAKQEAgLTEyMSw3ICsxMzIsNyBAQCBNdWwzMiBVOkcsIFVE
OkcKICMgbWVhbnMgbW92ZVB0ci4KIE1vdmUgVTpHLCBEOkcKICAgICBUbXAsIFRtcAotICAgIElt
bSwgVG1wCisgICAgSW1tLCBUbXAgYXMgc2lnbkV4dGVuZDMyVG9QdHIKICAgICBJbW02NCwgVG1w
CiAgICAgQWRkciwgVG1wIGFzIGxvYWRQdHIgIyBUaGlzIG1lYW5zIHRoYXQgIk1vdmUgQWRkciwg
VG1wIiBpcyBjb2RlLWdlbmVyYXRlZCBhcyAibG9hZCIgbm90ICJtb3ZlIi4KICAgICBJbmRleCwg
VG1wIGFzIGxvYWRQdHIKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9iMy90ZXN0
YjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKaW5kZXggNjg3ZDhm
MTRhN2EzM2M3NzI3ODAwZDEyZTU5MDFhYjVlYjJmOGFmZC4uZGNmMjQ4OWRkNGMxYjRmN2Y3OWFj
YmE2YTI2NDM1MmRjYTI3ZGYwMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Iz
L3Rlc3RiMy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2IzL3Rlc3RiMy5jcHAKQEAg
LTEyMCw2ICsxMjAsMTcgQEAgdm9pZCB0ZXN0QXJnKGludCBhcmd1bWVudCkKICAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludD4ocHJvYywgYXJndW1lbnQpID09IGFyZ3VtZW50KTsKIH0KIAordm9p
ZCB0ZXN0UmV0dXJuQ29uc3Q2NChpbnQ2NF90IHZhbHVlKQoreworICAgIFByb2NlZHVyZSBwcm9j
OworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCB2YWx1
ZSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jKSA9PSB2YWx1ZSk7
Cit9CisKIHZvaWQgdGVzdEFkZEFyZ3MoaW50IGEsIGludCBiKQogewogICAgIFByb2NlZHVyZSBw
cm9jOwpAQCAtMjcyLDYgKzI4Myw0NjEgQEAgdm9pZCB0ZXN0U3ViSW1tQXJnMzIoaW50IGEsIGlu
dCBiKQogICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBiKSA9PSBhIC0gYik7CiB9
CiAKK3ZvaWQgdGVzdEJpdEFuZEFyZ3MoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1l
bnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
NjRfdD4ocHJvYywgYSwgYikgPT0gKGEgJiBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZFNhbWVB
cmcoaW50NjRfdCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5k
TmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQ
UjApOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBS
ZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAg
ICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50LAorICAg
ICAgICAgICAgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4o
cHJvYywgYSkgPT0gYSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbXMoaW50NjRfdCBhLCBpbnQ2
NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKwor
ICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYykgPT0gKGEgJiBiKSk7Cit9CisK
K3ZvaWQgdGVzdEJpdEFuZEFyZ0ltbShpbnQ2NF90IGEsIGludDY0X3QgYikKK3sKKyAgICBQcm9j
ZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAg
IHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAgICAgICBwcm9jLCBSZXR1cm4sIE9y
aWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJv
YywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVu
dFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkp
OworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoYSAmIGIp
KTsKK30KKwordm9pZCB0ZXN0Qml0QW5kSW1tQXJnKGludDY0X3QgYSwgaW50NjRfdCBiKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJl
dHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAg
ICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVu
dEdQUjApKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09
IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oaW50NjRfdCBh
LCBpbnQ2NF90IGIsIGludDY0X3QgYykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNp
Y0Jsb2NrKiByb290ID0gcHJvYy5hZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdEFuZCA9
IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCks
CisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENvbnN0
NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJv
bFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisg
ICAgICAgICAgICBpbm5lckJpdEFuZCwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1
bjxpbnQ2NF90Pihwcm9jLCBhKSA9PSAoKGEgJiBiKSAmIGMpKTsKK30KKwordm9pZCB0ZXN0Qml0
QW5kSW1tQml0QW5kQXJnSW1tKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90IGMpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICBWYWx1ZSogaW5uZXJCaXRBbmQgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8QXJn
dW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCksCisg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSk7
CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVy
biwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAg
ICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PENv
bnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAgICAgaW5uZXJCaXRBbmQp
KTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYikgPT0gKGEgJiAo
YiAmIGMpKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEFyZ3MzMihpbnQgYSwgaW50IGIpCit7Cisg
ICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2so
KTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0
dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAg
ICAgIHByb2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMCkpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBH
UFJJbmZvOjphcmd1bWVudEdQUjEpKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+
KHByb2MsIGEsIGIpID09IChhICYgYikpOworfQorCit2b2lkIHRlc3RCaXRBbmRTYW1lQXJnMzIo
aW50IGEpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogYXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8VmFs
dWU+KHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3Vt
ZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICBhcmd1bWVudCwKKyAgICAgICAgICAg
IGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0g
YSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEltbXMzMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJv
Y2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAg
ICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBP
cmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHBy
b2MsIEJpdEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3Qz
MlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVB
bmRSdW48aW50Pihwcm9jKSA9PSAoYSAmIGIpKTsKK30KKwordm9pZCB0ZXN0Qml0QW5kQXJnSW1t
MzIoaW50IGEsIGludCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sq
IHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1
ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVu
ZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgICAgICBwcm9jLCBUcnVu
YywgT3JpZ2luKCksCisgICAgICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVn
VmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAg
ICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSkpOwor
CisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09IChhICYgYikpOworfQor
Cit2b2lkIHRlc3RCaXRBbmRJbW1BcmczMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJl
IHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290
LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJp
dEFuZCwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVl
Pihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+
KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJv
YywgYikgPT0gKGEgJiBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMy
KGludCBhLCBpbnQgYiwgaW50IGMpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNC
bG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogaW5uZXJCaXRBbmQgPSBy
b290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAor
ICAgICAgICByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICAgICAgcHJvYywgVHJ1bmMs
IE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+
KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1bWVudEdQUjApKSwKKyAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5h
cHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwK
KyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdEFu
ZCwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lckJpdEFuZCwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBjKSkpOworCisgICAgQ0hF
Q0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGEpID09ICgoYSAmIGIpICYgYykpOworfQorCit2
b2lkIHRlc3RCaXRBbmRJbW1CaXRBbmRBcmdJbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGlubmVyQml0QW5kID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAg
ICAgICAgcHJvYywgQml0QW5kLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6
YXJndW1lbnRHUFIwKSksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBjKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisg
ICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxW
YWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRBbmQsIE9yaWdpbigpLAorICAgICAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAg
ICAgICAgaW5uZXJCaXRBbmQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9j
LCBiKSA9PSAoYSAmIChiICYgYykpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdzKGludDY0X3Qg
YSwgaW50NjRfdCBiKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJv
b3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4o
CisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAg
ICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUklu
Zm86OmFyZ3VtZW50R1BSMCksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRS
ZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKTsKKworICAg
IENIRUNLKGNvbXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSwgYikgPT0gKGEgfCBiKSk7Cit9
CisKK3ZvaWQgdGVzdEJpdE9yU2FtZUFyZyhpbnQ2NF90IGEpCit7CisgICAgUHJvY2VkdXJlIHBy
b2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSog
YXJndW1lbnQgPSByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2lu
KCksIEdQUkluZm86OmFyZ3VtZW50R1BSMCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xW
YWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFw
cGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAg
ICAgICAgICBhcmd1bWVudCwKKyAgICAgICAgICAgIGFyZ3VtZW50KSk7CisKKyAgICBDSEVDSyhj
b21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGEpID09IGEpOworfQorCit2b2lkIHRlc3RCaXRP
ckltbXMoaW50NjRfdCBhLCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdp
bigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2Ms
IE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihwcm9j
KSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2
NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHBy
b2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAg
ICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3Qt
PmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJn
dW1lbnRHUFIwKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHBy
b2MsIE9yaWdpbigpLCBiKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2NF90Pihw
cm9jLCBhKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JJbW1BcmcoaW50NjRfdCBh
LCBpbnQ2NF90IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9v
dCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigK
KyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3
PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAg
IHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAg
ICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwg
R1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ2
NF90Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JCaXRPckFyZ0lt
bUltbShpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjKQoreworICAgIFByb2NlZHVyZSBw
cm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUq
IGlubmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAgICAgICBwcm9jLCBCaXRP
ciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihw
cm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSwKKyAgICAgICAgcm9vdC0+YXBw
ZW5kTmV3PENvbnN0NjRWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGIpKTsKKyAgICByb290LT5hcHBl
bmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAg
ICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBP
cmlnaW4oKSwKKyAgICAgICAgICAgIGlubmVyQml0T3IsCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYykpKTsKKworICAgIENIRUNLKGNv
bXBpbGVBbmRSdW48aW50NjRfdD4ocHJvYywgYSkgPT0gKChhIHwgYikgfCBjKSk7Cit9CisKK3Zv
aWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0oaW50NjRfdCBhLCBpbnQ2NF90IGIsIGludDY0X3Qg
YykKK3sKKyAgICBQcm9jZWR1cmUgcHJvYzsKKyAgICBCYXNpY0Jsb2NrKiByb290ID0gcHJvYy5h
ZGRCbG9jaygpOworICAgIFZhbHVlKiBpbm5lckJpdE9yID0gcm9vdC0+YXBwZW5kTmV3PFZhbHVl
PigKKyAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmRO
ZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFyZ3VtZW50R1BS
MCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25zdDY0VmFsdWU+KHByb2MsIE9yaWdpbigp
LCBjKSk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2Ms
IFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAg
ICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBlbmRO
ZXc8Q29uc3Q2NFZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICBpbm5lckJp
dE9yKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGludDY0X3Q+KHByb2MsIGIpID09IChh
IHwgKGIgfCBjKSkpOworfQorCit2b2lkIHRlc3RCaXRPckFyZ3MzMihpbnQgYSwgaW50IGIpCit7
CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxv
Y2soKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywg
UmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAg
ICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8
VmFsdWU+KAorICAgICAgICAgICAgICAgIHByb2MsIFRydW5jLCBPcmlnaW4oKSwKKyAgICAgICAg
ICAgICAgICByb290LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCks
IEdQUkluZm86OmFyZ3VtZW50R1BSMSkpKSk7CisKKyAgICBDSEVDSyhjb21waWxlQW5kUnVuPGlu
dD4ocHJvYywgYSwgYikgPT0gKGEgfCBiKSk7Cit9CisKK3ZvaWQgdGVzdEJpdE9yU2FtZUFyZzMy
KGludCBhKQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBw
cm9jLmFkZEJsb2NrKCk7CisgICAgVmFsdWUqIGFyZ3VtZW50ID0gcm9vdC0+YXBwZW5kTmV3PFZh
bHVlPigKKyAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9vdC0+
YXBwZW5kTmV3PEFyZ3VtZW50UmVnVmFsdWU+KHByb2MsIE9yaWdpbigpLCBHUFJJbmZvOjphcmd1
bWVudEdQUjApKTsKKyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAg
cHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigK
KyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIGFyZ3VtZW50
LAorICAgICAgICAgICAgYXJndW1lbnQpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50
Pihwcm9jLCBhKSA9PSBhKTsKK30KKwordm9pZCB0ZXN0Qml0T3JJbW1zMzIoaW50IGEsIGludCBi
KQoreworICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFk
ZEJsb2NrKCk7CisgICAgcm9vdC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHBy
b2MsIFJldHVybiwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisg
ICAgICAgICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICByb290LT5hcHBl
bmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYSksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4oKSwgYikpKTsKKworICAgIENI
RUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0
Qml0T3JBcmdJbW0zMihpbnQgYSwgaW50IGIpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICByb290LT5hcHBlbmROZXc8
Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJuLCBPcmlnaW4oKSwKKyAgICAgICAg
cm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4o
KSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICAgICAg
cHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxB
cmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSks
CisgICAgICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgYikpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48aW50Pihwcm9jLCBhKSA9PSAoYSB8
IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JJbW1BcmczMihpbnQgYSwgaW50IGIpCit7CisgICAg
UHJvY2VkdXJlIHByb2M7CisgICAgQmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsK
KyAgICByb290LT5hcHBlbmROZXc8Q29udHJvbFZhbHVlPigKKyAgICAgICAgcHJvYywgUmV0dXJu
LCBPcmlnaW4oKSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAg
IHByb2MsIEJpdE9yLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxDb25z
dDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBhKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5l
dzxWYWx1ZT4oCisgICAgICAgICAgICAgICAgcHJvYywgVHJ1bmMsIE9yaWdpbigpLAorICAgICAg
ICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1ZhbHVlPihwcm9jLCBPcmlnaW4o
KSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSkpKTsKKworICAgIENIRUNLKGNvbXBpbGVBbmRSdW48
aW50Pihwcm9jLCBiKSA9PSAoYSB8IGIpKTsKK30KKwordm9pZCB0ZXN0Qml0T3JCaXRPckFyZ0lt
bUltbTMyKGludCBhLCBpbnQgYiwgaW50IGMpCit7CisgICAgUHJvY2VkdXJlIHByb2M7CisgICAg
QmFzaWNCbG9jayogcm9vdCA9IHByb2MuYWRkQmxvY2soKTsKKyAgICBWYWx1ZSogaW5uZXJCaXRP
ciA9IHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgIHByb2MsIEJpdE9yLCBPcmlnaW4o
KSwKKyAgICAgICAgcm9vdC0+YXBwZW5kTmV3PFZhbHVlPigKKyAgICAgICAgICAgIHByb2MsIFRy
dW5jLCBPcmlnaW4oKSwKKyAgICAgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxBcmd1bWVudFJlZ1Zh
bHVlPihwcm9jLCBPcmlnaW4oKSwgR1BSSW5mbzo6YXJndW1lbnRHUFIwKSksCisgICAgICAgIHJv
b3QtPmFwcGVuZE5ldzxDb25zdDMyVmFsdWU+KHByb2MsIE9yaWdpbigpLCBiKSk7CisgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnRyb2xWYWx1ZT4oCisgICAgICAgIHByb2MsIFJldHVybiwgT3JpZ2lu
KCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1ZT4oCisgICAgICAgICAgICBwcm9jLCBC
aXRPciwgT3JpZ2luKCksCisgICAgICAgICAgICBpbm5lckJpdE9yLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGMpKSk7CisKKyAgICBD
SEVDSyhjb21waWxlQW5kUnVuPGludD4ocHJvYywgYSkgPT0gKChhIHwgYikgfCBjKSk7Cit9CisK
K3ZvaWQgdGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMihpbnQgYSwgaW50IGIsIGludCBjKQorewor
ICAgIFByb2NlZHVyZSBwcm9jOworICAgIEJhc2ljQmxvY2sqIHJvb3QgPSBwcm9jLmFkZEJsb2Nr
KCk7CisgICAgVmFsdWUqIGlubmVyQml0T3IgPSByb290LT5hcHBlbmROZXc8VmFsdWU+KAorICAg
ICAgICBwcm9jLCBCaXRPciwgT3JpZ2luKCksCisgICAgICAgIHJvb3QtPmFwcGVuZE5ldzxWYWx1
ZT4oCisgICAgICAgICAgICBwcm9jLCBUcnVuYywgT3JpZ2luKCksCisgICAgICAgICAgICByb290
LT5hcHBlbmROZXc8QXJndW1lbnRSZWdWYWx1ZT4ocHJvYywgT3JpZ2luKCksIEdQUkluZm86OmFy
Z3VtZW50R1BSMCkpLAorICAgICAgICByb290LT5hcHBlbmROZXc8Q29uc3QzMlZhbHVlPihwcm9j
LCBPcmlnaW4oKSwgYykpOworICAgIHJvb3QtPmFwcGVuZE5ldzxDb250cm9sVmFsdWU+KAorICAg
ICAgICBwcm9jLCBSZXR1cm4sIE9yaWdpbigpLAorICAgICAgICByb290LT5hcHBlbmROZXc8VmFs
dWU+KAorICAgICAgICAgICAgcHJvYywgQml0T3IsIE9yaWdpbigpLAorICAgICAgICAgICAgcm9v
dC0+YXBwZW5kTmV3PENvbnN0MzJWYWx1ZT4ocHJvYywgT3JpZ2luKCksIGEpLAorICAgICAgICAg
ICAgaW5uZXJCaXRPcikpOworCisgICAgQ0hFQ0soY29tcGlsZUFuZFJ1bjxpbnQ+KHByb2MsIGIp
ID09IChhIHwgKGIgfCBjKSkpOworfQorCiB2b2lkIHRlc3RTdG9yZShpbnQgdmFsdWUpCiB7CiAg
ICAgUHJvY2VkdXJlIHByb2M7CkBAIC0xMjUwLDYgKzE3MTYsOCBAQCB2b2lkIHJ1bihjb25zdCBj
aGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3Q0MigpKTsKICAgICBSVU4odGVzdExvYWQ0MigpKTsK
ICAgICBSVU4odGVzdEFyZyg0MykpOworICAgIFJVTih0ZXN0UmV0dXJuQ29uc3Q2NCg1KSk7Cisg
ICAgUlVOKHRlc3RSZXR1cm5Db25zdDY0KC00MikpOwogCiAgICAgUlVOKHRlc3RBZGRBcmdzKDEs
IDEpKTsKICAgICBSVU4odGVzdEFkZEFyZ3MoMSwgMikpOwpAQCAtMTI4OSw2ICsxNzU3LDExMiBA
QCB2b2lkIHJ1bihjb25zdCBjaGFyKiBmaWx0ZXIpCiAgICAgUlVOKHRlc3RTdWJJbW1BcmczMigx
MywgLTQyKSk7CiAgICAgUlVOKHRlc3RTdWJJbW1BcmczMigtMTMsIDQyKSk7CiAKKyAgICBSVU4o
dGVzdEJpdEFuZEFyZ3MoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDQzLCAwKSk7
CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdz
KDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoNDMp
KTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmcoMCkpOworICAgIFJVTih0ZXN0Qml0QW5kU2Ft
ZUFyZygzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRTYW1lQXJnKDB4ZmZmZmZmZmZmZmZmZmZmZikp
OworICAgIFJVTih0ZXN0Qml0QW5kSW1tcyg0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZElt
bXMoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMoMTAsIDMpKTsKKyAgICBSVU4odGVz
dEJpdEFuZEltbXMoNDIsIDB4ZmZmZmZmZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5k
QXJnSW1tKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tKDQzLCAwKSk7CisgICAg
UlVOKHRlc3RCaXRBbmRBcmdJbW0oMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbSg0
MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmcoNDMsIDQz
KSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmcoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdEFu
ZEltbUFyZygxMCwgMykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQXJnKDQyLCAweGZmZmZmZmZm
ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbSgyLCA3LCAzKSk7
CisgICAgUlVOKHRlc3RCaXRBbmRCaXRBbmRBcmdJbW1JbW0oMSwgNiwgNikpOworICAgIFJVTih0
ZXN0Qml0QW5kQml0QW5kQXJnSW1tSW1tKDB4ZmZmZiwgMjQsIDcpKTsKKyAgICBSVU4odGVzdEJp
dEFuZEltbUJpdEFuZEFyZ0ltbSg3LCAyLCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1CaXRB
bmRBcmdJbW0oNiwgMSwgNikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tQml0QW5kQXJnSW1tKDI0
LCAweGZmZmYsIDcpKTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ3MzMig0MywgNDMpKTsKKyAgICBS
VU4odGVzdEJpdEFuZEFyZ3MzMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnczMyKDEw
LCAzKSk7CisgICAgUlVOKHRlc3RCaXRBbmRBcmdzMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBS
VU4odGVzdEJpdEFuZFNhbWVBcmczMig0MykpOworICAgIFJVTih0ZXN0Qml0QW5kU2FtZUFyZzMy
KDApKTsKKyAgICBSVU4odGVzdEJpdEFuZFNhbWVBcmczMigzKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRTYW1lQXJnMzIoMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tczMyKDQzLCA0
MykpOworICAgIFJVTih0ZXN0Qml0QW5kSW1tczMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRB
bmRJbW1zMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbXMzMig0MiwgMHhmZmZmZmZm
ZikpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tMzIoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RC
aXRBbmRBcmdJbW0zMig0MywgMCkpOworICAgIFJVTih0ZXN0Qml0QW5kQXJnSW1tMzIoMTAsIDMp
KTsKKyAgICBSVU4odGVzdEJpdEFuZEFyZ0ltbTMyKDQyLCAweGZmZmZmZmZmKSk7CisgICAgUlVO
KHRlc3RCaXRBbmRJbW1BcmczMig0MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUFyZzMy
KDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRBbmRJbW1BcmczMigxMCwgMykpOworICAgIFJVTih0
ZXN0Qml0QW5kSW1tQXJnMzIoNDIsIDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJp
dEFuZEFyZ0ltbUltbTMyKDIsIDcsIDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJpdEFuZEFyZ0lt
bUltbTMyKDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJpdEFuZEJpdEFuZEFyZ0ltbUltbTMyKDB4
ZmZmZiwgMjQsIDcpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMyKDcsIDIs
IDMpKTsKKyAgICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMyKDYsIDEsIDYpKTsKKyAg
ICBSVU4odGVzdEJpdEFuZEltbUJpdEFuZEFyZ0ltbTMyKDI0LCAweGZmZmYsIDcpKTsKKworICAg
IFJVTih0ZXN0Qml0T3JBcmdzKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0T3JBcmdzKDQzLCAw
KSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3MoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJn
cyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPclNhbWVBcmcoNDMp
KTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZygwKSk7CisgICAgUlVOKHRlc3RCaXRPclNhbWVB
cmcoMykpOworICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnKDB4ZmZmZmZmZmZmZmZmZmZmZikpOwor
ICAgIFJVTih0ZXN0Qml0T3JJbW1zKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zKDQz
LCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckltbXMoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9y
SW1tcyg0MiwgMHhmZmZmZmZmZmZmZmZmZmZmKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ0ltbSg0
MywgNDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tKDQzLCAwKSk7CisgICAgUlVOKHRlc3RC
aXRPckFyZ0ltbSgxMCwgMykpOworICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0oNDIsIDB4ZmZmZmZm
ZmZmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JJbW1BcmcoNDMsIDQzKSk7CisgICAgUlVO
KHRlc3RCaXRPckltbUFyZyg0MywgMCkpOworICAgIFJVTih0ZXN0Qml0T3JJbW1BcmcoMTAsIDMp
KTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnKDQyLCAweGZmZmZmZmZmZmZmZmZmZmYpKTsKKyAg
ICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0oMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0
T3JCaXRPckFyZ0ltbUltbSgxLCA2LCA2KSk7CisgICAgUlVOKHRlc3RCaXRPckJpdE9yQXJnSW1t
SW1tKDB4ZmZmZiwgMjQsIDcpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0oNywg
MiwgMykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbSg2LCAxLCA2KSk7CisgICAg
UlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tKDI0LCAweGZmZmYsIDcpKTsKKyAgICBSVU4odGVz
dEJpdE9yQXJnczMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0T3JBcmdzMzIoNDMsIDApKTsK
KyAgICBSVU4odGVzdEJpdE9yQXJnczMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRPckFyZ3Mz
Mig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JTYW1lQXJnMzIoNDMpKTsKKyAg
ICBSVU4odGVzdEJpdE9yU2FtZUFyZzMyKDApKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZzMy
KDMpKTsKKyAgICBSVU4odGVzdEJpdE9yU2FtZUFyZzMyKDB4ZmZmZmZmZmYpKTsKKyAgICBSVU4o
dGVzdEJpdE9ySW1tczMyKDQzLCA0MykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1zMzIoNDMsIDAp
KTsKKyAgICBSVU4odGVzdEJpdE9ySW1tczMyKDEwLCAzKSk7CisgICAgUlVOKHRlc3RCaXRPcklt
bXMzMig0MiwgMHhmZmZmZmZmZikpOworICAgIFJVTih0ZXN0Qml0T3JBcmdJbW0zMig0MywgNDMp
KTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tMzIoNDMsIDApKTsKKyAgICBSVU4odGVzdEJpdE9y
QXJnSW1tMzIoMTAsIDMpKTsKKyAgICBSVU4odGVzdEJpdE9yQXJnSW1tMzIoNDIsIDB4ZmZmZmZm
ZmYpKTsKKyAgICBSVU4odGVzdEJpdE9ySW1tQXJnMzIoNDMsIDQzKSk7CisgICAgUlVOKHRlc3RC
aXRPckltbUFyZzMyKDQzLCAwKSk7CisgICAgUlVOKHRlc3RCaXRPckltbUFyZzMyKDEwLCAzKSk7
CisgICAgUlVOKHRlc3RCaXRPckltbUFyZzMyKDQyLCAweGZmZmZmZmZmKSk7CisgICAgUlVOKHRl
c3RCaXRPckJpdE9yQXJnSW1tSW1tMzIoMiwgNywgMykpOworICAgIFJVTih0ZXN0Qml0T3JCaXRP
ckFyZ0ltbUltbTMyKDEsIDYsIDYpKTsKKyAgICBSVU4odGVzdEJpdE9yQml0T3JBcmdJbW1JbW0z
MigweGZmZmYsIDI0LCA3KSk7CisgICAgUlVOKHRlc3RCaXRPckltbUJpdE9yQXJnSW1tMzIoNywg
MiwgMykpOworICAgIFJVTih0ZXN0Qml0T3JJbW1CaXRPckFyZ0ltbTMyKDYsIDEsIDYpKTsKKyAg
ICBSVU4odGVzdEJpdE9ySW1tQml0T3JBcmdJbW0zMigyNCwgMHhmZmZmLCA3KSk7CisKICAgICBS
VU4odGVzdFN0b3JlKDQ0KSk7CiAgICAgUlVOKHRlc3RTdG9yZUNvbnN0YW50KDQ5KSk7CiAgICAg
UlVOKHRlc3RTdG9yZUNvbnN0YW50UHRyKDQ5KSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>