<?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>183740</bug_id>
          
          <creation_ts>2018-03-19 04:26:47 -0700</creation_ts>
          <short_desc>[MIPS] Optimize JIT code generated by methods with TrustedImm32 operand</short_desc>
          <delta_ts>2018-04-02 10:50:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>Other</version>
          <rep_platform>Other</rep_platform>
          <op_sys>Other</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Stanislav Ocovaj">stanislav.ocovaj</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mips32r2</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1407350</commentid>
    <comment_count>0</comment_count>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-19 04:26:47 -0700</bug_when>
    <thetext>In many macro assembler methods with TrustedImm32 operand a move imm, immTemp (pseudo)instruction is first generated and a register operand variant of the same method is called to generate the rest of the code. If the immediate value can fit in 16 bits then we can skip the move instruction and generate more efficient code using MIPS instructions with immediate operand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407351</commentid>
    <comment_count>1</comment_count>
      <attachid>336037</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-19 04:38:37 -0700</bug_when>
    <thetext>Created attachment 336037
Patch

The patch that implements the proposed optimizations</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407352</commentid>
    <comment_count>2</comment_count>
      <attachid>336038</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-19 04:58:01 -0700</bug_when>
    <thetext>Created attachment 336038
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1407353</commentid>
    <comment_count>3</comment_count>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-19 05:00:01 -0700</bug_when>
    <thetext>The patch also fixes a couple of bugs in oveflow detection in branchAdd32(ResultCondition cond, TrustedImm32 imm, AbsoluteAddress dest).
Firstly, the condition if (imm.m_value &gt;= -32768 &amp;&amp; imm.m_value  &lt;= 32767) is inappropriate for xori instruction, which has an unsigned 16-bit immediate operand, unlike the addiu instruction which has a signed 16-bit immediate operand.
Secondly, in the else branch, addiu and xori were used instead of addu and xorInsn, with register number being interpreted as an immediate operand.
Thirdly, add instruction was placed in the branch delay slot of the first branch instruction, which means the the result would not be stored to the destination address if the branch was taken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408300</commentid>
    <comment_count>4</comment_count>
      <attachid>336038</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-21 22:22:21 -0700</bug_when>
    <thetext>Comment on attachment 336038
Patch

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

r=me with some comments.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:686
&gt; -        if (imm.m_value == -1) {
&gt; +        if (imm.m_value == -1 &amp;&amp; !m_fixedWidth) {
&gt;              m_assembler.nor(dest, dest, MIPSRegisters::zero);
&gt;              return;
&gt;          }
&gt; -
&gt; -        /*
&gt; -            li  immTemp, imm
&gt; -            xor dest, dest, immTemp
&gt; -        */
&gt; -        move(imm, immTempRegister);
&gt; -        m_assembler.xorInsn(dest, dest, immTempRegister);
&gt; +        if (imm.m_value &gt;= 0 &amp;&amp; imm.m_value &lt;= 65535 &amp;&amp; !m_fixedWidth)
&gt; +            m_assembler.xori(dest, dest, imm.m_value);
&gt; +        else {
&gt; +            /*
&gt; +                li  immTemp, imm
&gt; +                xor dest, dest, immTemp
&gt; +            */
&gt; +            move(imm, immTempRegister);
&gt; +            m_assembler.xorInsn(dest, dest, immTempRegister);
&gt; +        }

Let&apos;s reorganize this code as follows,

if (!m_fixedWidth) {
    if (imm.m_value == -1) {
        ...
        return;
    }

    if (imm.m_value &gt;= 0 &amp;&amp; imm.m_value &lt;= 65535) {
        ...;
        return;
    }
}
...;

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:704
&gt; +        if (imm.m_value == -1 &amp;&amp; !m_fixedWidth) {
&gt;              m_assembler.nor(dest, src, MIPSRegisters::zero);
&gt;              return;
&gt;          }
&gt; -
&gt; -        /*
&gt; -            li  immTemp, imm
&gt; -            xor dest, dest, immTemp
&gt; -        */
&gt; -        move(imm, immTempRegister);
&gt; -        m_assembler.xorInsn(dest, src, immTempRegister);
&gt; +        if (imm.m_value &gt;= 0 &amp;&amp; imm.m_value &lt;= 65535 &amp;&amp; !m_fixedWidth)
&gt; +            m_assembler.xori(dest, src, imm.m_value);
&gt; +        else {
&gt; +            /*
&gt; +                li  immTemp, imm
&gt; +                xor dest, src, immTemp
&gt; +            */
&gt; +            move(imm, immTempRegister);
&gt; +            m_assembler.xorInsn(dest, src, immTempRegister);
&gt; +        }

Ditto.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1628
&gt; +        if (!m_fixedWidth &amp;&amp; !right.m_value)
&gt; +            return branch32(cond, left, MIPSRegisters::zero);
&gt; +        if (right.m_value &gt;= -32768 &amp;&amp; right.m_value &lt;= 32767 &amp;&amp; !m_fixedWidth) {

Reorganize the function as follows,

if (!m_fixedWidth) {
    ...;
}
...default path...;

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1672
&gt; +            if (cond == Equal) {
&gt; +                move(right, immTempRegister);
&gt; +                return branchEqual(left, immTempRegister);
&gt; +            }
&gt; +            if (cond == NotEqual) {
&gt; +                move(right, immTempRegister);
&gt; +                return branchNotEqual(left, immTempRegister);
&gt; +            }
&gt; +            if (cond == Above) {
&gt; +                move(right, immTempRegister);
&gt; +                m_assembler.sltu(cmpTempRegister, immTempRegister, left);
&gt; +                return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }
&gt; +            if (cond == AboveOrEqual) {
&gt; +                m_assembler.sltiu(cmpTempRegister, left, right.m_value);
&gt; +                return branchEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }
&gt; +            if (cond == Below) {
&gt; +                m_assembler.sltiu(cmpTempRegister, left, right.m_value);
&gt; +                return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }
&gt; +            if (cond == BelowOrEqual) {
&gt; +                move(right, immTempRegister);
&gt; +                m_assembler.sltu(cmpTempRegister, immTempRegister, left);
&gt; +                return branchEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }
&gt; +            if (cond == GreaterThan) {
&gt; +                move(right, immTempRegister);
&gt; +                m_assembler.slt(cmpTempRegister, immTempRegister, left);
&gt; +                return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }
&gt; +            if (cond == GreaterThanOrEqual) {
&gt; +                m_assembler.slti(cmpTempRegister, left, right.m_value);
&gt; +                return branchEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }
&gt; +            if (cond == LessThan) {
&gt; +                m_assembler.slti(cmpTempRegister, left, right.m_value);
&gt; +                return branchNotEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }
&gt; +            if (cond == LessThanOrEqual) {
&gt; +                move(right, immTempRegister);
&gt; +                m_assembler.slt(cmpTempRegister, immTempRegister, left);
&gt; +                return branchEqual(cmpTempRegister, MIPSRegisters::zero);
&gt; +            }

Large part of this function is the same to the default code path

move(...);
return branch32(...);

Let&apos;s add only special handling here. (AboveOrEqual, Below, GreaterThanOrEqual, LessThan).

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1674
&gt; +            ASSERT(0);
&gt; +            return Jump();

Remove this.

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1768
&gt; +        }

Reorganize the function as follows,

if (!m_fixedWidth) {
   ...;
}
... default path ...;

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:1791
&gt; +            mask8 = MacroAssemblerHelpers::mask8OnCondition(*this, cond, mask);

I think we should not do this here. We should create a helper function mask8OnTest for MacroAssemblerMIPS and use it.
For example, test8 should also use it ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1408347</commentid>
    <comment_count>5</comment_count>
      <attachid>336278</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-22 07:27:32 -0700</bug_when>
    <thetext>Created attachment 336278
Patch

Patch rebased, requested changes added</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410268</commentid>
    <comment_count>6</comment_count>
    <who name="Petar Jovanovic">mips32r2</who>
    <bug_when>2018-03-29 08:34:14 -0700</bug_when>
    <thetext>Ping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410337</commentid>
    <comment_count>7</comment_count>
      <attachid>336278</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-03-29 11:57:15 -0700</bug_when>
    <thetext>Comment on attachment 336278
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2476
&gt; +        ASSERT(0);

Use ASSERT_NOT_REACHED();

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2578
&gt; +            }

Why don&apos;t we check m_fixedWidth?

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2612
&gt;      void test8(ResultCondition cond, Address address, TrustedImm32 mask, RegisterID dest)

Please use mask8OnTest on test8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410610</commentid>
    <comment_count>8</comment_count>
      <attachid>336856</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-03-30 08:48:30 -0700</bug_when>
    <thetext>Created attachment 336856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1410972</commentid>
    <comment_count>9</comment_count>
      <attachid>336856</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-01 12:35:04 -0700</bug_when>
    <thetext>Comment on attachment 336856
Patch

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

&gt; Source/JavaScriptCore/assembler/MacroAssemblerMIPS.h:2141
&gt; +            ASSERT(0);

Change this to ASSERT_NOT_REACHED(); too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411075</commentid>
    <comment_count>10</comment_count>
      <attachid>336982</attachid>
    <who name="Stanislav Ocovaj">stanislav.ocovaj</who>
    <bug_when>2018-04-02 07:53:47 -0700</bug_when>
    <thetext>Created attachment 336982
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411120</commentid>
    <comment_count>11</comment_count>
      <attachid>336982</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-04-02 10:23:41 -0700</bug_when>
    <thetext>Comment on attachment 336982
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411141</commentid>
    <comment_count>12</comment_count>
      <attachid>336982</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-02 10:49:22 -0700</bug_when>
    <thetext>Comment on attachment 336982
Patch

Clearing flags on attachment: 336982

Committed r230164: &lt;https://trac.webkit.org/changeset/230164&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411142</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-04-02 10:49:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1411143</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-04-02 10:50:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/39110650&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336037</attachid>
            <date>2018-03-19 04:38:37 -0700</date>
            <delta_ts>2018-03-19 04:58:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>immediate.patch</filename>
            <type>text/plain</type>
            <size>25485</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAxMmYzZDAuLjBmZDlmYjgKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMDMtMTkgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgSklU
IGNvZGUgZ2VuZXJhdGVkIGJ5IG1ldGhvZHMgd2l0aCBUcnVzdGVkSW1tMzIgb3BlcmFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbWFueSBtYWNy
byBhc3NlbWJsZXIgbWV0aG9kcyB3aXRoIFRydXN0ZWRJbW0zMiBvcGVyYW5kIGEgbW92ZSBpbW0s
IGltbVRlbXAgKHBzZXVkbylpbnN0cnVjdGlvbiBpcworICAgICAgICBmaXJzdCBnZW5lcmF0ZWQg
YW5kIGEgcmVnaXN0ZXIgb3BlcmFuZCB2YXJpYW50IG9mIHRoZSBzYW1lIG1ldGhvZCBpcyBjYWxs
ZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3QKKyAgICAgICAgb2YgdGhlIGNvZGUuIElmIHRoZSBpbW1l
ZGlhdGUgdmFsdWUgY2FuIGZpdCBpbiAxNiBiaXRzIHRoZW4gd2UgY2FuIHNraXAgdGhlIG1vdmUg
aW5zdHJ1Y3Rpb24gYW5kCisgICAgICAgIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IGNvZGUgdXNp
bmcgTUlQUyBpbnN0cnVjdGlvbnMgd2l0aCBpbW1lZGlhdGUgb3BlcmFuZC4KKworICAgICAgICAq
IGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6
OnNsdGkpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2gzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRz
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hBZGQzMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6YnJhbmNoTmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmNvbXBhcmUzMik6CisKIDIwMTgtMDMtMDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBQcm90b0NhbGxGcmFtZTo6YXJpdHlNaXNzTWF0Y2gg
dG8gaGFzQXJpdHlNaXNtYXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggN2E3NDdhOS4uMjBmODdjZQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtNDE5LDYgKzQxOSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMmIgfCAocmQgPDwgT1BfU0hfUkQpIHwg
KHJzIDw8IE9QX1NIX1JTKSB8IChydCA8PCBPUF9TSF9SVCkpOwogICAgIH0KIAorICAgIHZvaWQg
c2x0aShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJzLCBpbnQgaW1tKQorICAgIHsKKyAgICAg
ICAgZW1pdEluc3QoMHgyODAwMDAwMCB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hf
UlMpIHwgKGltbSAmIDB4ZmZmZikpOworICAgIH0KKwogICAgIHZvaWQgc2x0aXUoUmVnaXN0ZXJJ
RCBydCwgUmVnaXN0ZXJJRCBycywgaW50IGltbSkKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4
MmMwMDAwMDAgfCAocnQgPDwgT1BfU0hfUlQpIHwgKHJzIDw8IE9QX1NIX1JTKSB8IChpbW0gJiAw
eGZmZmYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyTUlQUy5oCmluZGV4IDNmMjcwZmUuLjliYjhmMzEKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0zNDUsMTQgKzM0
NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIp
OwotICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAgICAg
fQogCiAgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICBtX2Fzc2VtYmxlci5zbGwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAt
NjcyLDMyICs2NzAsMzggQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0g
LTEpIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgpIHsK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIC8qCi0gICAg
ICAgICAgICBsaSAgaW1tVGVtcCwgaW1tCi0gICAgICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1t
VGVtcAotICAgICAgICAqLwotICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCAmJiBpbW0ubV92YWx1ZSA8PSA2NTUzNSAmJiAh
bV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShkZXN0LCBkZXN0LCBp
bW0ubV92YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
ICAgICBsaSAgaW1tVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGlt
bVRlbXAKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAg
IGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEg
JiYgIW1fZml4ZWRXaWR0aCkgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9yKGRlc3QsIHNy
YywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LQotICAgICAgICAvKgotICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQotICAgICAgICAgICAg
eG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKLSAgICAgICAgKi8KLSAgICAgICAgbW92ZShpbW0sIGlt
bVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgc3JjLCBp
bW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCAmJiBpbW0ubV92
YWx1ZSA8PSA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAvKgorICAgICAgICAgICAgICAgIGxpICBpbW1UZW1wLCBpbW0KKyAgICAgICAgICAgICAgICB4
b3IgZGVzdCwgc3JjLCBpbW1UZW1wCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShp
bW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRl
c3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQg
c3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU0NCwz
NCArMTU0OCwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBy
aWdodCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUocmlnaHQ4
LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVy
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIGNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1U
ZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICBjb21wYXJlMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgcmlnaHQ4LCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAg
IHsKICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1w
UmVnaXN0ZXIpOwotICAgICAgICAvLyBCZSBjYXJlZnVsIHRoYXQgdGhlIHByZXZpb3VzIGxvYWQ4
KCkgdXNlcyBpbW1UZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBt
b3ZlKCkgYWZ0ZXIgbG9hZDgoKS4KLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAtMTYyNSw2
ICsxNjIzLDU2IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Cisg
ICAgICAgIGlmICghbV9maXhlZFdpZHRoICYmICFyaWdodC5tX3ZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICBpZiAocmlnaHQubV92YWx1ZSA+PSAtMzI3NjggJiYgcmlnaHQubV92YWx1ZSA8PSAzMjc2NyAm
JiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBpZiAoY29uZCA9PSBFcXVhbCkgeworICAg
ICAgICAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaEVxdWFsKGxlZnQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBOb3RFcXVhbCkgeworICAgICAgICAgICAgICAg
IG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaE5vdEVxdWFsKGxlZnQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoY29uZCA9PSBBYm92ZSkgeworICAgICAgICAgICAgICAgIG1vdmUocmlnaHQs
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0dShjbXBU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3RlciwgbGVmdCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBBYm92ZU9yRXF1YWwpIHsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHRpdShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQs
IHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChjbXBU
ZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGNvbmQgPT0gQmVsb3cpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
bHRpdShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQsIHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbmQgPT0gQmVsb3dPckVx
dWFsKSB7CisgICAgICAgICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHR1KGNtcFRlbXBSZWdpc3RlciwgaW1tVGVtcFJl
Z2lzdGVyLCBsZWZ0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoY21wVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChjb25kID09IEdyZWF0ZXJUaGFuKSB7CisgICAgICAgICAgICAgICAgbW92ZShyaWdo
dCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21w
VGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIsIGxlZnQpOworICAgICAgICAgICAgICAgIHJl
dHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8p
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW5PckVx
dWFsKSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aShjbXBUZW1wUmVnaXN0ZXIs
IGxlZnQsIHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVh
bChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGNvbmQgPT0gTGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zbHRpKGNtcFRlbXBSZWdpc3RlciwgbGVmdCwgcmlnaHQubV92YWx1ZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBM
ZXNzVGhhbk9yRXF1YWwpIHsKKyAgICAgICAgICAgICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIs
IGltbVRlbXBSZWdpc3RlciwgbGVmdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVx
dWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgICAgICByZXR1cm4gSnVtcCgpOworICAg
ICAgICB9CiAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAgLTE2
NDQsMjcgKzE2OTIsMTkgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAg
ICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdo
dCwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihj
b25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIC8vIEJlIGNhcmVmdWwgdGhhdCB0aGUgcHJldmlvdXMgbG9hZDMyKCkgdXNlcyBpbW1U
ZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0ZXIg
bG9hZDMyKCkuCi0gICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
ICAgICB7CiAgICAgICAgIGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMobGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIC8vIEJlIGNhcmVmdWwgdGhhdCB0aGUgcHJldmlvdXMgbG9h
ZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcygpCi0gICAgICAgIC8vIHVzZXMgaW1tVGVtcFJlZ2lz
dGVyLgotICAgICAgICAvLyBTbywgd2UgbmVlZCB0byBwdXQgbW92ZSgpIGFmdGVyIGxvYWQzMldp
dGhVbmFsaWduZWRIYWxmV29yZHMoKS4KLSAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJl
Z2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAt
MTY3Niw4ICsxNzE2LDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQog
ICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAg
ICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcs
IFJlZ2lzdGVySUQgbWFzaykKQEAgLTE3MTMsNiArMTc1MiwyMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgICAgICBpZiAobWFzay5tX3ZhbHVlID49IDAgJiYgbWFzay5tX3ZhbHVlIDw9
IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGko
Y21wVGVtcFJlZ2lzdGVyLCByZWcsIG1hc2subV92YWx1ZSk7CisgICAgICAgICAgICBzd2l0Y2gg
KGNvbmQpIHsKKyAgICAgICAgICAgIGNhc2UgWmVybzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoRXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgICAgIGNhc2UgTm9uWmVybzoKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1
YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIGNh
c2UgU2lnbmVkOgorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6
emVybyk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgbW92
ZShtYXNrLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNv
bmQsIHJlZywgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CkBAIC0xNzMxLDIzICsxNzg0LDM0IEBA
IHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJh
c2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAg
ICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBUcnVzdGVkSW1t
MzIgbWFzazg7CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4ZWRXaWR0
aCkKKyAgICAgICAgICAgIG1hc2s4ID0gVHJ1c3RlZEltbTMyKC0xKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Omxv
YWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4
KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIFRydXN0ZWRJbW0z
MiBtYXNrODsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSAmJiAhbV9maXhlZFdpZHRo
KQorICAgICAgICAgICAgbWFzazggPSBUcnVzdGVkSW1tMzIoLTEpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgbWFzayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9h
ZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFk
ZHJlc3MoZGF0YVRlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBUcnVz
dGVkSW1tMzIgbWFzazg7CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgIG1hc2s4ID0gVHJ1c3RlZEltbTMyKC0xKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIs
IG1hc2s4KTsKICAgICB9CiAKQEAgLTE5MTAsOCArMTk3NCw3IEBAIHB1YmxpYzoKIAogICAgIEp1
bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGRlc3QsIGltbSwgZGVzdCk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xOTIyLDU4ICsxOTg1LDExOSBAQCBwdWJs
aWM6CiAKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAg
ICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2NyAmJiAh
bV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09
IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgICAgIGlmIChjb25kID09IE92
ZXJmbG93KSB7CisgICAgICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihzcmMsIDExKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooZGVzdCwgOSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooc3JjLCAxMSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGRlc3QsIDkpOworICAgICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cmV0dXJuIGp1bXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGl1KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgaWYgKGNvbmQgPT0gU2ln
bmVkKSB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwo
Y21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChjb25kID09IFBvc2l0aXZlT3JaZXJvKSB7CisgICAgICAgICAgICAgICAg
Ly8gQ2hlY2sgaWYgZGVzdCBpcyBub3QgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBa
ZXJvKQorICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0
ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwor
ICAgICAgICAgICAgQVNTRVJUKDApOworICAgICAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICAg
ICAgfQogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShz
cmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lz
dGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIHNyYywgaW1tVGVt
cFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVk
KSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQg
PT0gTm9uWmVybykpOwogICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAg
ICAgLyoKLSAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0Ci0gICAgICAgICAg
ICAgICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tCi0gICAgICAgICAgICAgICAgYmx0
eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZs
b3cKLSAgICAgICAgICAgICAgICBhZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCi0gICAg
ICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAotICAgICAgICAgICAgICAgIHhvcmkg
ICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQotICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVt
cCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93Ci0gICAgICAg
ICAgICAgICAgbm9wCi0gICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwotICAgICAgICAg
ICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAg
ICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgTm9fb3Zl
cmZsb3c6Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0z
Mjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgewotICAgICAg
ICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVt
cFJlZ2lzdGVyLCAxNCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAg
ICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7Ci0gICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGlt
bS5tX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgOSk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgICAgIGxvYWQgICAgZGVzdCwgZGF0YVRlbXAKKyAgICAg
ICAgICAgICAgICAgICAgbW92ZSAgICBpbW0sIGltbVRlbXAKKyAgICAgICAgICAgICAgICAgICAg
eG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICBh
ZGR1ICAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICBz
dG9yZSAgIGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVt
cCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAg
ICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbVRlbXAKKyAgICAgICAg
ICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBi
aWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAg
ICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIE5vX292
ZXJmbG93OgorICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3Qu
bV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxNCk7Ci0gICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRh
dGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKLSAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdp
c3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6
KGNtcFRlbXBSZWdpc3RlciwgMTEpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwog
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsKICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdWludHB0cl90IGFkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoYWRkclRlbXBS
ZWdpc3RlciwgKGFkciArIDB4ODAwMCkgPj4gMTYpOworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmx3KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7
CisgICAgICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDAgJiYgaW1tLm1fdmFsdWUgIDw9
IDMyNzY3KSB7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoZGF0YVRlbXBSZWdpc3RlciwgY21w
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0
YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTEpOworICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJl
Z2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
Z2V6KGRhdGFUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2
OCAmJiBpbW0ubV92YWx1ZSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShkYXRhVGVt
cFJlZ2lzdGVyLCBjbXBUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVy
LCAxMSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRp
dShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTIp
OworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhkYXRhVGVtcFJlZ2lzdGVyLCBh
ZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1w
UmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4ganVtcCgp
OwogICAgICAgICB9Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIGFkZDMyKGlt
bVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHN0b3JlMzIoZGF0YVRl
bXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIGlmIChtX2ZpeGVkV2lkdGgpIHsKKyAg
ICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbG9hZDMy
KGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgYWRkMzIoaW1tVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRl
bXBSZWdpc3RlciwgZGVzdC5tX3B0cik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1
aW50cHRyX3QgYWRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9wdHIpOwor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVpKGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIgKyAweDgw
MDApID4+IDE2KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx3KGRhdGFUZW1wUmVnaXN0ZXIs
IGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICBhZGQzMihpbW0s
IGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coZGF0YVRlbXBS
ZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgfQogICAg
ICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKICAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3Qg
aXMgbmVnYXRpdmUuCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKQEAgLTIxOTYsOCArMjMy
MCw0MyBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5saShk
YXRhVGVtcFJlZ2lzdGVyLCAtMSk7Ci0gICAgICAgIHJldHVybiBicmFuY2hNdWwzMihjb25kLCBk
YXRhVGVtcFJlZ2lzdGVyLCBzcmNEZXN0KTsKKyAgICAgICAgQVNTRVJUKChjb25kID09IE92ZXJm
bG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAgICAgIC8q
CisgICAgICAgICAgICAgICAgYmdleiAgICBzcmNEZXN0LCBOb19vdmVyZmxvdyAgICAjIHBvc2l0
aXZlIGlucHV0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgc3VidSAgICBzcmNEZXN0
LCB6ZXJvLCBzcmNEZXN0CisgICAgICAgICAgICAgICAgYmdleiAgICBzcmNEZXN0LCBOb19vdmVy
ZmxvdyAgICAjIG5lZ2F0aXZlIGlucHV0LCBwb3NpdGl2ZSBvdXRwdXQgLT4gbm8gb3ZlcmZsb3cK
KyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93Cisg
ICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
Z2V6KHNyY0Rlc3QsIDExKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoc3JjRGVzdCwg
TUlQU1JlZ2lzdGVyczo6emVybywgc3JjRGVzdCk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
Z2V6KHNyY0Rlc3QsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAg
ICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IFNpZ25l
ZCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShzcmNEZXN0LCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvLCBzcmNEZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVnYXRp
dmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBzcmNEZXN0
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVh
bChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAg
ICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoc3Jj
RGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3JjRGVzdCk7CisgICAgICAgICAgICByZXR1cm4g
YnJhbmNoRXF1YWwoc3JjRGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAg
ICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3Vi
dShzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmNEZXN0KTsKKyAgICAgICAgICAgIHJl
dHVybiBicmFuY2hOb3RFcXVhbChzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAgfQog
CiAgICAgSnVtcCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjI4NiwxMSArMjQ0NSwxOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQs
IFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChj
b25kID09IEVxdWFsKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGxl
ZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGRlc3QsIGRlc3QsIDEp
OworICAgICAgICAgICAgaWYgKHJpZ2h0ID09IE1JUFNSZWdpc3RlcnM6Onplcm8pCisgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aXUoZGVzdCwgbGVmdCwgMSk7CisgICAgICAgICAgICBl
bHNlIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGxlZnQsIHJp
Z2h0KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHRpdShkZXN0LCBkZXN0LCAxKTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjb25kID09IE5vdEVxdWFsKSB7Ci0g
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGxlZnQsIHJpZ2h0KTsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNsdHUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgZGVzdCk7
CisgICAgICAgICAgICBpZiAocmlnaHQgPT0gTUlQU1JlZ2lzdGVyczo6emVybykKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zbHR1KGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIGxlZnQp
OworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5z
bihkZXN0LCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0dShk
ZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBkZXN0KTsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIGlmIChjb25kID09IEFib3ZlKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0dShk
ZXN0LCByaWdodCwgbGVmdCk7CiAgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmVPckVxdWFs
KSB7CkBAIC0yMzE2LDggKzI0ODMsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJlMzIo
UmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiBy
aWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShyaWdodCwgaW1tVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIGltbVRlbXBSZWdpc3Rl
ciwgZGVzdCk7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRoKQor
ICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIE1JUFNSZWdpc3RlcnM6Onplcm8sIGRl
c3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgaW1tVGVtcFJlZ2lzdGVy
LCBkZXN0KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29uZGl0
aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVySUQg
ZGVzdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336038</attachid>
            <date>2018-03-19 04:58:01 -0700</date>
            <delta_ts>2018-03-22 07:27:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>immediate.patch</filename>
            <type>text/plain</type>
            <size>25484</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDAxMmYzZDAuLjBmZDlmYjgKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTgtMDMtMTkgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgSklU
IGNvZGUgZ2VuZXJhdGVkIGJ5IG1ldGhvZHMgd2l0aCBUcnVzdGVkSW1tMzIgb3BlcmFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbWFueSBtYWNy
byBhc3NlbWJsZXIgbWV0aG9kcyB3aXRoIFRydXN0ZWRJbW0zMiBvcGVyYW5kIGEgbW92ZSBpbW0s
IGltbVRlbXAgKHBzZXVkbylpbnN0cnVjdGlvbiBpcworICAgICAgICBmaXJzdCBnZW5lcmF0ZWQg
YW5kIGEgcmVnaXN0ZXIgb3BlcmFuZCB2YXJpYW50IG9mIHRoZSBzYW1lIG1ldGhvZCBpcyBjYWxs
ZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3QKKyAgICAgICAgb2YgdGhlIGNvZGUuIElmIHRoZSBpbW1l
ZGlhdGUgdmFsdWUgY2FuIGZpdCBpbiAxNiBiaXRzIHRoZW4gd2UgY2FuIHNraXAgdGhlIG1vdmUg
aW5zdHJ1Y3Rpb24gYW5kCisgICAgICAgIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IGNvZGUgdXNp
bmcgTUlQUyBpbnN0cnVjdGlvbnMgd2l0aCBpbW1lZGlhdGUgb3BlcmFuZC4KKworICAgICAgICAq
IGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6
OnNsdGkpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2gzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRz
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmJyYW5jaFRlc3Q4KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hBZGQzMik6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6YnJhbmNoTmVnMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmNvbXBhcmUzMik6CisKIDIwMTgtMDMtMDcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBw
bGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBQcm90b0NhbGxGcmFtZTo6YXJpdHlNaXNzTWF0Y2gg
dG8gaGFzQXJpdHlNaXNtYXRjaC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NSVBTQXNzZW1ibGVyLmgKaW5kZXggN2E3NDdhOS4uMjBmODdjZQotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtNDE5LDYgKzQxOSwxMSBAQCBw
dWJsaWM6CiAgICAgICAgIGVtaXRJbnN0KDB4MDAwMDAwMmIgfCAocmQgPDwgT1BfU0hfUkQpIHwg
KHJzIDw8IE9QX1NIX1JTKSB8IChydCA8PCBPUF9TSF9SVCkpOwogICAgIH0KIAorICAgIHZvaWQg
c2x0aShSZWdpc3RlcklEIHJ0LCBSZWdpc3RlcklEIHJzLCBpbnQgaW1tKQorICAgIHsKKyAgICAg
ICAgZW1pdEluc3QoMHgyODAwMDAwMCB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hf
UlMpIHwgKGltbSAmIDB4ZmZmZikpOworICAgIH0KKwogICAgIHZvaWQgc2x0aXUoUmVnaXN0ZXJJ
RCBydCwgUmVnaXN0ZXJJRCBycywgaW50IGltbSkKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4
MmMwMDAwMDAgfCAocnQgPDwgT1BfU0hfUlQpIHwgKHJzIDw8IE9QX1NIX1JTKSB8IChpbW0gJiAw
eGZmZmYpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFj
cm9Bc3NlbWJsZXJNSVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3Jv
QXNzZW1ibGVyTUlQUy5oCmluZGV4IDNmMjcwZmUuLmMxMDU2MmEKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0zNDUsMTQgKzM0
NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIp
OwotICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIG1fYXNzZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAgICAg
fQogCiAgICAgdm9pZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICBtX2Fzc2VtYmxlci5zbGwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CiAgICAg
fQogCiAgICAgdm9pZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAt
NjcyLDMyICs2NzAsMzggQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIg
aW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0g
LTEpIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgpIHsK
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6
ZXJvKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotCi0gICAgICAgIC8qCi0gICAg
ICAgICAgICBsaSAgaW1tVGVtcCwgaW1tCi0gICAgICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1t
VGVtcAotICAgICAgICAqLwotICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihkZXN0LCBkZXN0LCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCAmJiBpbW0ubV92YWx1ZSA8PSA2NTUzNSAmJiAh
bV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShkZXN0LCBkZXN0LCBp
bW0ubV92YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
ICAgICBsaSAgaW1tVGVtcCwgaW1tCisgICAgICAgICAgICAgICAgeG9yIGRlc3QsIGRlc3QsIGlt
bVRlbXAKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgZGVzdCwgaW1tVGVt
cFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgeG9yMzIoVHJ1c3RlZElt
bTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAg
IGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEg
JiYgIW1fZml4ZWRXaWR0aCkgewogICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9yKGRlc3QsIHNy
YywgTUlQU1JlZ2lzdGVyczo6emVybyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LQotICAgICAgICAvKgotICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQotICAgICAgICAgICAg
eG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKLSAgICAgICAgKi8KLSAgICAgICAgbW92ZShpbW0sIGlt
bVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgc3JjLCBp
bW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCAmJiBpbW0ubV92
YWx1ZSA8PSA2NTUzNSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAg
ICAvKgorICAgICAgICAgICAgICAgIGxpICBpbW1UZW1wLCBpbW0KKyAgICAgICAgICAgICAgICB4
b3IgZGVzdCwgc3JjLCBpbW1UZW1wCisgICAgICAgICAgICAqLworICAgICAgICAgICAgbW92ZShp
bW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRl
c3QsIHNyYywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQg
c3FydERvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZHN0KQpAQCAtMTU0NCwz
NCArMTU0OCwyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4
ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBy
aWdodCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUocmlnaHQ4
LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVy
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9u
YWxDb25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lz
dGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAg
ICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIGNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1U
ZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICBjb21wYXJlMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgcmlnaHQ4LCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25h
bENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAg
IHsKICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1w
UmVnaXN0ZXIpOwotICAgICAgICAvLyBCZSBjYXJlZnVsIHRoYXQgdGhlIHByZXZpb3VzIGxvYWQ4
KCkgdXNlcyBpbW1UZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBt
b3ZlKCkgYWZ0ZXIgbG9hZDgoKS4KLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAtMTYyNSw2
ICsxNjIzLDU2IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7Cisg
ICAgICAgIGlmICghbV9maXhlZFdpZHRoICYmICFyaWdodC5tX3ZhbHVlKQorICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICBpZiAocmlnaHQubV92YWx1ZSA+PSAtMzI3NjggJiYgcmlnaHQubV92YWx1ZSA8PSAzMjc2NyAm
JiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBpZiAoY29uZCA9PSBFcXVhbCkgeworICAg
ICAgICAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaEVxdWFsKGxlZnQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBOb3RFcXVhbCkgeworICAgICAgICAgICAgICAg
IG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaE5vdEVxdWFsKGxlZnQsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBpZiAoY29uZCA9PSBBYm92ZSkgeworICAgICAgICAgICAgICAgIG1vdmUocmlnaHQs
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0dShjbXBU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3RlciwgbGVmdCk7CisgICAgICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBBYm92ZU9yRXF1YWwpIHsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHRpdShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQs
IHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChjbXBU
ZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKGNvbmQgPT0gQmVsb3cpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5z
bHRpdShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQsIHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbmQgPT0gQmVsb3dPckVx
dWFsKSB7CisgICAgICAgICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHR1KGNtcFRlbXBSZWdpc3RlciwgaW1tVGVtcFJl
Z2lzdGVyLCBsZWZ0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoY21wVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChjb25kID09IEdyZWF0ZXJUaGFuKSB7CisgICAgICAgICAgICAgICAgbW92ZShyaWdo
dCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21w
VGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIsIGxlZnQpOworICAgICAgICAgICAgICAgIHJl
dHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8p
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbmQgPT0gR3JlYXRlclRoYW5PckVx
dWFsKSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aShjbXBUZW1wUmVnaXN0ZXIs
IGxlZnQsIHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVh
bChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGNvbmQgPT0gTGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5zbHRpKGNtcFRlbXBSZWdpc3RlciwgbGVmdCwgcmlnaHQubV92YWx1ZSk7CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBM
ZXNzVGhhbk9yRXF1YWwpIHsKKyAgICAgICAgICAgICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIs
IGltbVRlbXBSZWdpc3RlciwgbGVmdCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVx
dWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgICAgICByZXR1cm4gSnVtcCgpOworICAg
ICAgICB9CiAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBsZWZ0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAgLTE2
NDQsMjcgKzE2OTIsMTkgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAg
ICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdo
dCwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihj
b25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIg
cmlnaHQpCiAgICAgewogICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIC8vIEJlIGNhcmVmdWwgdGhhdCB0aGUgcHJldmlvdXMgbG9hZDMyKCkgdXNlcyBpbW1U
ZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0ZXIg
bG9hZDMyKCkuCi0gICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkK
ICAgICB7CiAgICAgICAgIGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMobGVmdCwgZGF0YVRl
bXBSZWdpc3Rlcik7Ci0gICAgICAgIC8vIEJlIGNhcmVmdWwgdGhhdCB0aGUgcHJldmlvdXMgbG9h
ZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcygpCi0gICAgICAgIC8vIHVzZXMgaW1tVGVtcFJlZ2lz
dGVyLgotICAgICAgICAvLyBTbywgd2UgbmVlZCB0byBwdXQgbW92ZSgpIGFmdGVyIGxvYWQzMldp
dGhVbmFsaWduZWRIYWxmV29yZHMoKS4KLSAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJl
Z2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29u
ZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAt
MTY3Niw4ICsxNzE2LDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQog
ICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAg
ICBKdW1wIGJyYW5jaFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcs
IFJlZ2lzdGVySUQgbWFzaykKQEAgLTE3MTMsNiArMTc1MiwyMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgfQorICAgICAgICBpZiAobWFzay5tX3ZhbHVlID49IDAgJiYgbWFzay5tX3ZhbHVlIDw9
IDY1NTM1ICYmICFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFuZGko
Y21wVGVtcFJlZ2lzdGVyLCByZWcsIG1hc2subV92YWx1ZSk7CisgICAgICAgICAgICBzd2l0Y2gg
KGNvbmQpIHsKKyAgICAgICAgICAgIGNhc2UgWmVybzoKKyAgICAgICAgICAgICAgICByZXR1cm4g
YnJhbmNoRXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgICAgIGNhc2UgTm9uWmVybzoKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1
YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIGNh
c2UgU2lnbmVkOgorICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6
emVybyk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgbW92
ZShtYXNrLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNv
bmQsIHJlZywgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICB9CkBAIC0xNzMxLDIzICsxNzg0LDM0IEBA
IHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJh
c2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAg
ICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6
Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBUcnVzdGVkSW1t
MzIgbWFzazg7CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4ZWRXaWR0
aCkKKyAgICAgICAgICAgIG1hc2s4ID0gVHJ1c3RlZEltbTMyKC0xKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIG1hc2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Omxv
YWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwog
ICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4
KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlvbiBjb25kLCBB
ZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIFRydXN0ZWRJbW0z
MiBtYXNrODsKKyAgICAgICAgaWYgKG1hc2subV92YWx1ZSA9PSAtMSAmJiAhbV9maXhlZFdpZHRo
KQorICAgICAgICAgICAgbWFzazggPSBUcnVzdGVkSW1tMzIoLTEpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgbWFzayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9h
ZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAg
ICAgICAgIHJldHVybiBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigt
MSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOwotICAgICAgICBtb3Zl
KFRydXN0ZWRJbW1QdHIoYWRkcmVzcy5tX3B0ciksIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIEFk
ZHJlc3MoZGF0YVRlbXBSZWdpc3RlciksIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBUcnVz
dGVkSW1tMzIgbWFzazg7CisgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4
ZWRXaWR0aCkKKyAgICAgICAgICAgIG1hc2s4ID0gVHJ1c3RlZEltbTMyKC0xKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25D
b25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBNYWNyb0Fzc2VtYmxlckhlbHBl
cnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIs
IG1hc2s4KTsKICAgICB9CiAKQEAgLTE5MTAsOCArMTk3NCw3IEBAIHB1YmxpYzoKIAogICAgIEp1
bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJl
Z2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIp
OwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0
KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGRlc3QsIGltbSwgZGVzdCk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVz
cyBhZGRyZXNzLCBSZWdpc3RlcklEIGRlc3QpCkBAIC0xOTIyLDU4ICsxOTg1LDExOSBAQCBwdWJs
aWM6CiAKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAg
ICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2NyAmJiAh
bV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8
IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09
IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKKyAgICAgICAgICAgIGlmIChjb25kID09IE92
ZXJmbG93KSB7CisgICAgICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDApIHsKKyAgICAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihzcmMsIDExKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooZGVzdCwgOSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooc3JjLCAxMSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGRlc3QsIDkpOworICAgICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
cmV0dXJuIGp1bXAoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGl1KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgaWYgKGNvbmQgPT0gU2ln
bmVkKSB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwo
Y21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChjb25kID09IFBvc2l0aXZlT3JaZXJvKSB7CisgICAgICAgICAgICAgICAg
Ly8gQ2hlY2sgaWYgZGVzdCBpcyBub3QgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBa
ZXJvKQorICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0
ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwor
ICAgICAgICAgICAgQVNTRVJUKDApOworICAgICAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICAg
ICAgfQogICAgICAgICBtb3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShz
cmMsIGRlc3QpOwotICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lz
dGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIHNyYywgaW1tVGVt
cFJlZ2lzdGVyLCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENv
bmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAg
ICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVk
KSB8fCAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQg
PT0gTm9uWmVybykpOwogICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAg
ICAgLyoKLSAgICAgICAgICAgICAgICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0Ci0gICAgICAgICAg
ICAgICAgeG9yaSAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tCi0gICAgICAgICAgICAgICAgYmx0
eiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZs
b3cKLSAgICAgICAgICAgICAgICBhZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCi0gICAg
ICAgICAgICAgICAgbW92ZSAgICBkZXN0LCBkYXRhVGVtcAotICAgICAgICAgICAgICAgIHhvcmkg
ICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQotICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVt
cCwgTm9fb3ZlcmZsb3cgICAgIyBzYW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93Ci0gICAgICAg
ICAgICAgICAgbm9wCi0gICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdwotICAgICAgICAg
ICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAg
ICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgTm9fb3Zl
cmZsb3c6Ci0gICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0z
Mjc2OCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgewotICAgICAg
ICAgICAgICAgIGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVt
cFJlZ2lzdGVyLCAxNCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRl
bXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAg
ICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0cik7Ci0gICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGlt
bS5tX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdp
c3RlciwgOSk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0gICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgICAgIGxvYWQgICAgZGVzdCwgZGF0YVRlbXAKKyAgICAg
ICAgICAgICAgICAgICAgbW92ZSAgICBpbW0sIGltbVRlbXAKKyAgICAgICAgICAgICAgICAgICAg
eG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICBh
ZGR1ICAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICBz
dG9yZSAgIGRhdGFUZW1wLCBkZXN0CisgICAgICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVt
cCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAg
ICAgICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbVRlbXAKKyAgICAgICAg
ICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBi
aWcgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAg
ICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAg
ICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIE5vX292
ZXJmbG93OgorICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3Qu
bV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1U
ZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxNCk7Ci0gICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRh
dGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAg
ICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKLSAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdp
c3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6
KGNtcFRlbXBSZWdpc3RlciwgMTEpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwog
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsKICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICAgICAgdWludHB0cl90IGFkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90
PihkZXN0Lm1fcHRyKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoYWRkclRlbXBS
ZWdpc3RlciwgKGFkciArIDB4ODAwMCkgPj4gMTYpOworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmx3KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7
CisgICAgICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDAgJiYgaW1tLm1fdmFsdWUgIDw9
IDMyNzY3KSB7CisgICAgICAgICAgICAgICAgICAgIG1vdmUoZGF0YVRlbXBSZWdpc3RlciwgY21w
VGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0
YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTEpOworICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJl
Z2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
Z2V6KGRhdGFUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2
OCAmJiBpbW0ubV92YWx1ZSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShkYXRhVGVt
cFJlZ2lzdGVyLCBjbXBUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1
ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVy
LCAxMSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVy
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1
KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMik7
CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN3KGRhdGFUZW1wUmVnaXN0ZXIsIGFk
ZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBS
ZWdpc3RlciwgOSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7
CiAgICAgICAgIH0KLSAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IGxvYWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgYWRkMzIoaW1t
VGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgc3RvcmUzMihkYXRhVGVt
cFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAg
ICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBsb2FkMzIo
ZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBhZGQzMihpbW1UZW1w
UmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICAgICAgc3RvcmUzMihkYXRhVGVt
cFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVp
bnRwdHJfdCBhZHIgPSByZWludGVycHJldF9jYXN0PHVpbnRwdHJfdD4oZGVzdC5tX3B0cik7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoYWRkclRlbXBSZWdpc3RlciwgKGFkciArIDB4ODAw
MCkgPj4gMTYpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubHcoZGF0YVRlbXBSZWdpc3Rlciwg
YWRkclRlbXBSZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgICAgIGFkZDMyKGltbSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICB9CiAgICAg
ICAgIGlmIChjb25kID09IFNpZ25lZCkgewogICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBp
cyBuZWdhdGl2ZS4KICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIs
IGRhdGFUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwpAQCAtMjE5Niw4ICsyMzIw
LDQzIEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoTmVnMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxpKGRh
dGFUZW1wUmVnaXN0ZXIsIC0xKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaE11bDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIHNyY0Rlc3QpOworICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZs
b3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9u
WmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgLyoK
KyAgICAgICAgICAgICAgICBiZ2V6ICAgIHNyY0Rlc3QsIE5vX292ZXJmbG93ICAgICMgcG9zaXRp
dmUgaW5wdXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBzdWJ1ICAgIHNyY0Rlc3Qs
IHplcm8sIHNyY0Rlc3QKKyAgICAgICAgICAgICAgICBiZ2V6ICAgIHNyY0Rlc3QsIE5vX292ZXJm
bG93ICAgICMgbmVnYXRpdmUgaW5wdXQsIHBvc2l0aXZlIG91dHB1dCAtPiBubyBvdmVyZmxvdwor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
IE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJn
ZXooc3JjRGVzdCwgMTEpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShzcmNEZXN0LCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmNEZXN0KTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJn
ZXooc3JjRGVzdCwgOSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAg
ICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVk
KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8sIHNyY0Rlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2
ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIHNyY0Rlc3Qs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFs
KGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShzcmNE
ZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmNEZXN0KTsKKyAgICAgICAgICAgIHJldHVybiBi
cmFuY2hFcXVhbChzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAg
ICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1
KHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIHNyY0Rlc3QpOworICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAg
ICB9CisgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgcmV0dXJuIEp1bXAoKTsKICAgICB9CiAK
ICAgICBKdW1wIGJyYW5jaE9yMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCkBAIC0yMjg2LDExICsyNDQ1LDE5IEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgaWYgKGNv
bmQgPT0gRXF1YWwpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgbGVm
dCwgcmlnaHQpOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aXUoZGVzdCwgZGVzdCwgMSk7
CisgICAgICAgICAgICBpZiAocmlnaHQgPT0gTUlQU1JlZ2lzdGVyczo6emVybykKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zbHRpdShkZXN0LCBsZWZ0LCAxKTsKKyAgICAgICAgICAgIGVs
c2UgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgbGVmdCwgcmln
aHQpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGRlc3QsIGRlc3QsIDEpOwor
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNvbmQgPT0gTm90RXF1YWwpIHsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgbGVmdCwgcmlnaHQpOwotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc2x0dShkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBkZXN0KTsK
KyAgICAgICAgICAgIGlmIChyaWdodCA9PSBNSVBTUmVnaXN0ZXJzOjp6ZXJvKQorICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNsdHUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgbGVmdCk7
CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNu
KGRlc3QsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHR1KGRl
c3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIGRlc3QpOworICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKGNvbmQgPT0gQWJvdmUpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHR1KGRl
c3QsIHJpZ2h0LCBsZWZ0KTsKICAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBBYm92ZU9yRXF1YWwp
IHsKQEAgLTIzMTYsOCArMjQ4MywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbXBhcmUzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1w
UmVnaXN0ZXIpOwotICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgaW1tVGVtcFJlZ2lzdGVy
LCBkZXN0KTsKKyAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisg
ICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgTUlQU1JlZ2lzdGVyczo6emVybywgZGVz
dCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lz
dGVyKTsKKyAgICAgICAgICAgIGNvbXBhcmUzMihjb25kLCBsZWZ0LCBpbW1UZW1wUmVnaXN0ZXIs
IGRlc3QpOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRp
b24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVzdGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBk
ZXN0KQo=
</data>
<flag name="review"
          id="354584"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336278</attachid>
            <date>2018-03-22 07:27:32 -0700</date>
            <delta_ts>2018-03-30 08:48:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>immediate.patch</filename>
            <type>text/plain</type>
            <size>23895</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGFlYThhMDAuLmJkZDNiY2MKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTgtMDMtMjIgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgSklU
IGNvZGUgZ2VuZXJhdGVkIGJ5IG1ldGhvZHMgd2l0aCBUcnVzdGVkSW1tMzIgb3BlcmFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbWFueSBtYWNy
byBhc3NlbWJsZXIgbWV0aG9kcyB3aXRoIFRydXN0ZWRJbW0zMiBvcGVyYW5kIGEgbW92ZSBpbW0s
IGltbVRlbXAgKHBzZXVkbylpbnN0cnVjdGlvbiBpcworICAgICAgICBmaXJzdCBnZW5lcmF0ZWQg
YW5kIGEgcmVnaXN0ZXIgb3BlcmFuZCB2YXJpYW50IG9mIHRoZSBzYW1lIG1ldGhvZCBpcyBjYWxs
ZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3QKKyAgICAgICAgb2YgdGhlIGNvZGUuIElmIHRoZSBpbW1l
ZGlhdGUgdmFsdWUgY2FuIGZpdCBpbiAxNiBiaXRzIHRoZW4gd2UgY2FuIHNraXAgdGhlIG1vdmUg
aW5zdHJ1Y3Rpb24gYW5kCisgICAgICAgIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IGNvZGUgdXNp
bmcgTUlQUyBpbnN0cnVjdGlvbnMgd2l0aCBpbW1lZGlhdGUgb3BlcmFuZC4KKworICAgICAgICAq
IGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6
OnNsdGkpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2gzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRz
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1hc2s4T25UZXN0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmJyYW5jaE5lZzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpj
b21wYXJlMzIpOgorCiAyMDE4LTAzLTIxICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+
CiAKICAgICAgICAgU2NvcGVkQXJndW1lbnRzIHNob3VsZCBkbyBwb2lzb25pbmcgYW5kIGluZGV4
IG1hc2tpbmcKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQ
U0Fzc2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1i
bGVyLmgKaW5kZXggN2E3NDdhOS4uMjBmODdjZQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01JUFNBc3NlbWJsZXIuaApAQCAtNDE5LDYgKzQxOSwxMSBAQCBwdWJsaWM6CiAgICAg
ICAgIGVtaXRJbnN0KDB4MDAwMDAwMmIgfCAocmQgPDwgT1BfU0hfUkQpIHwgKHJzIDw8IE9QX1NI
X1JTKSB8IChydCA8PCBPUF9TSF9SVCkpOwogICAgIH0KIAorICAgIHZvaWQgc2x0aShSZWdpc3Rl
cklEIHJ0LCBSZWdpc3RlcklEIHJzLCBpbnQgaW1tKQorICAgIHsKKyAgICAgICAgZW1pdEluc3Qo
MHgyODAwMDAwMCB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hfUlMpIHwgKGltbSAm
IDB4ZmZmZikpOworICAgIH0KKwogICAgIHZvaWQgc2x0aXUoUmVnaXN0ZXJJRCBydCwgUmVnaXN0
ZXJJRCBycywgaW50IGltbSkKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MmMwMDAwMDAgfCAo
cnQgPDwgT1BfU0hfUlQpIHwgKHJzIDw8IE9QX1NIX1JTKSB8IChpbW0gJiAweGZmZmYpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJN
SVBTLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQ
Uy5oCmluZGV4IGE5Y2U0YjAuLjQ2M2NiYzIKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fz
c2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0zODMsMTQgKzM4MywxMiBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBt
X2Fzc2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1f
YXNzZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAgICAgfQogCiAgICAgdm9p
ZCBsc2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBk
ZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBt
X2Fzc2VtYmxlci5zbGwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CiAgICAgfQogCiAgICAgdm9p
ZCBtdWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtNzM0LDExICs3MzIs
MTYgQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3Rl
cklEIGRlc3QpCiAgICAgewotICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
LSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFtX2ZpeGVkV2lkdGgpIHsKKyAgICAg
ICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLm5vcihkZXN0LCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0g
MCAmJiBpbW0ubV92YWx1ZSA8PSA2NTUzNSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LnhvcmkoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQotCiAgICAgICAgIC8qCiAgICAgICAgICAgICBsaSAg
aW1tVGVtcCwgaW1tCiAgICAgICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1tVGVtcApAQCAtNzQ5
LDE0ICs3NTIsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKGlt
bS5tX3ZhbHVlID09IC0xKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVzdCwgc3Jj
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYg
KCFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewor
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBzcmMsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA+PSAwICYmIGltbS5tX3ZhbHVlIDw9IDY1NTM1KSB7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLQogICAgICAg
ICAvKgogICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQotICAgICAgICAgICAgeG9yIGRlc3Qs
IGRlc3QsIGltbVRlbXAKKyAgICAgICAgICAgIHhvciBkZXN0LCBzcmMsIGltbVRlbXAKICAgICAg
ICAgKi8KICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvckluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOwpAQCAtMTY4OSwzNCAr
MTY5NywyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0g
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdo
dCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhp
cywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUocmlnaHQ4LCBp
bW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBS
ZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQs
IGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBp
bW1UZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBS
ZWdpc3RlciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxD
b25kaXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2Vt
YmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAgICAg
ICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIGNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1w
UmVnaXN0ZXIsIGRlc3QpOworICAgICAgICBjb21wYXJlMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rl
ciwgcmlnaHQ4LCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENv
bmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsK
ICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICAvLyBCZSBjYXJlZnVsIHRoYXQgdGhlIHByZXZpb3VzIGxvYWQ4KCkg
dXNlcyBpbW1UZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3Zl
KCkgYWZ0ZXIgbG9hZDgoKS4KLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rl
ciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0
aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAtMTc3MCw2ICsx
NzcyLDI4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CisgICAg
ICAgIGlmICghbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBpZiAoIXJpZ2h0Lm1fdmFsdWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIE1JUFNSZWdpc3Rl
cnM6Onplcm8pOworICAgICAgICAgICAgaWYgKHJpZ2h0Lm1fdmFsdWUgPj0gLTMyNzY4ICYmIHJp
Z2h0Lm1fdmFsdWUgPD0gMzI3NjcpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uZCA9PSBBYm92
ZU9yRXF1YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aXUoY21wVGVt
cFJlZ2lzdGVyLCBsZWZ0LCByaWdodC5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb25kID09IEJlbG93KSB7Cisg
ICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGNtcFRlbXBSZWdpc3RlciwgbGVm
dCwgcmlnaHQubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RF
cXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9yRXF1YWwpIHsK
KyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aShjbXBUZW1wUmVnaXN0ZXIsIGxl
ZnQsIHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1
YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgaWYgKGNvbmQgPT0gTGVzc1RoYW4pIHsKKyAgICAgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQsIHJpZ2h0Lm1f
dmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVy
KTsKICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIGltbVRlbXBSZWdpc3Rlcik7
CiAgICAgfQpAQCAtMTc4OSwyNyArMTgxMywxOSBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJp
Z2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAg
ICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNo
MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0
dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAg
ICBKdW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQs
IFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgLy8gQmUgY2FyZWZ1bCB0aGF0IHRoZSBwcmV2aW91cyBsb2Fk
MzIoKSB1c2VzIGltbVRlbXBSZWdpc3Rlci4KLSAgICAgICAgLy8gU28sIHdlIG5lZWQgdG8gcHV0
IG1vdmUoKSBhZnRlciBsb2FkMzIoKS4KLSAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lz
dGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGlt
bVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJl
Z2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRI
YWxmV29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3Rl
ZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3Jk
cyhsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgLy8gQmUgY2FyZWZ1bCB0aGF0IHRo
ZSBwcmV2aW91cyBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKCkKLSAgICAgICAgLy8gdXNl
cyBpbW1UZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkg
YWZ0ZXIgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcygpLgotICAgICAgICBtb3ZlKHJpZ2h0
LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNv
bmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMy
KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQpCkBAIC0xODIxLDggKzE4MzcsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2gz
MihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVk
SW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIp
OworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBS
ZWdpc3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQpAQCAtMTg0NSwxNyArMTg2MCwzMyBAQCBw
dWJsaWM6CiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewog
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykgfHwgKGNv
bmQgPT0gU2lnbmVkKSk7Ci0gICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4
ZWRXaWR0aCkgewotICAgICAgICAgICAgc3dpdGNoIChjb25kKSB7Ci0gICAgICAgICAgICBjYXNl
IFplcm86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKHJlZywgTUlQU1JlZ2lz
dGVyczo6emVybyk7Ci0gICAgICAgICAgICBjYXNlIE5vblplcm86Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGJyYW5jaE5vdEVxdWFsKHJlZywgTUlQU1JlZ2lzdGVyczo6emVybyk7Ci0gICAgICAg
ICAgICBjYXNlIFNpZ25lZDoKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVt
cFJlZ2lzdGVyLCByZWcsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwotICAgICAgICAgICAgICAgIHJl
dHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8p
OwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBpZiAoIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAg
aWYgKG1hc2subV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoY29uZCkg
eworICAgICAgICAgICAgICAgIGNhc2UgWmVybzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaEVxdWFsKHJlZywgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAg
Y2FzZSBOb25aZXJvOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwo
cmVnLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICBjYXNlIFNpZ25lZDoK
KyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgcmVn
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
ICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAobWFzay5tX3ZhbHVlID49IDAgJiYgbWFzay5tX3ZhbHVlIDw9IDY1NTM1KSB7CisgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYW5kaShjbXBUZW1wUmVnaXN0ZXIsIHJlZywgbWFzay5t
X3ZhbHVlKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgICAgICAg
ICBjYXNlIFplcm86CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChjbXBU
ZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgICAgIGNhc2Ug
Tm9uWmVybzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRl
bXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgY2FzZSBT
aWduZWQ6CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0
ZXIsIGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3Rl
cnM6Onplcm8pOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAg
IFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAgICAgICAgIG1vdmUobWFzaywgaW1tVGVtcFJlZ2lzdGVyKTsK
QEAgLTE4NzQsMjMgKzE5MDUsMzAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoVGVz
dDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwogICAgIH0KIAorICAgIFRydXN0ZWRJ
bW0zMiBtYXNrOE9uVGVzdChSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIG1hc2sp
CisgICAgeworICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgp
CisgICAgICAgICAgICByZXR1cm4gVHJ1c3RlZEltbTMyKC0xKTsKKyAgICAgICAgcmV0dXJuIE1h
Y3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7
CisgICAgfQorCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFz
ZUluZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAg
ICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIFRydXN0ZWRJbW0z
MiBtYXNrOCA9IG1hc2s4T25UZXN0KGNvbmQsIG1hc2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVn
aXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRp
dGlvbiBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZElt
bTMyKC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1i
bGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAg
IFRydXN0ZWRJbW0zMiBtYXNrOCA9IG1hc2s4T25UZXN0KGNvbmQsIG1hc2spOwogICAgICAgICBN
YWNyb0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJl
c3MsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQs
IGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4
KFJlc3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZElt
bTMyIG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMy
IG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBtYXNrKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gbWFzazhPblRlc3QoY29u
ZCwgbWFzayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVy
biBicmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KQEAg
LTIwNTQsOCArMjA5Miw3IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7
Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJh
bmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJy
YW5jaEFkZDMyKGNvbmQsIGRlc3QsIGltbSwgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklE
IGRlc3QpCkBAIC0yMDY2LDUxICsyMTAzLDEwNCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5j
aEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMy
IGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49
IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAg
ICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwg
KGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5v
blplcm8pKTsKKyAgICAgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAg
ICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmx0eihzcmMsIDExKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
aXUoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJnZXooZGVzdCwgOSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmJnZXooc3JjLCAxMSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1
KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ibHR6KGRlc3QsIDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRlc3QsIHNyYywgaW1tLm1f
dmFsdWUpOworICAgICAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICAg
ICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb25kID09
IFBvc2l0aXZlT3JaZXJvKSB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBu
b3QgbmVnYXRpdmUuCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdp
c3RlciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQorICAgICAgICAgICAgICAg
IHJldHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAg
ICAgIGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5v
dEVxdWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgQVNTRVJUKDAp
OworICAgICAgICAgICAgcmV0dXJuIEp1bXAoKTsKKyAgICAgICAgfQogICAgICAgICBtb3ZlKGlt
bSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShzcmMsIGRlc3QpOwotICAgICAgICBy
ZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIHNyYywgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKICAg
ICB9CiAKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVk
SW1tMzIgaW1tLCBBYnNvbHV0ZUFkZHJlc3MgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgo
Y29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2lnbmVkKSB8fCAoY29uZCA9PSBQb3NpdGl2
ZU9yWmVybykgfHwgKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykpOwogICAgICAg
ICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAg
ICBtb3ZlICAgIGRhdGFUZW1wLCBkZXN0Ci0gICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1w
LCBkYXRhVGVtcCwgaW1tCi0gICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVy
ZmxvdyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKLSAgICAgICAgICAgICAgICBh
ZGRpdSAgIGRhdGFUZW1wLCBkYXRhVGVtcCwgaW1tCi0gICAgICAgICAgICAgICAgbW92ZSAgICBk
ZXN0LCBkYXRhVGVtcAotICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAs
IGltbQotICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBz
YW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93Ci0gICAgICAgICAgICAgICAgbm9wCi0gICAgICAg
ICAgICAgICAgYiAgICAgICBPdmVyZmxvdwotICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAg
ICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIG5vcAotICAg
ICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgTm9fb3ZlcmZsb3c6Ci0gICAgICAgICAgICAq
LwotICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSAg
PD0gMzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgewotICAgICAgICAgICAgICAgIGxvYWQzMihkZXN0
Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54
b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOwotICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxNCk7Ci0gICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBS
ZWdpc3RlciwgaW1tLm1fdmFsdWUpOwotICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBS
ZWdpc3RlciwgZGVzdC5tX3B0cik7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShj
bXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKLSAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7Ci0gICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgaWYgKG1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg
ICAgICAgIGxvYWQgICAgZGVzdCwgZGF0YVRlbXAKKyAgICAgICAgICAgICAgICAgICAgbW92ZSAg
ICBpbW0sIGltbVRlbXAKKyAgICAgICAgICAgICAgICAgICAgeG9yICAgICBjbXBUZW1wLCBkYXRh
VGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICBhZGR1ICAgIGRhdGFUZW1wLCBkYXRh
VGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICBzdG9yZSAgIGRhdGFUZW1wLCBkZXN0
CisgICAgICAgICAgICAgICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBk
aWZmIHNpZ24gYml0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgICAgIHhvciAgICAg
Y21wVGVtcCwgZGF0YVRlbXAsIGltbVRlbXAKKyAgICAgICAgICAgICAgICAgICAgYmdleiAgICBj
bXBUZW1wLCBOb19vdmVyZmxvdyAgICAjIHNhbWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKKyAg
ICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZs
b3cKKyAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAg
ICAgICovCiAgICAgICAgICAgICAgICAgbG9hZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0
ZXIpOwogICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJl
Z2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJs
dHooY21wVGVtcFJlZ2lzdGVyLCAxNCk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRk
aXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgc3RvcmUzMihk
YXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVy
KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTEp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsKICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5ub3AoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdWludHB0
cl90IGFkciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludHB0cl90PihkZXN0Lm1fcHRyKTsKKyAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5sdWkoYWRkclRlbXBSZWdpc3RlciwgKGFkciArIDB4ODAw
MCkgPj4gMTYpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx3KGRhdGFUZW1wUmVnaXN0
ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICAgICAgaWYg
KGltbS5tX3ZhbHVlID49IDAgJiYgaW1tLm1fdmFsdWUgIDw9IDMyNzY3KSB7CisgICAgICAgICAg
ICAgICAgICAgIG1vdmUoZGF0YVRlbXBSZWdpc3RlciwgY21wVGVtcFJlZ2lzdGVyKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTEpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zdyhkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYp
OworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGRhdGFUZW1wUmVnaXN0ZXIs
IDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKGltbS5tX3ZhbHVlID49IC0zMjc2OCAmJiBpbW0ubV92YWx1ZSA8IDAp
IHsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShkYXRhVGVtcFJlZ2lzdGVyLCBjbXBUZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJl
Z2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCAxMSk7CisgICAgICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnN3KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIs
IGFkciAmIDB4ZmZmZik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21w
VGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7
CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbW92ZShpbW0s
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcklu
c24oY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGR1KGRhdGFUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMik7CisgICAgICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN3KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAm
IDB4ZmZmZik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oY21wVGVt
cFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CiAgICAgICAgIH0KQEAgLTIzNDgs
OCArMjQzOCw0MyBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaE5lZzMyKFJlc3VsdENvbmRp
dGlvbiBjb25kLCBSZWdpc3RlcklEIHNyY0Rlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxl
ci5saShkYXRhVGVtcFJlZ2lzdGVyLCAtMSk7Ci0gICAgICAgIHJldHVybiBicmFuY2hNdWwzMihj
b25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmNEZXN0KTsKKyAgICAgICAgQVNTRVJUKChjb25kID09
IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFplcm8pIHx8IChjb25k
ID09IE5vblplcm8pKTsKKyAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsKKyAgICAgICAg
ICAgIC8qCisgICAgICAgICAgICAgICAgYmdleiAgICBzcmNEZXN0LCBOb19vdmVyZmxvdyAgICAj
IHBvc2l0aXZlIGlucHV0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgc3VidSAgICBz
cmNEZXN0LCB6ZXJvLCBzcmNEZXN0CisgICAgICAgICAgICAgICAgYmdleiAgICBzcmNEZXN0LCBO
b19vdmVyZmxvdyAgICAjIG5lZ2F0aXZlIGlucHV0LCBwb3NpdGl2ZSBvdXRwdXQgLT4gbm8gb3Zl
cmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJm
bG93CisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAg
ICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICovCisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iZ2V6KHNyY0Rlc3QsIDExKTsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoc3Jj
RGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3JjRGVzdCk7CisgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5iZ2V6KHNyY0Rlc3QsIDkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7Cisg
ICAgICAgICAgICByZXR1cm4ganVtcCgpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09
IFNpZ25lZCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3VidShzcmNEZXN0LCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvLCBzcmNEZXN0KTsKKyAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMg
bmVnYXRpdmUuCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBz
cmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIHJldHVybiBicmFuY2hO
b3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9
CisgICAgICAgIGlmIChjb25kID09IFplcm8pIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1
YnUoc3JjRGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3JjRGVzdCk7CisgICAgICAgICAgICBy
ZXR1cm4gYnJhbmNoRXF1YWwoc3JjRGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
IH0KKyAgICAgICAgaWYgKGNvbmQgPT0gTm9uWmVybykgeworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3VidShzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmNEZXN0KTsKKyAgICAgICAg
ICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBBU1NFUlQoMCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CiAg
ICAgfQogCiAgICAgSnVtcCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3Rl
cklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjQzOCwxMSArMjU2MywxOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBjb21wYXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklE
IGxlZnQsIFJlZ2lzdGVySUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IGlmIChjb25kID09IEVxdWFsKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRl
c3QsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGRlc3QsIGRl
c3QsIDEpOworICAgICAgICAgICAgaWYgKHJpZ2h0ID09IE1JUFNSZWdpc3RlcnM6Onplcm8pCisg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aXUoZGVzdCwgbGVmdCwgMSk7CisgICAgICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGxl
ZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHRpdShkZXN0LCBkZXN0
LCAxKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjb25kID09IE5vdEVxdWFs
KSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGxlZnQsIHJpZ2h0KTsK
LSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdHUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywg
ZGVzdCk7CisgICAgICAgICAgICBpZiAocmlnaHQgPT0gTUlQU1JlZ2lzdGVyczo6emVybykKKyAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHR1KGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8s
IGxlZnQpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
eG9ySW5zbihkZXN0LCBsZWZ0LCByaWdodCk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c2x0dShkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBkZXN0KTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgfSBlbHNlIGlmIChjb25kID09IEFib3ZlKQogICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c2x0dShkZXN0LCByaWdodCwgbGVmdCk7CiAgICAgICAgIGVsc2UgaWYgKGNvbmQgPT0gQWJvdmVP
ckVxdWFsKSB7CkBAIC0yNDY4LDggKzI2MDEsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21w
YXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJ
bW0zMiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShyaWdodCwg
aW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIGltbVRlbXBS
ZWdpc3RlciwgZGVzdCk7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSAmJiAhbV9maXhlZFdp
ZHRoKQorICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIE1JUFNSZWdpc3RlcnM6Onpl
cm8sIGRlc3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUocmlnaHQsIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgaW1tVGVtcFJl
Z2lzdGVyLCBkZXN0KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgdGVzdDgoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lz
dGVySUQgZGVzdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336856</attachid>
            <date>2018-03-30 08:48:30 -0700</date>
            <delta_ts>2018-04-02 07:53:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>immediate.patch</filename>
            <type>text/plain</type>
            <size>24420</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGZmYjE3ZTEuLjE0NGIzOTkKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTgtMDMtMzAgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgSklU
IGNvZGUgZ2VuZXJhdGVkIGJ5IG1ldGhvZHMgd2l0aCBUcnVzdGVkSW1tMzIgb3BlcmFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbWFueSBtYWNy
byBhc3NlbWJsZXIgbWV0aG9kcyB3aXRoIFRydXN0ZWRJbW0zMiBvcGVyYW5kIGEgbW92ZSBpbW0s
IGltbVRlbXAgKHBzZXVkbylpbnN0cnVjdGlvbiBpcworICAgICAgICBmaXJzdCBnZW5lcmF0ZWQg
YW5kIGEgcmVnaXN0ZXIgb3BlcmFuZCB2YXJpYW50IG9mIHRoZSBzYW1lIG1ldGhvZCBpcyBjYWxs
ZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3QKKyAgICAgICAgb2YgdGhlIGNvZGUuIElmIHRoZSBpbW1l
ZGlhdGUgdmFsdWUgY2FuIGZpdCBpbiAxNiBiaXRzIHRoZW4gd2UgY2FuIHNraXAgdGhlIG1vdmUg
aW5zdHJ1Y3Rpb24gYW5kCisgICAgICAgIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IGNvZGUgdXNp
bmcgTUlQUyBpbnN0cnVjdGlvbnMgd2l0aCBpbW1lZGlhdGUgb3BlcmFuZC4KKworICAgICAgICAq
IGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6
OnNsdGkpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2gzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRz
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1hc2s4T25UZXN0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmJyYW5jaE5lZzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpj
b21wYXJlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRlc3Q4KToKKwog
MjAxOC0wMy0zMCAgUm9iaW4gTW9yaXNzZXQgIDxybW9yaXNzZXRAYXBwbGUuY29tPgogCiAgICAg
ICAgIElubGluaW5nIG9mIGEgZnVuY3Rpb24gdGhhdCBlbmRzIGluIG9wX3VucmVhY2hhYmxlIGlu
IGEgbm9uLXRhaWwgcG9zaXRpb24gdHJpZ2dlcnMgYW4gQVNTRVJUCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCmluZGV4IDdhNzQ3YTkuLjIwZjg3
Y2UKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmgKQEAg
LTQxOSw2ICs0MTksMTEgQEAgcHVibGljOgogICAgICAgICBlbWl0SW5zdCgweDAwMDAwMDJiIHwg
KHJkIDw8IE9QX1NIX1JEKSB8IChycyA8PCBPUF9TSF9SUykgfCAocnQgPDwgT1BfU0hfUlQpKTsK
ICAgICB9CiAKKyAgICB2b2lkIHNsdGkoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJRCBycywgaW50
IGltbSkKKyAgICB7CisgICAgICAgIGVtaXRJbnN0KDB4MjgwMDAwMDAgfCAocnQgPDwgT1BfU0hf
UlQpIHwgKHJzIDw8IE9QX1NIX1JTKSB8IChpbW0gJiAweGZmZmYpKTsKKyAgICB9CisKICAgICB2
b2lkIHNsdGl1KFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVySUQgcnMsIGludCBpbW0pCiAgICAgewog
ICAgICAgICBlbWl0SW5zdCgweDJjMDAwMDAwIHwgKHJ0IDw8IE9QX1NIX1JUKSB8IChycyA8PCBP
UF9TSF9SUykgfCAoaW1tICYgMHhmZmZmKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAppbmRleCBhMjZlNmJiLi44NGU4ZGEw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1J
UFMuaApAQCAtMzgzLDE0ICszODMsMTIgQEAgcHVibGljOgogCiAgICAgdm9pZCBsc2hpZnQzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKGlt
bSwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIuc2xsdihkZXN0LCBkZXN0
LCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5zbGwoZGVzdCwgZGVzdCwg
aW1tLm1fdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMs
IFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1vdmUo
aW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fzc2VtYmxlci5zbGx2KGRlc3QsIHNy
YywgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc2xsKGRlc3QsIHNyYywg
aW1tLm1fdmFsdWUpOwogICAgIH0KIAogICAgIHZvaWQgbXVsMzIoUmVnaXN0ZXJJRCBzcmMsIFJl
Z2lzdGVySUQgZGVzdCkKQEAgLTczNCwxMSArNzMyLDE2IEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
eG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAg
aWYgKGltbS5tX3ZhbHVlID09IC0xKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVz
dCwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmICghbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0g
LTEpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVzdCwgZGVzdCwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQor
ICAgICAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IDAgJiYgaW1tLm1fdmFsdWUgPD0gNjU1MzUp
IHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JpKGRlc3QsIGRlc3QsIGltbS5tX3Zh
bHVlKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
LQogICAgICAgICAvKgogICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQogICAgICAgICAgICAg
eG9yIGRlc3QsIGRlc3QsIGltbVRlbXAKQEAgLTc0OSwxNCArNzUyLDE5IEBAIHB1YmxpYzoKIAog
ICAgIHZvaWQgeG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7Ci0gICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgewotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIubm9yKGRlc3QsIHNyYywgTUlQU1JlZ2lzdGVyczo6emVybyk7Ci0g
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghbV9maXhlZFdpZHRoKSB7CisgICAgICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3IoZGVzdCwgc3JjLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCAm
JiBpbW0ubV92YWx1ZSA8PSA2NTUzNSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cmkoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgfQogICAgICAgICB9Ci0KICAgICAgICAgLyoKICAgICAgICAgICAgIGxpICBpbW1U
ZW1wLCBpbW0KLSAgICAgICAgICAgIHhvciBkZXN0LCBkZXN0LCBpbW1UZW1wCisgICAgICAgICAg
ICB4b3IgZGVzdCwgc3JjLCBpbW1UZW1wCiAgICAgICAgICovCiAgICAgICAgIG1vdmUoaW1tLCBp
bW1UZW1wUmVnaXN0ZXIpOwogICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIHNyYywg
aW1tVGVtcFJlZ2lzdGVyKTsKQEAgLTE2ODksMzQgKzE2OTcsMjggQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVn
aXN0ZXIpOwotICAgICAgICBtb3ZlKHJpZ2h0OCwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7
CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdodDgp
OwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFi
c29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgewogICAgICAgICBU
cnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIG1vdmUocmlnaHQ4LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJh
bmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAg
cmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQog
CiAgICAgdm9pZCBjb21wYXJlOChSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVm
dCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBU
cnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0
aW9uKCp0aGlzLCBjb25kLCByaWdodCk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6
bG9hZDhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIG1vdmUocmlnaHQ4LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBjb21wYXJlMzIo
Y29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAg
Y29tcGFyZTMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCwgZGVzdCk7CiAgICAgfQog
CiAgICAgSnVtcCBicmFuY2g4KFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxl
ZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdo
dDggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQs
IHJpZ2h0KTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgLy8gQmUgY2Fy
ZWZ1bCB0aGF0IHRoZSBwcmV2aW91cyBsb2FkOCgpIHVzZXMgaW1tVGVtcFJlZ2lzdGVyLgotICAg
ICAgICAvLyBTbywgd2UgbmVlZCB0byBwdXQgbW92ZSgpIGFmdGVyIGxvYWQ4KCkuCi0gICAgICAg
IG1vdmUocmlnaHQ4LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Y29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAg
SnVtcCBicmFuY2hQdHIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwg
UmVnaXN0ZXJJRCByaWdodCkKQEAgLTE3NzAsNiArMTc3MiwyOCBAQCBwdWJsaWM6CiAKICAgICBK
dW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBU
cnVzdGVkSW1tMzIgcmlnaHQpCiAgICAgeworICAgICAgICBpZiAoIW1fZml4ZWRXaWR0aCkgewor
ICAgICAgICAgICAgaWYgKCFyaWdodC5tX3ZhbHVlKQorICAgICAgICAgICAgICAgIHJldHVybiBi
cmFuY2gzMihjb25kLCBsZWZ0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIGlm
IChyaWdodC5tX3ZhbHVlID49IC0zMjc2OCAmJiByaWdodC5tX3ZhbHVlIDw9IDMyNzY3KSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbmQgPT0gQWJvdmVPckVxdWFsKSB7CisgICAgICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGNtcFRlbXBSZWdpc3RlciwgbGVmdCwgcmlnaHQubV92
YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChjbXBUZW1wUmVn
aXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICBpZiAoY29uZCA9PSBCZWxvdykgeworICAgICAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbHRpdShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQsIHJpZ2h0Lm1fdmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBT
UmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYg
KGNvbmQgPT0gR3JlYXRlclRoYW5PckVxdWFsKSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnNsdGkoY21wVGVtcFJlZ2lzdGVyLCBsZWZ0LCByaWdodC5tX3ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1Jl
Z2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChj
b25kID09IExlc3NUaGFuKSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGko
Y21wVGVtcFJlZ2lzdGVyLCBsZWZ0LCByaWdodC5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6
emVybyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAg
ICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBicmFuY2gz
Mihjb25kLCBsZWZ0LCBpbW1UZW1wUmVnaXN0ZXIpOwogICAgIH0KQEAgLTE3ODksMjcgKzE4MTMs
MTkgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIGxvYWQz
MihsZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIs
IGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVt
cFJlZ2lzdGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFs
Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQpCiAgICAg
ewogICAgICAgICBsb2FkMzIobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIC8vIEJl
IGNhcmVmdWwgdGhhdCB0aGUgcHJldmlvdXMgbG9hZDMyKCkgdXNlcyBpbW1UZW1wUmVnaXN0ZXIu
Ci0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0ZXIgbG9hZDMyKCkuCi0g
ICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJldHVybiBicmFu
Y2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBy
ZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwogICAgIH0KIAog
ICAgIEp1bXAgYnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAg
ICAgIGxvYWQzMldpdGhVbmFsaWduZWRIYWxmV29yZHMobGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgIC8vIEJlIGNhcmVmdWwgdGhhdCB0aGUgcHJldmlvdXMgbG9hZDMyV2l0aFVuYWxp
Z25lZEhhbGZXb3JkcygpCi0gICAgICAgIC8vIHVzZXMgaW1tVGVtcFJlZ2lzdGVyLgotICAgICAg
ICAvLyBTbywgd2UgbmVlZCB0byBwdXQgbW92ZSgpIGFmdGVyIGxvYWQzMldpdGhVbmFsaWduZWRI
YWxmV29yZHMoKS4KLSAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKLSAgICAg
ICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rl
cik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCByaWdo
dCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQs
IEFic29sdXRlQWRkcmVzcyBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAtMTgyMSw4ICsxODM3
LDcgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25k
LCBBYnNvbHV0ZUFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAgICAg
ICAgbG9hZDMyKGxlZnQubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHJp
Z2h0LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0
YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5j
aFRlc3QzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCByZWcsIFJlZ2lzdGVySUQg
bWFzaykKQEAgLTE4NDUsMTcgKzE4NjAsMzMgQEAgcHVibGljOgogICAgIEp1bXAgYnJhbmNoVGVz
dDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHJlZywgVHJ1c3RlZEltbTMyIG1h
c2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKICAgICAgICAgQVNTRVJUKChjb25kID09IFpl
cm8pIHx8IChjb25kID09IE5vblplcm8pIHx8IChjb25kID09IFNpZ25lZCkpOwotICAgICAgICBp
ZiAobWFzay5tX3ZhbHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgpIHsKLSAgICAgICAgICAgIHN3
aXRjaCAoY29uZCkgewotICAgICAgICAgICAgY2FzZSBaZXJvOgotICAgICAgICAgICAgICAgIHJl
dHVybiBicmFuY2hFcXVhbChyZWcsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwotICAgICAgICAgICAg
Y2FzZSBOb25aZXJvOgotICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChyZWcs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOwotICAgICAgICAgICAgY2FzZSBTaWduZWQ6Ci0gICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgcmVnLCBNSVBTUmVnaXN0
ZXJzOjp6ZXJvKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVt
cFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgaWYg
KCFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEpIHsK
KyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFpl
cm86CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChyZWcsIE1JUFNSZWdp
c3RlcnM6Onplcm8pOworICAgICAgICAgICAgICAgIGNhc2UgTm9uWmVybzoKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKHJlZywgTUlQU1JlZ2lzdGVyczo6emVybyk7
CisgICAgICAgICAgICAgICAgY2FzZSBTaWduZWQ6CisgICAgICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIHJlZywgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAg
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1hc2subV92YWx1ZSA+PSAwICYm
IG1hc2subV92YWx1ZSA8PSA2NTUzNSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFu
ZGkoY21wVGVtcFJlZ2lzdGVyLCByZWcsIG1hc2subV92YWx1ZSk7CisgICAgICAgICAgICAgICAg
c3dpdGNoIChjb25kKSB7CisgICAgICAgICAgICAgICAgY2FzZSBaZXJvOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKKyAgICAgICAgICAgICAgICBjYXNlIE5vblplcm86CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgICAgIGNhc2UgU2lnbmVkOgorICAgICAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBjbXBUZW1wUmVnaXN0ZXIsIE1JUFNS
ZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1
YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBtb3ZlKG1hc2ssIGltbVRlbXBSZWdpc3Rlcik7CkBAIC0xODc0LDIzICsxOTA1LDMwIEBAIHB1
YmxpYzoKICAgICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVy
LCBtYXNrKTsKICAgICB9CiAKKyAgICBUcnVzdGVkSW1tMzIgbWFzazhPblRlc3QoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBtYXNrKQorICAgIHsKKyAgICAgICAgaWYgKG1hc2su
bV92YWx1ZSA9PSAtMSAmJiAhbV9maXhlZFdpZHRoKQorICAgICAgICAgICAgcmV0dXJuIFRydXN0
ZWRJbW0zMigtMSk7CisgICAgICAgIHJldHVybiBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4
T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgIH0KKwogICAgIEp1bXAgYnJhbmNo
VGVzdDgoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIEJhc2VJbmRleCBhZGRyZXNzLCBUcnVzdGVkSW1t
MzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBUcnVzdGVkSW1tMzIg
bWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNv
bmQsIG1hc2spOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBtYXNrOE9uVGVzdChjb25k
LCBtYXNrKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9u
KCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgcmV0dXJu
IGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7CiAgICAgfQogCiAg
ICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNz
LCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewotICAgICAgICBU
cnVzdGVkSW1tMzIgbWFzazggPSBNYWNyb0Fzc2VtYmxlckhlbHBlcnM6Om1hc2s4T25Db25kaXRp
b24oKnRoaXMsIGNvbmQsIG1hc2spOworICAgICAgICBUcnVzdGVkSW1tMzIgbWFzazggPSBtYXNr
OE9uVGVzdChjb25kLCBtYXNrKTsKICAgICAgICAgTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2Fk
OE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBhZGRyZXNzLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBtYXNrOCk7
CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWJz
b2x1dGVBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0x
KSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVs
cGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIFRydXN0
ZWRJbW0zMiBtYXNrOCA9IG1hc2s4T25UZXN0KGNvbmQsIG1hc2spOwogICAgICAgICBNYWNyb0Fz
c2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRh
dGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFU
ZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CkBAIC0yMDU4LDggKzIwOTYsNyBAQCBwdWJsaWM6
CiAKICAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1t
MzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtb3ZlKGltbSwgaW1tVGVt
cFJlZ2lzdGVyKTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGltbVRlbXBSZWdp
c3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBkZXN0LCBpbW0s
IGRlc3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjA3MCw1MSArMjEwNywx
MDQgQEAgcHVibGljOgogCiAgICAgSnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29u
ZCwgUmVnaXN0ZXJJRCBzcmMsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAg
ICB7CisgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAtMzI3NjggJiYgaW1tLm1fdmFsdWUgPD0g
MzI3NjcgJiYgIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgQVNTRVJUKChjb25kID09IE92
ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09IFBvc2l0aXZlT3JaZXJvKSB8
fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgICAgICBpZiAo
Y29uZCA9PSBPdmVyZmxvdykgeworICAgICAgICAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAw
KSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooc3JjLCAxMSk7CisgICAg
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRlc3QsIHNyYywgaW1tLm1fdmFsdWUp
OworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGRlc3QsIDkpOworICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2Ug
eworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KHNyYywgMTEpOworICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihkZXN0LCA5KTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtX2Fz
c2VtYmxlci5hZGRpdShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmIChj
b25kID09IFNpZ25lZCkgeworICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbmVn
YXRpdmUuCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3Rlciwg
ZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5j
aE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBQb3NpdGl2ZU9yWmVybykgeworICAgICAg
ICAgICAgICAgIC8vIENoZWNrIGlmIGRlc3QgaXMgbm90IG5lZ2F0aXZlLgorICAgICAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIsIGRlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChjbXBUZW1wUmVnaXN0
ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYg
KGNvbmQgPT0gWmVybykKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwoZGVzdCwg
TUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKQor
ICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJz
Ojp6ZXJvKTsKKyAgICAgICAgICAgIEFTU0VSVCgwKTsKKyAgICAgICAgICAgIHJldHVybiBKdW1w
KCk7CisgICAgICAgIH0KICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAg
ICAgIG1vdmUoc3JjLCBkZXN0KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaEFkZDMyKGNvbmQsIGlt
bVRlbXBSZWdpc3RlciwgZGVzdCk7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBz
cmMsIGltbVRlbXBSZWdpc3RlciwgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hBZGQz
MihSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIGltbSwgQWJzb2x1dGVBZGRyZXNz
IGRlc3QpCiAgICAgewogICAgICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25k
ID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8p
IHx8IChjb25kID09IE5vblplcm8pKTsKICAgICAgICAgaWYgKGNvbmQgPT0gT3ZlcmZsb3cpIHsK
LSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgbW92ZSAgICBkYXRhVGVtcCwgZGVzdAot
ICAgICAgICAgICAgICAgIHhvcmkgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbQotICAgICAgICAg
ICAgICAgIGJsdHogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBkaWZmIHNpZ24gYml0IC0+
IG5vIG92ZXJmbG93Ci0gICAgICAgICAgICAgICAgYWRkaXUgICBkYXRhVGVtcCwgZGF0YVRlbXAs
IGltbQotICAgICAgICAgICAgICAgIG1vdmUgICAgZGVzdCwgZGF0YVRlbXAKLSAgICAgICAgICAg
ICAgICB4b3JpICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KLSAgICAgICAgICAgICAgICBiZ2V6
ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpZyAtPiBubyBvdmVyZmxv
dwotICAgICAgICAgICAgICAgIG5vcAotICAgICAgICAgICAgICAgIGIgICAgICAgT3ZlcmZsb3cK
LSAgICAgICAgICAgICAgICBub3AKLSAgICAgICAgICAgICAgICBub3AKLSAgICAgICAgICAgICAg
ICBub3AKLSAgICAgICAgICAgICAgICBub3AKLSAgICAgICAgICAgICAgICBub3AKLSAgICAgICAg
ICAgIE5vX292ZXJmbG93OgotICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmIChpbW0ubV92
YWx1ZSA+PSAtMzI3NjggJiYgaW1tLm1fdmFsdWUgIDw9IDMyNzY3ICYmICFtX2ZpeGVkV2lkdGgp
IHsKLSAgICAgICAgICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRlbXBSZWdpc3Rlcik7
Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
bHR6KGNtcFRlbXBSZWdpc3RlciwgMTQpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFk
ZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKLSAg
ICAgICAgICAgICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOwotICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJl
Z2lzdGVyLCBpbW0ubV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihj
bXBUZW1wUmVnaXN0ZXIsIDkpOwotICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwot
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtX2ZpeGVkV2lkdGgpIHsKKyAg
ICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICBsb2FkICAgIGRlc3QsIGRhdGFU
ZW1wCisgICAgICAgICAgICAgICAgICAgIG1vdmUgICAgaW1tLCBpbW1UZW1wCisgICAgICAgICAg
ICAgICAgICAgIHhvciAgICAgY21wVGVtcCwgZGF0YVRlbXAsIGltbVRlbXAKKyAgICAgICAgICAg
ICAgICAgICAgYWRkdSAgICBkYXRhVGVtcCwgZGF0YVRlbXAsIGltbVRlbXAKKyAgICAgICAgICAg
ICAgICAgICAgc3RvcmUgICBkYXRhVGVtcCwgZGVzdAorICAgICAgICAgICAgICAgICAgICBibHR6
ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxv
dworICAgICAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRlbXAsIGRhdGFUZW1wLCBpbW1UZW1w
CisgICAgICAgICAgICAgICAgICAgIGJnZXogICAgY21wVGVtcCwgTm9fb3ZlcmZsb3cgICAgIyBz
YW1lIHNpZ24gYmlnIC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgICAgIG5vcAorICAg
ICAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93CisgICAgICAgICAgICAgICAgICAgIG5v
cAorICAgICAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICAgICAgbm9wCisgICAg
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAg
ICAgICBOb19vdmVyZmxvdzoKKyAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIGxv
YWQzMihkZXN0Lm1fcHRyLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtb3Zl
KGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsK
LSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgMTQpOwot
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFU
ZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYWRkdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0
ZXIpOwogICAgICAgICAgICAgICAgIHN0b3JlMzIoZGF0YVRlbXBSZWdpc3RlciwgZGVzdC5tX3B0
cik7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShjbXBUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDExKTsKKyAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJl
Z2lzdGVyKTsKICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRlbXBSZWdpc3Rl
ciwgOSk7CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICB9
IGVsc2UgeworICAgICAgICAgICAgICAgIHVpbnRwdHJfdCBhZHIgPSByZWludGVycHJldF9jYXN0
PHVpbnRwdHJfdD4oZGVzdC5tX3B0cik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubHVp
KGFkZHJUZW1wUmVnaXN0ZXIsIChhZHIgKyAweDgwMDApID4+IDE2KTsKKyAgICAgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5sdyhkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIg
JiAweGZmZmYpOworICAgICAgICAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA+PSAwICYmIGltbS5t
X3ZhbHVlICA8PSAzMjc2NykgeworICAgICAgICAgICAgICAgICAgICBtb3ZlKGRhdGFUZW1wUmVn
aXN0ZXIsIGNtcFRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmFkZGl1KGRhdGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsK
KyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEx
KTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coZGF0YVRlbXBSZWdpc3Rlciwg
YWRkclRlbXBSZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYmdleihkYXRhVGVtcFJlZ2lzdGVyLCA5KTsKKyAgICAgICAgICAgICAgICAgICAg
bV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbW0ubV92YWx1
ZSA+PSAtMzI3NjggJiYgaW1tLm1fdmFsdWUgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1v
dmUoZGF0YVRlbXBSZWdpc3RlciwgY21wVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkaXUoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
aW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5iZ2V6KGNtcFRl
bXBSZWdpc3RlciwgMTEpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhkYXRh
VGVtcFJlZ2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICAg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdpc3RlciwgOSk7CisgICAgICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRl
bXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYWRkdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ibHR6KGNtcFRlbXBSZWdp
c3RlciwgMTIpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdyhkYXRhVGVtcFJl
Z2lzdGVyLCBhZGRyVGVtcFJlZ2lzdGVyLCBhZHIgJiAweGZmZmYpOworICAgICAgICAgICAgICAg
ICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdl
eihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1
cm4ganVtcCgpOwogICAgICAgICB9CkBAIC0yMzUyLDggKzI0NDIsNDMgQEAgcHVibGljOgogCiAg
ICAgSnVtcCBicmFuY2hOZWczMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmNE
ZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIubGkoZGF0YVRlbXBSZWdpc3RlciwgLTEp
OwotICAgICAgICByZXR1cm4gYnJhbmNoTXVsMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwgc3Jj
RGVzdCk7CisgICAgICAgIEFTU0VSVCgoY29uZCA9PSBPdmVyZmxvdykgfHwgKGNvbmQgPT0gU2ln
bmVkKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7CisgICAgICAgIGlm
IChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgIGJn
ZXogICAgc3JjRGVzdCwgTm9fb3ZlcmZsb3cgICAgIyBwb3NpdGl2ZSBpbnB1dCAtPiBubyBvdmVy
ZmxvdworICAgICAgICAgICAgICAgIHN1YnUgICAgc3JjRGVzdCwgemVybywgc3JjRGVzdAorICAg
ICAgICAgICAgICAgIGJnZXogICAgc3JjRGVzdCwgTm9fb3ZlcmZsb3cgICAgIyBuZWdhdGl2ZSBp
bnB1dCwgcG9zaXRpdmUgb3V0cHV0IC0+IG5vIG92ZXJmbG93CisgICAgICAgICAgICAgICAgbm9w
CisgICAgICAgICAgICAgICAgYiAgICAgICBPdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAor
ICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAg
IG5vcAorICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAg
ICAgICAgICAqLworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihzcmNEZXN0LCAxMSk7Cisg
ICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8s
IHNyY0Rlc3QpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihzcmNEZXN0LCA5KTsKKyAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBTaWduZWQpIHsKKyAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnN1YnUoc3JjRGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgc3JjRGVzdCk7Cisg
ICAgICAgICAgICAvLyBDaGVjayBpZiBkZXN0IGlzIG5lZ2F0aXZlLgorICAgICAgICAgICAgbV9h
c3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3Rlciwgc3JjRGVzdCwgTUlQU1JlZ2lzdGVyczo6emVy
byk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBaZXJv
KSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8sIHNyY0Rlc3QpOworICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKHNyY0Rlc3Qs
IE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICB9CisgICAgICAgIGlmIChjb25kID09IE5v
blplcm8pIHsKKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnN1YnUoc3JjRGVzdCwgTUlQU1JlZ2lz
dGVyczo6emVybywgc3JjRGVzdCk7CisgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwo
c3JjRGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgIH0KKyAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiBKdW1wKCk7CiAgICAgfQogCiAgICAgSnVt
cCBicmFuY2hPcjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgUmVnaXN0
ZXJJRCBkZXN0KQpAQCAtMjQ0NiwxMSArMjU3MSwxOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb21w
YXJlMzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFJlZ2lzdGVy
SUQgcmlnaHQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIGlmIChjb25kID09IEVx
dWFsKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGxlZnQsIHJpZ2h0
KTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGRlc3QsIGRlc3QsIDEpOworICAgICAg
ICAgICAgaWYgKHJpZ2h0ID09IE1JUFNSZWdpc3RlcnM6Onplcm8gJiYgIW1fZml4ZWRXaWR0aCkK
KyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHRpdShkZXN0LCBsZWZ0LCAxKTsKKyAgICAg
ICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwg
bGVmdCwgcmlnaHQpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGRlc3QsIGRl
c3QsIDEpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGNvbmQgPT0gTm90RXF1
YWwpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgbGVmdCwgcmlnaHQp
OwotICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0dShkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJv
LCBkZXN0KTsKKyAgICAgICAgICAgIGlmIChyaWdodCA9PSBNSVBTUmVnaXN0ZXJzOjp6ZXJvICYm
ICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0dShkZXN0LCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvLCBsZWZ0KTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnhvckluc24oZGVzdCwgbGVmdCwgcmlnaHQpOworICAgICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNsdHUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgZGVzdCk7
CisgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoY29uZCA9PSBBYm92ZSkKICAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnNsdHUoZGVzdCwgcmlnaHQsIGxlZnQpOwogICAgICAgICBlbHNl
IGlmIChjb25kID09IEFib3ZlT3JFcXVhbCkgewpAQCAtMjQ3NiwxNCArMjYwOSwxOCBAQCBwdWJs
aWM6CiAKICAgICB2b2lkIGNvbXBhcmUzMihSZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIFJlZ2lz
dGVySUQgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewot
ICAgICAgICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBjb21wYXJlMzIo
Y29uZCwgbGVmdCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgaWYgKCFyaWdodC5t
X3ZhbHVlICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVm
dCwgTUlQU1JlZ2lzdGVyczo6emVybywgZGVzdCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGNvbXBhcmUzMihj
b25kLCBsZWZ0LCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOworICAgICAgICB9CiAgICAgfQogCiAg
ICAgdm9pZCB0ZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBUcnVz
dGVkSW1tMzIgbWFzaywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgQVNTRVJUKChj
b25kID09IFplcm8pIHx8IChjb25kID09IE5vblplcm8pKTsKLSAgICAgICAgVHJ1c3RlZEltbTMy
IG1hc2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBj
b25kLCBtYXNrKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gbWFzazhPblRlc3QoY29u
ZCwgbWFzayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlv
bigqdGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGlmICgo
bWFzazgubV92YWx1ZSAmIDB4ZmYpID09IDB4ZmYgJiYgIW1fZml4ZWRXaWR0aCkgewogICAgICAg
ICAgICAgaWYgKGNvbmQgPT0gWmVybykK
</data>
<flag name="review"
          id="355341"
          type_id="1"
          status="+"
          setter="ysuzuki"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>336982</attachid>
            <date>2018-04-02 07:53:47 -0700</date>
            <delta_ts>2018-04-02 10:49:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>immediate.patch</filename>
            <type>text/plain</type>
            <size>24397</size>
            <attacher name="Stanislav Ocovaj">stanislav.ocovaj</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDkyYTM2NzEuLmEwMmQxZWYKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTgtMDQtMDIgIFN0YW5pc2xhdiBPY292YWogIDxz
dGFuaXNsYXYub2NvdmFqQHJ0LXJrLmNvbT4KKworICAgICAgICBbTUlQU10gT3B0aW1pemUgSklU
IGNvZGUgZ2VuZXJhdGVkIGJ5IG1ldGhvZHMgd2l0aCBUcnVzdGVkSW1tMzIgb3BlcmFuZAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgzNzQwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gbWFueSBtYWNy
byBhc3NlbWJsZXIgbWV0aG9kcyB3aXRoIFRydXN0ZWRJbW0zMiBvcGVyYW5kIGEgbW92ZSBpbW0s
IGltbVRlbXAgKHBzZXVkbylpbnN0cnVjdGlvbiBpcworICAgICAgICBmaXJzdCBnZW5lcmF0ZWQg
YW5kIGEgcmVnaXN0ZXIgb3BlcmFuZCB2YXJpYW50IG9mIHRoZSBzYW1lIG1ldGhvZCBpcyBjYWxs
ZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3QKKyAgICAgICAgb2YgdGhlIGNvZGUuIElmIHRoZSBpbW1l
ZGlhdGUgdmFsdWUgY2FuIGZpdCBpbiAxNiBiaXRzIHRoZW4gd2UgY2FuIHNraXAgdGhlIG1vdmUg
aW5zdHJ1Y3Rpb24gYW5kCisgICAgICAgIGdlbmVyYXRlIG1vcmUgZWZmaWNpZW50IGNvZGUgdXNp
bmcgTUlQUyBpbnN0cnVjdGlvbnMgd2l0aCBpbW1lZGlhdGUgb3BlcmFuZC4KKworICAgICAgICAq
IGFzc2VtYmxlci9NSVBTQXNzZW1ibGVyLmg6CisgICAgICAgIChKU0M6Ok1JUFNBc3NlbWJsZXI6
OnNsdGkpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaDoKKyAgICAg
ICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpsc2hpZnQzMik6CisgICAgICAgIChKU0M6Ok1h
Y3JvQXNzZW1ibGVyTUlQUzo6eG9yMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1J
UFM6OmJyYW5jaDgpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OmNvbXBhcmU4
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2gzMik6CisgICAgICAg
IChKU0M6Ok1hY3JvQXNzZW1ibGVyTUlQUzo6YnJhbmNoMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRz
KToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0MzIpOgorICAg
ICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6Om1hc2s4T25UZXN0KToKKyAgICAgICAgKEpT
Qzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpicmFuY2hUZXN0OCk6CisgICAgICAgIChKU0M6Ok1hY3Jv
QXNzZW1ibGVyTUlQUzo6YnJhbmNoQWRkMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxl
ck1JUFM6OmJyYW5jaE5lZzMyKToKKyAgICAgICAgKEpTQzo6TWFjcm9Bc3NlbWJsZXJNSVBTOjpj
b21wYXJlMzIpOgorICAgICAgICAoSlNDOjpNYWNyb0Fzc2VtYmxlck1JUFM6OnRlc3Q4KToKKwog
MjAxOC0wNC0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBbREZHXSBNb3JlIGFnZ3Jlc3NpdmUgcmVtb3ZhbCBvZiBkdXBsaWNhdGUgMzJiaXQgREZH
IGNvZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fz
c2VtYmxlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVy
LmgKaW5kZXggN2E3NDdhOS4uMjBmODdjZQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01JUFNBc3NlbWJsZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL01JUFNBc3NlbWJsZXIuaApAQCAtNDE5LDYgKzQxOSwxMSBAQCBwdWJsaWM6CiAgICAgICAg
IGVtaXRJbnN0KDB4MDAwMDAwMmIgfCAocmQgPDwgT1BfU0hfUkQpIHwgKHJzIDw8IE9QX1NIX1JT
KSB8IChydCA8PCBPUF9TSF9SVCkpOwogICAgIH0KIAorICAgIHZvaWQgc2x0aShSZWdpc3RlcklE
IHJ0LCBSZWdpc3RlcklEIHJzLCBpbnQgaW1tKQorICAgIHsKKyAgICAgICAgZW1pdEluc3QoMHgy
ODAwMDAwMCB8IChydCA8PCBPUF9TSF9SVCkgfCAocnMgPDwgT1BfU0hfUlMpIHwgKGltbSAmIDB4
ZmZmZikpOworICAgIH0KKwogICAgIHZvaWQgc2x0aXUoUmVnaXN0ZXJJRCBydCwgUmVnaXN0ZXJJ
RCBycywgaW50IGltbSkKICAgICB7CiAgICAgICAgIGVtaXRJbnN0KDB4MmMwMDAwMDAgfCAocnQg
PDwgT1BfU0hfUlQpIHwgKHJzIDw8IE9QX1NIX1JTKSB8IChpbW0gJiAweGZmZmYpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJNSVBT
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5o
CmluZGV4IGEyNmU2YmIuLjhlNjY3NzcKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2Vt
Ymxlci9NYWNyb0Fzc2VtYmxlck1JUFMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL01hY3JvQXNzZW1ibGVyTUlQUy5oCkBAIC0zODMsMTQgKzM4MywxMiBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGxzaGlmdDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkK
ICAgICB7Ci0gICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtX2Fz
c2VtYmxlci5zbGx2KGRlc3QsIGRlc3QsIGltbVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNz
ZW1ibGVyLnNsbChkZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBs
c2hpZnQzMihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0
KQogICAgIHsKLSAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLnNsbHYoZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fz
c2VtYmxlci5zbGwoZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CiAgICAgfQogCiAgICAgdm9pZCBt
dWwzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtNzM0LDExICs3MzIsMTYg
QEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewotICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPT0gLTEpIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKLSAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFtX2ZpeGVkV2lkdGgpIHsKKyAgICAgICAg
ICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm5vcihkZXN0LCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCAm
JiBpbW0ubV92YWx1ZSA8PSA2NTUzNSkgeworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnhv
cmkoZGVzdCwgZGVzdCwgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQotCiAgICAgICAgIC8qCiAgICAgICAgICAgICBsaSAgaW1t
VGVtcCwgaW1tCiAgICAgICAgICAgICB4b3IgZGVzdCwgZGVzdCwgaW1tVGVtcApAQCAtNzQ5LDE0
ICs3NTIsMTkgQEAgcHVibGljOgogCiAgICAgdm9pZCB4b3IzMihUcnVzdGVkSW1tMzIgaW1tLCBS
ZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgaWYgKGltbS5t
X3ZhbHVlID09IC0xKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3IoZGVzdCwgc3JjLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCFt
X2ZpeGVkV2lkdGgpIHsKKyAgICAgICAgICAgIGlmIChpbW0ubV92YWx1ZSA9PSAtMSkgeworICAg
ICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcihkZXN0LCBzcmMsIE1JUFNSZWdpc3RlcnM6Onpl
cm8pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGlmIChpbW0ubV92YWx1ZSA+PSAwICYmIGltbS5tX3ZhbHVlIDw9IDY1NTM1KSB7CisgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIueG9yaShkZXN0LCBzcmMsIGltbS5tX3ZhbHVlKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLQogICAgICAgICAv
KgogICAgICAgICAgICAgbGkgIGltbVRlbXAsIGltbQotICAgICAgICAgICAgeG9yIGRlc3QsIGRl
c3QsIGltbVRlbXAKKyAgICAgICAgICAgIHhvciBkZXN0LCBzcmMsIGltbVRlbXAKICAgICAgICAg
Ki8KICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1i
bGVyLnhvckluc24oZGVzdCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIpOwpAQCAtMTY4OSwzNCArMTY5
NywyOCBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICBUcnVzdGVkSW1tMzIgcmlnaHQ4ID0gTWFj
cm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCByaWdodCk7
CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigqdGhpcywg
Y29uZCwgbGVmdCwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIG1vdmUocmlnaHQ4LCBpbW1U
ZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIHJpZ2h0OCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2g4KFJlbGF0
aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFRydXN0ZWRJbW0zMiBy
aWdodCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1U
ZW1wUmVnaXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdp
c3RlciwgcmlnaHQ4KTsKICAgICB9CiAKICAgICB2b2lkIGNvbXBhcmU4KFJlbGF0aW9uYWxDb25k
aXRpb24gY29uZCwgQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1tMzIgcmlnaHQsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIFRydXN0ZWRJbW0zMiByaWdodDggPSBNYWNyb0Fzc2VtYmxl
ckhlbHBlcnM6Om1hc2s4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIHJpZ2h0KTsKICAgICAgICAg
TWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjpsb2FkOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25kLCBsZWZ0
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rl
cik7Ci0gICAgICAgIGNvbXBhcmUzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVn
aXN0ZXIsIGRlc3QpOworICAgICAgICBjb21wYXJlMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwg
cmlnaHQ4LCBkZXN0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDgoUmVsYXRpb25hbENvbmRp
dGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0KQogICAgIHsKICAg
ICAgICAgVHJ1c3RlZEltbTMyIHJpZ2h0OCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFzazhP
bkNvbmRpdGlvbigqdGhpcywgY29uZCwgcmlnaHQpOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGxlZnQsIGRhdGFUZW1wUmVnaXN0
ZXIpOwotICAgICAgICAvLyBCZSBjYXJlZnVsIHRoYXQgdGhlIHByZXZpb3VzIGxvYWQ4KCkgdXNl
cyBpbW1UZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkg
YWZ0ZXIgbG9hZDgoKS4KLSAgICAgICAgbW92ZShyaWdodDgsIGltbVRlbXBSZWdpc3Rlcik7Ci0g
ICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3Rlciwg
cmlnaHQ4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFB0cihSZWxhdGlvbmFsQ29uZGl0aW9u
IGNvbmQsIEJhc2VJbmRleCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0KQpAQCAtMTc3MCw2ICsxNzcy
LDI4IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoMzIoUmVsYXRpb25hbENvbmRpdGlvbiBj
b25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0zMiByaWdodCkKICAgICB7CisgICAgICAg
IGlmICghbV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICBpZiAoIXJpZ2h0Lm1fdmFsdWUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgaWYgKHJpZ2h0Lm1fdmFsdWUgPj0gLTMyNzY4ICYmIHJpZ2h0
Lm1fdmFsdWUgPD0gMzI3NjcpIHsKKyAgICAgICAgICAgICAgICBpZiAoY29uZCA9PSBBYm92ZU9y
RXF1YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aXUoY21wVGVtcFJl
Z2lzdGVyLCBsZWZ0LCByaWdodC5tX3ZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb25kID09IEJlbG93KSB7CisgICAg
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdGl1KGNtcFRlbXBSZWdpc3RlciwgbGVmdCwg
cmlnaHQubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hOb3RFcXVh
bChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAoY29uZCA9PSBHcmVhdGVyVGhhbk9yRXF1YWwpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0aShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQs
IHJpZ2h0Lm1fdmFsdWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoRXF1YWwo
Y21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgaWYgKGNvbmQgPT0gTGVzc1RoYW4pIHsKKyAgICAgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc2x0aShjbXBUZW1wUmVnaXN0ZXIsIGxlZnQsIHJpZ2h0Lm1fdmFs
dWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJl
Z2lzdGVyLCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVyKTsK
ICAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGxlZnQsIGltbVRlbXBSZWdpc3Rlcik7CiAg
ICAgfQpAQCAtMTc4OSwyNyArMTgxMywxOSBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFkZHJlc3MgbGVmdCwgVHJ1c3RlZEltbTMyIHJpZ2h0
KQogICAgIHsKICAgICAgICAgbG9hZDMyKGxlZnQsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAg
ICBtb3ZlKHJpZ2h0LCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIo
Y29uZCwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJu
IGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAgICBK
dW1wIGJyYW5jaDMyKFJlbGF0aW9uYWxDb25kaXRpb24gY29uZCwgQmFzZUluZGV4IGxlZnQsIFRy
dXN0ZWRJbW0zMiByaWdodCkKICAgICB7CiAgICAgICAgIGxvYWQzMihsZWZ0LCBkYXRhVGVtcFJl
Z2lzdGVyKTsKLSAgICAgICAgLy8gQmUgY2FyZWZ1bCB0aGF0IHRoZSBwcmV2aW91cyBsb2FkMzIo
KSB1c2VzIGltbVRlbXBSZWdpc3Rlci4KLSAgICAgICAgLy8gU28sIHdlIG5lZWQgdG8gcHV0IG1v
dmUoKSBhZnRlciBsb2FkMzIoKS4KLSAgICAgICAgbW92ZShyaWdodCwgaW1tVGVtcFJlZ2lzdGVy
KTsKLSAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIHJldHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lz
dGVyLCByaWdodCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2gzMldpdGhVbmFsaWduZWRIYWxm
V29yZHMoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBCYXNlSW5kZXggbGVmdCwgVHJ1c3RlZElt
bTMyIHJpZ2h0KQogICAgIHsKICAgICAgICAgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3Jkcyhs
ZWZ0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgLy8gQmUgY2FyZWZ1bCB0aGF0IHRoZSBw
cmV2aW91cyBsb2FkMzJXaXRoVW5hbGlnbmVkSGFsZldvcmRzKCkKLSAgICAgICAgLy8gdXNlcyBp
bW1UZW1wUmVnaXN0ZXIuCi0gICAgICAgIC8vIFNvLCB3ZSBuZWVkIHRvIHB1dCBtb3ZlKCkgYWZ0
ZXIgbG9hZDMyV2l0aFVuYWxpZ25lZEhhbGZXb3JkcygpLgotICAgICAgICBtb3ZlKHJpZ2h0LCBp
bW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBS
ZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgcmV0dXJuIGJyYW5jaDMyKGNvbmQs
IGRhdGFUZW1wUmVnaXN0ZXIsIHJpZ2h0KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaDMyKFJl
bGF0aW9uYWxDb25kaXRpb24gY29uZCwgQWJzb2x1dGVBZGRyZXNzIGxlZnQsIFJlZ2lzdGVySUQg
cmlnaHQpCkBAIC0xODIxLDggKzE4MzcsNyBAQCBwdWJsaWM6CiAgICAgSnVtcCBicmFuY2gzMihS
ZWxhdGlvbmFsQ29uZGl0aW9uIGNvbmQsIEFic29sdXRlQWRkcmVzcyBsZWZ0LCBUcnVzdGVkSW1t
MzIgcmlnaHQpCiAgICAgewogICAgICAgICBsb2FkMzIobGVmdC5tX3B0ciwgZGF0YVRlbXBSZWdp
c3Rlcik7Ci0gICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgIHJl
dHVybiBicmFuY2gzMihjb25kLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVnaXN0ZXIpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoMzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgcmlnaHQpOwog
ICAgIH0KIAogICAgIEp1bXAgYnJhbmNoVGVzdDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHJlZywgUmVnaXN0ZXJJRCBtYXNrKQpAQCAtMTg0NSwxNyArMTg2MCwzMyBAQCBwdWJs
aWM6CiAgICAgSnVtcCBicmFuY2hUZXN0MzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVy
SUQgcmVnLCBUcnVzdGVkSW1tMzIgbWFzayA9IFRydXN0ZWRJbW0zMigtMSkpCiAgICAgewogICAg
ICAgICBBU1NFUlQoKGNvbmQgPT0gWmVybykgfHwgKGNvbmQgPT0gTm9uWmVybykgfHwgKGNvbmQg
PT0gU2lnbmVkKSk7Ci0gICAgICAgIGlmIChtYXNrLm1fdmFsdWUgPT0gLTEgJiYgIW1fZml4ZWRX
aWR0aCkgewotICAgICAgICAgICAgc3dpdGNoIChjb25kKSB7Ci0gICAgICAgICAgICBjYXNlIFpl
cm86Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaEVxdWFsKHJlZywgTUlQU1JlZ2lzdGVy
czo6emVybyk7Ci0gICAgICAgICAgICBjYXNlIE5vblplcm86Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIGJyYW5jaE5vdEVxdWFsKHJlZywgTUlQU1JlZ2lzdGVyczo6emVybyk7Ci0gICAgICAgICAg
ICBjYXNlIFNpZ25lZDoKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHQoY21wVGVtcFJl
Z2lzdGVyLCByZWcsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwotICAgICAgICAgICAgICAgIHJldHVy
biBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOwot
ICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOworICAgICAgICBpZiAoIW1fZml4ZWRXaWR0aCkgeworICAgICAgICAgICAgaWYg
KG1hc2subV92YWx1ZSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAoY29uZCkgewor
ICAgICAgICAgICAgICAgIGNhc2UgWmVybzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaEVxdWFsKHJlZywgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgY2Fz
ZSBOb25aZXJvOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwocmVn
LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICBjYXNlIFNpZ25lZDoKKyAg
ICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3RlciwgcmVnLCBN
SVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5v
dEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBp
ZiAobWFzay5tX3ZhbHVlID49IDAgJiYgbWFzay5tX3ZhbHVlIDw9IDY1NTM1KSB7CisgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuYW5kaShjbXBUZW1wUmVnaXN0ZXIsIHJlZywgbWFzay5tX3Zh
bHVlKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbmQpIHsKKyAgICAgICAgICAgICAgICBj
YXNlIFplcm86CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBicmFuY2hFcXVhbChjbXBUZW1w
UmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgICAgIGNhc2UgTm9u
WmVybzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBS
ZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgY2FzZSBTaWdu
ZWQ6CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVnaXN0ZXIs
IGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBicmFuY2hOb3RFcXVhbChjbXBUZW1wUmVnaXN0ZXIsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgICAgIG1vdmUobWFzaywgaW1tVGVtcFJlZ2lzdGVyKTsKQEAg
LTE4NzQsMjMgKzE5MDUsMzAgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMy
KGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIG1hc2spOwogICAgIH0KIAorICAgIFRydXN0ZWRJbW0z
MiBtYXNrOE9uVGVzdChSZXN1bHRDb25kaXRpb24gY29uZCwgVHJ1c3RlZEltbTMyIG1hc2spCisg
ICAgeworICAgICAgICBpZiAobWFzay5tX3ZhbHVlID09IC0xICYmICFtX2ZpeGVkV2lkdGgpCisg
ICAgICAgICAgICByZXR1cm4gVHJ1c3RlZEltbTMyKC0xKTsKKyAgICAgICAgcmV0dXJuIE1hY3Jv
QXNzZW1ibGVySGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7Cisg
ICAgfQorCiAgICAgSnVtcCBicmFuY2hUZXN0OChSZXN1bHRDb25kaXRpb24gY29uZCwgQmFzZUlu
ZGV4IGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMyKC0xKSkKICAgICB7
Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVySGVscGVyczo6bWFz
azhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIFRydXN0ZWRJbW0zMiBt
YXNrOCA9IG1hc2s4T25UZXN0KGNvbmQsIG1hc2spOwogICAgICAgICBNYWNyb0Fzc2VtYmxlckhl
bHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3MsIGRhdGFUZW1wUmVn
aXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0
ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJlc3VsdENvbmRpdGlv
biBjb25kLCBBZGRyZXNzIGFkZHJlc3MsIFRydXN0ZWRJbW0zMiBtYXNrID0gVHJ1c3RlZEltbTMy
KC0xKSkKICAgICB7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrOCA9IG1hc2s4T25UZXN0KGNvbmQsIG1hc2spOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3Ms
IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICByZXR1cm4gYnJhbmNoVGVzdDMyKGNvbmQsIGRh
dGFUZW1wUmVnaXN0ZXIsIG1hc2s4KTsKICAgICB9CiAKICAgICBKdW1wIGJyYW5jaFRlc3Q4KFJl
c3VsdENvbmRpdGlvbiBjb25kLCBBYnNvbHV0ZUFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMy
IG1hc2sgPSBUcnVzdGVkSW1tMzIoLTEpKQogICAgIHsKLSAgICAgICAgVHJ1c3RlZEltbTMyIG1h
c2s4ID0gTWFjcm9Bc3NlbWJsZXJIZWxwZXJzOjptYXNrOE9uQ29uZGl0aW9uKCp0aGlzLCBjb25k
LCBtYXNrKTsKKyAgICAgICAgVHJ1c3RlZEltbTMyIG1hc2s4ID0gbWFzazhPblRlc3QoY29uZCwg
bWFzayk7CiAgICAgICAgIE1hY3JvQXNzZW1ibGVySGVscGVyczo6bG9hZDhPbkNvbmRpdGlvbigq
dGhpcywgY29uZCwgYWRkcmVzcywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIHJldHVybiBi
cmFuY2hUZXN0MzIoY29uZCwgZGF0YVRlbXBSZWdpc3RlciwgbWFzazgpOwogICAgIH0KQEAgLTIw
NTgsOCArMjA5Niw3IEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0g
ICAgICAgIG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICByZXR1cm4gYnJhbmNo
QWRkMzIoY29uZCwgaW1tVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAgICAgcmV0dXJuIGJyYW5j
aEFkZDMyKGNvbmQsIGRlc3QsIGltbSwgZGVzdCk7CiAgICAgfQogCiAgICAgSnVtcCBicmFuY2hB
ZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgQWRkcmVzcyBhZGRyZXNzLCBSZWdpc3RlcklEIGRl
c3QpCkBAIC0yMDcwLDUxICsyMTA3LDEwNCBAQCBwdWJsaWM6CiAKICAgICBKdW1wIGJyYW5jaEFk
ZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGlt
bSwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgaWYgKGltbS5tX3ZhbHVlID49IC0z
Mjc2OCAmJiBpbW0ubV92YWx1ZSA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7CisgICAgICAg
ICAgICBBU1NFUlQoKGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNv
bmQgPT0gUG9zaXRpdmVPclplcm8pIHx8IChjb25kID09IFplcm8pIHx8IChjb25kID09IE5vblpl
cm8pKTsKKyAgICAgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7CisgICAgICAgICAgICAg
ICAgaWYgKGltbS5tX3ZhbHVlID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuYmx0eihzcmMsIDExKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkaXUo
ZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJnZXooZGVzdCwgOSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOwor
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVy
LmJnZXooc3JjLCAxMSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRl
c3QsIHNyYywgaW1tLm1fdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5i
bHR6KGRlc3QsIDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKKyAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRlc3QsIHNyYywgaW1tLm1fdmFs
dWUpOworICAgICAgICAgICAgaWYgKGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICAgICAg
Ly8gQ2hlY2sgaWYgZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5zbHQoY21wVGVtcFJlZ2lzdGVyLCBkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gYnJhbmNoTm90RXF1YWwoY21wVGVtcFJlZ2lzdGVyLCBNSVBTUmVn
aXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb25kID09IFBv
c2l0aXZlT3JaZXJvKSB7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgZGVzdCBpcyBub3Qg
bmVnYXRpdmUuCisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc2x0KGNtcFRlbXBSZWdpc3Rl
ciwgZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGJy
YW5jaEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoY29uZCA9PSBaZXJvKQorICAgICAgICAgICAgICAgIHJl
dHVybiBicmFuY2hFcXVhbChkZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsKKyAgICAgICAgICAg
IGlmIChjb25kID09IE5vblplcm8pCisgICAgICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVx
dWFsKGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gSnVtcCgpOworICAgICAgICB9CiAgICAgICAg
IG1vdmUoaW1tLCBpbW1UZW1wUmVnaXN0ZXIpOwotICAgICAgICBtb3ZlKHNyYywgZGVzdCk7Ci0g
ICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBpbW1UZW1wUmVnaXN0ZXIsIGRlc3QpOwor
ICAgICAgICByZXR1cm4gYnJhbmNoQWRkMzIoY29uZCwgc3JjLCBpbW1UZW1wUmVnaXN0ZXIsIGRl
c3QpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQs
IFRydXN0ZWRJbW0zMiBpbW0sIEFic29sdXRlQWRkcmVzcyBkZXN0KQogICAgIHsKICAgICAgICAg
QVNTRVJUKChjb25kID09IE92ZXJmbG93KSB8fCAoY29uZCA9PSBTaWduZWQpIHx8IChjb25kID09
IFBvc2l0aXZlT3JaZXJvKSB8fCAoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9PSBOb25aZXJvKSk7
CiAgICAgICAgIGlmIChjb25kID09IE92ZXJmbG93KSB7Ci0gICAgICAgICAgICAvKgotICAgICAg
ICAgICAgICAgIG1vdmUgICAgZGF0YVRlbXAsIGRlc3QKLSAgICAgICAgICAgICAgICB4b3JpICAg
IGNtcFRlbXAsIGRhdGFUZW1wLCBpbW0KLSAgICAgICAgICAgICAgICBibHR6ICAgIGNtcFRlbXAs
IE5vX292ZXJmbG93ICAgICMgZGlmZiBzaWduIGJpdCAtPiBubyBvdmVyZmxvdwotICAgICAgICAg
ICAgICAgIGFkZGl1ICAgZGF0YVRlbXAsIGRhdGFUZW1wLCBpbW0KLSAgICAgICAgICAgICAgICBt
b3ZlICAgIGRlc3QsIGRhdGFUZW1wCi0gICAgICAgICAgICAgICAgeG9yaSAgICBjbXBUZW1wLCBk
YXRhVGVtcCwgaW1tCi0gICAgICAgICAgICAgICAgYmdleiAgICBjbXBUZW1wLCBOb19vdmVyZmxv
dyAgICAjIHNhbWUgc2lnbiBiaWcgLT4gbm8gb3ZlcmZsb3cKLSAgICAgICAgICAgICAgICBub3AK
LSAgICAgICAgICAgICAgICBiICAgICAgIE92ZXJmbG93Ci0gICAgICAgICAgICAgICAgbm9wCi0g
ICAgICAgICAgICAgICAgbm9wCi0gICAgICAgICAgICAgICAgbm9wCi0gICAgICAgICAgICAgICAg
bm9wCi0gICAgICAgICAgICAgICAgbm9wCi0gICAgICAgICAgICBOb19vdmVyZmxvdzoKLSAgICAg
ICAgICAgICovCi0gICAgICAgICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4ICYmIGltbS5t
X3ZhbHVlICA8PSAzMjc2NyAmJiAhbV9maXhlZFdpZHRoKSB7Ci0gICAgICAgICAgICAgICAgbG9h
ZDMyKGRlc3QubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwotICAgICAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1
ZSk7Ci0gICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDE0
KTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBk
YXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgc3RvcmUzMihk
YXRhVGVtcFJlZ2lzdGVyLCBkZXN0Lm1fcHRyKTsKLSAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci54b3JpKGNtcFRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tLm1fdmFsdWUpOwot
ICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsKLSAg
ICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5ub3AoKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBpZiAobV9maXhlZFdpZHRoKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAg
ICAgICAgICAgICAgICAgbG9hZCAgICBkZXN0LCBkYXRhVGVtcAorICAgICAgICAgICAgICAgICAg
ICBtb3ZlICAgIGltbSwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICB4b3IgICAgIGNtcFRl
bXAsIGRhdGFUZW1wLCBpbW1UZW1wCisgICAgICAgICAgICAgICAgICAgIGFkZHUgICAgZGF0YVRl
bXAsIGRhdGFUZW1wLCBpbW1UZW1wCisgICAgICAgICAgICAgICAgICAgIHN0b3JlICAgZGF0YVRl
bXAsIGRlc3QKKyAgICAgICAgICAgICAgICAgICAgYmx0eiAgICBjbXBUZW1wLCBOb19vdmVyZmxv
dyAgICAjIGRpZmYgc2lnbiBiaXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICAgICAg
eG9yICAgICBjbXBUZW1wLCBkYXRhVGVtcCwgaW1tVGVtcAorICAgICAgICAgICAgICAgICAgICBi
Z2V6ICAgIGNtcFRlbXAsIE5vX292ZXJmbG93ICAgICMgc2FtZSBzaWduIGJpZyAtPiBubyBvdmVy
ZmxvdworICAgICAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICAgICAgYiAgICAg
ICBPdmVyZmxvdworICAgICAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICAgICAg
bm9wCisgICAgICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICAgICAgbm9wCisgICAgICAgICAgICAgICAgTm9fb3ZlcmZsb3c6CisgICAg
ICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICBsb2FkMzIoZGVzdC5tX3B0ciwgZGF0YVRl
bXBSZWdpc3Rlcik7CiAgICAgICAgICAgICAgICAgbW92ZShpbW0sIGltbVRlbXBSZWdpc3Rlcik7
CiAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRh
dGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDE0KTsKLSAgICAgICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1wUmVn
aXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGF0YVRlbXBSZWdpc3Rl
ciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgICAgICAgICBz
dG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGRlc3QubV9wdHIpOwotICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLnhvcmkoY21wVGVtcFJlZ2lzdGVyLCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW1UZW1w
UmVnaXN0ZXIpOworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lz
dGVyLCAxMSk7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5zbihjbXBUZW1wUmVn
aXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7CiAgICAgICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDkpOwogICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLm5vcCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB1aW50cHRyX3QgYWRyID0gcmVpbnRlcnByZXRfY2FzdDx1aW50cHRyX3Q+KGRlc3QubV9wdHIp
OworICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmx1aShhZGRyVGVtcFJlZ2lzdGVyLCAoYWRy
ICsgMHg4MDAwKSA+PiAxNik7CisgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubHcoZGF0YVRl
bXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgICAg
ICAgICBpZiAoaW1tLm1fdmFsdWUgPj0gMCAmJiBpbW0ubV92YWx1ZSAgPD0gMzI3NjcpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbW92ZShkYXRhVGVtcFJlZ2lzdGVyLCBjbXBUZW1wUmVnaXN0ZXIp
OworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRpdShkYXRhVGVtcFJlZ2lzdGVy
LCBkYXRhVGVtcFJlZ2lzdGVyLCBpbW0ubV92YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIG1f
YXNzZW1ibGVyLmJsdHooY21wVGVtcFJlZ2lzdGVyLCAxMSk7CisgICAgICAgICAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN3KGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJUZW1wUmVnaXN0ZXIsIGFkciAm
IDB4ZmZmZik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooZGF0YVRlbXBS
ZWdpc3RlciwgOSk7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLm5vcCgpOworICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW1tLm1fdmFsdWUgPj0gLTMyNzY4ICYmIGltbS5tX3Zh
bHVlIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBtb3ZlKGRhdGFUZW1wUmVnaXN0ZXIsIGNt
cFRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZGl1KGRh
dGFUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbS5tX3ZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuYmdleihjbXBUZW1wUmVnaXN0ZXIsIDExKTsKKyAgICAg
ICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3coZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBS
ZWdpc3RlciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIu
Ymx0eihjbXBUZW1wUmVnaXN0ZXIsIDkpOworICAgICAgICAgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5ub3AoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBt
b3ZlKGltbSwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJs
ZXIueG9ySW5zbihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdp
c3Rlcik7CisgICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZHUoZGF0YVRlbXBSZWdp
c3RlciwgZGF0YVRlbXBSZWdpc3RlciwgaW1tVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYmx0eihjbXBUZW1wUmVnaXN0ZXIsIDEyKTsKKyAgICAgICAgICAg
ICAgICAgICAgbV9hc3NlbWJsZXIuc3coZGF0YVRlbXBSZWdpc3RlciwgYWRkclRlbXBSZWdpc3Rl
ciwgYWRyICYgMHhmZmZmKTsKKyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIueG9ySW5z
bihjbXBUZW1wUmVnaXN0ZXIsIGRhdGFUZW1wUmVnaXN0ZXIsIGltbVRlbXBSZWdpc3Rlcik7Cisg
ICAgICAgICAgICAgICAgICAgIG1fYXNzZW1ibGVyLmJnZXooY21wVGVtcFJlZ2lzdGVyLCA5KTsK
KyAgICAgICAgICAgICAgICAgICAgbV9hc3NlbWJsZXIubm9wKCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIGp1bXAoKTsKICAgICAgICAgfQpA
QCAtMjM1Miw4ICsyNDQyLDQzIEBAIHB1YmxpYzoKIAogICAgIEp1bXAgYnJhbmNoTmVnMzIoUmVz
dWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjRGVzdCkKICAgICB7Ci0gICAgICAgIG1f
YXNzZW1ibGVyLmxpKGRhdGFUZW1wUmVnaXN0ZXIsIC0xKTsKLSAgICAgICAgcmV0dXJuIGJyYW5j
aE11bDMyKGNvbmQsIGRhdGFUZW1wUmVnaXN0ZXIsIHNyY0Rlc3QpOworICAgICAgICBBU1NFUlQo
KGNvbmQgPT0gT3ZlcmZsb3cpIHx8IChjb25kID09IFNpZ25lZCkgfHwgKGNvbmQgPT0gWmVybykg
fHwgKGNvbmQgPT0gTm9uWmVybykpOworICAgICAgICBpZiAoY29uZCA9PSBPdmVyZmxvdykgewor
ICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICBiZ2V6ICAgIHNyY0Rlc3QsIE5vX292ZXJm
bG93ICAgICMgcG9zaXRpdmUgaW5wdXQgLT4gbm8gb3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBz
dWJ1ICAgIHNyY0Rlc3QsIHplcm8sIHNyY0Rlc3QKKyAgICAgICAgICAgICAgICBiZ2V6ICAgIHNy
Y0Rlc3QsIE5vX292ZXJmbG93ICAgICMgbmVnYXRpdmUgaW5wdXQsIHBvc2l0aXZlIG91dHB1dCAt
PiBubyBvdmVyZmxvdworICAgICAgICAgICAgICAgIG5vcAorICAgICAgICAgICAgICAgIGIgICAg
ICAgT3ZlcmZsb3cKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAg
ICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBub3AKKyAgICAgICAgICAgICAgICBu
b3AKKyAgICAgICAgICAgIE5vX292ZXJmbG93OgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJnZXooc3JjRGVzdCwgMTEpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIu
c3VidShzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmNEZXN0KTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmJnZXooc3JjRGVzdCwgOSk7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5u
b3AoKTsKKyAgICAgICAgICAgIHJldHVybiBqdW1wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYg
KGNvbmQgPT0gU2lnbmVkKSB7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5zdWJ1KHNyY0Rlc3Qs
IE1JUFNSZWdpc3RlcnM6Onplcm8sIHNyY0Rlc3QpOworICAgICAgICAgICAgLy8gQ2hlY2sgaWYg
ZGVzdCBpcyBuZWdhdGl2ZS4KKyAgICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdChjbXBUZW1wUmVn
aXN0ZXIsIHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8pOworICAgICAgICAgICAgcmV0dXJu
IGJyYW5jaE5vdEVxdWFsKGNtcFRlbXBSZWdpc3RlciwgTUlQU1JlZ2lzdGVyczo6emVybyk7Cisg
ICAgICAgIH0KKyAgICAgICAgaWYgKGNvbmQgPT0gWmVybykgeworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc3VidShzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvLCBzcmNEZXN0KTsKKyAgICAg
ICAgICAgIHJldHVybiBicmFuY2hFcXVhbChzcmNEZXN0LCBNSVBTUmVnaXN0ZXJzOjp6ZXJvKTsK
KyAgICAgICAgfQorICAgICAgICBpZiAoY29uZCA9PSBOb25aZXJvKSB7CisgICAgICAgICAgICBt
X2Fzc2VtYmxlci5zdWJ1KHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIHNyY0Rlc3QpOwor
ICAgICAgICAgICAgcmV0dXJuIGJyYW5jaE5vdEVxdWFsKHNyY0Rlc3QsIE1JUFNSZWdpc3RlcnM6
Onplcm8pOworICAgICAgICB9CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAg
ICByZXR1cm4gSnVtcCgpOwogICAgIH0KIAogICAgIEp1bXAgYnJhbmNoT3IzMihSZXN1bHRDb25k
aXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKQEAgLTI0NDYsMTEg
KzI1NzEsMTkgQEAgcHVibGljOgogICAgIHZvaWQgY29tcGFyZTMyKFJlbGF0aW9uYWxDb25kaXRp
b24gY29uZCwgUmVnaXN0ZXJJRCBsZWZ0LCBSZWdpc3RlcklEIHJpZ2h0LCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICBpZiAoY29uZCA9PSBFcXVhbCkgewotICAgICAgICAgICAgbV9h
c3NlbWJsZXIueG9ySW5zbihkZXN0LCBsZWZ0LCByaWdodCk7Ci0gICAgICAgICAgICBtX2Fzc2Vt
Ymxlci5zbHRpdShkZXN0LCBkZXN0LCAxKTsKKyAgICAgICAgICAgIGlmIChyaWdodCA9PSBNSVBT
UmVnaXN0ZXJzOjp6ZXJvICYmICFtX2ZpeGVkV2lkdGgpCisgICAgICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuc2x0aXUoZGVzdCwgbGVmdCwgMSk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci54b3JJbnNuKGRlc3QsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAg
ICAgICAgICBtX2Fzc2VtYmxlci5zbHRpdShkZXN0LCBkZXN0LCAxKTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfSBlbHNlIGlmIChjb25kID09IE5vdEVxdWFsKSB7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci54b3JJbnNuKGRlc3QsIGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgIG1fYXNzZW1i
bGVyLnNsdHUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgZGVzdCk7CisgICAgICAgICAgICBp
ZiAocmlnaHQgPT0gTUlQU1JlZ2lzdGVyczo6emVybyAmJiAhbV9maXhlZFdpZHRoKQorICAgICAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLnNsdHUoZGVzdCwgTUlQU1JlZ2lzdGVyczo6emVybywgbGVm
dCk7CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci54b3JJ
bnNuKGRlc3QsIGxlZnQsIHJpZ2h0KTsKKyAgICAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHR1
KGRlc3QsIE1JUFNSZWdpc3RlcnM6Onplcm8sIGRlc3QpOworICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKGNvbmQgPT0gQWJvdmUpCiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5zbHR1
KGRlc3QsIHJpZ2h0LCBsZWZ0KTsKICAgICAgICAgZWxzZSBpZiAoY29uZCA9PSBBYm92ZU9yRXF1
YWwpIHsKQEAgLTI0NzYsMTQgKzI2MDksMTggQEAgcHVibGljOgogCiAgICAgdm9pZCBjb21wYXJl
MzIoUmVsYXRpb25hbENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIGxlZnQsIFRydXN0ZWRJbW0z
MiByaWdodCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbW92ZShyaWdodCwgaW1t
VGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIGltbVRlbXBSZWdp
c3RlciwgZGVzdCk7CisgICAgICAgIGlmICghcmlnaHQubV92YWx1ZSAmJiAhbV9maXhlZFdpZHRo
KQorICAgICAgICAgICAgY29tcGFyZTMyKGNvbmQsIGxlZnQsIE1JUFNSZWdpc3RlcnM6Onplcm8s
IGRlc3QpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG1vdmUocmlnaHQsIGltbVRlbXBS
ZWdpc3Rlcik7CisgICAgICAgICAgICBjb21wYXJlMzIoY29uZCwgbGVmdCwgaW1tVGVtcFJlZ2lz
dGVyLCBkZXN0KTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgdGVzdDgoUmVzdWx0Q29u
ZGl0aW9uIGNvbmQsIEFkZHJlc3MgYWRkcmVzcywgVHJ1c3RlZEltbTMyIG1hc2ssIFJlZ2lzdGVy
SUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFTU0VSVCgoY29uZCA9PSBaZXJvKSB8fCAoY29uZCA9
PSBOb25aZXJvKSk7Ci0gICAgICAgIFRydXN0ZWRJbW0zMiBtYXNrOCA9IE1hY3JvQXNzZW1ibGVy
SGVscGVyczo6bWFzazhPbkNvbmRpdGlvbigqdGhpcywgY29uZCwgbWFzayk7CisgICAgICAgIFRy
dXN0ZWRJbW0zMiBtYXNrOCA9IG1hc2s4T25UZXN0KGNvbmQsIG1hc2spOwogICAgICAgICBNYWNy
b0Fzc2VtYmxlckhlbHBlcnM6OmxvYWQ4T25Db25kaXRpb24oKnRoaXMsIGNvbmQsIGFkZHJlc3Ms
IGRhdGFUZW1wUmVnaXN0ZXIpOwogICAgICAgICBpZiAoKG1hc2s4Lm1fdmFsdWUgJiAweGZmKSA9
PSAweGZmICYmICFtX2ZpeGVkV2lkdGgpIHsKICAgICAgICAgICAgIGlmIChjb25kID09IFplcm8p
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>