<?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>182368</bug_id>
          
          <creation_ts>2018-01-31 18:20:15 -0800</creation_ts>
          <short_desc>When BytecodeParser inserts Unreachable after ForceOSRExit it needs to update ArgumentPositions for Flushes it inserts</short_desc>
          <delta_ts>2018-02-02 14:55:35 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ticaiolima</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1395279</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-31 18:20:15 -0800</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395294</commentid>
    <comment_count>1</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-31 18:43:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/36932466&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395298</commentid>
    <comment_count>2</comment_count>
      <attachid>332833</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-31 18:48:20 -0800</bug_when>
    <thetext>Created attachment 332833
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395300</commentid>
    <comment_count>3</comment_count>
      <attachid>332835</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-31 18:48:41 -0800</bug_when>
    <thetext>Created attachment 332835
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395308</commentid>
    <comment_count>4</comment_count>
      <attachid>332839</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-01-31 19:06:46 -0800</bug_when>
    <thetext>Created attachment 332839
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395574</commentid>
    <comment_count>5</comment_count>
      <attachid>332895</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-01 11:22:29 -0800</bug_when>
    <thetext>Created attachment 332895
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395976</commentid>
    <comment_count>6</comment_count>
      <attachid>332895</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-02-02 13:45:11 -0800</bug_when>
    <thetext>Comment on attachment 332895
patch

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

r=me with a suggestion.

&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6679
&gt; +                        VirtualRegister argument = operand - (inlineCallFrame ? inlineCallFrame-&gt;stackOffset : 0);
&gt; +                        if (argument.isArgument() &amp;&amp; !argument.isHeader()) {
&gt; +                            const Vector&lt;ArgumentPosition*&gt;&amp; arguments = m_inlineCallFrameToArgumentPositions.get(inlineCallFrame);
&gt; +                            arguments[argument.toArgument()]-&gt;addVariable(variable);
&gt; +                        }

If this is only needed when we create a new VAD, maybe you can move this into the body of the if statement above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1395979</commentid>
    <comment_count>7</comment_count>
      <attachid>332895</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-02 13:56:44 -0800</bug_when>
    <thetext>Comment on attachment 332895
patch

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

&gt;&gt; Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:6679
&gt;&gt; +                        }
&gt; 
&gt; If this is only needed when we create a new VAD, maybe you can move this into the body of the if statement above.

Spoke to Mark offline about this:
We want to tell this ArgumentPosition about this VAD regardless of whether we added it or not. From reading other code in the bytecode parser, I believe it&apos;s possible that this VAD is from GetLocal only, and the ArgumentPosition would not know about it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396009</commentid>
    <comment_count>8</comment_count>
      <attachid>332895</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-02 14:55:33 -0800</bug_when>
    <thetext>Comment on attachment 332895
patch

Clearing flags on attachment: 332895

Committed r228031: &lt;https://trac.webkit.org/changeset/228031&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396010</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-02-02 14:55:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332833</attachid>
            <date>2018-01-31 18:48:20 -0800</date>
            <delta_ts>2018-01-31 18:48:41 -0800</delta_ts>
            <desc>patch</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>33824</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NzQ1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDE4LTAxLTMwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFJlcGxhY2UgdHJ5TGFyZ2VNZW1hbGlnblZpcnR1YWwgd2l0aCB0cnlMYXJnZVplcm9lZE1lbWFs
aWduVmlydHVhbCBhbmQgdXNlIGl0IHRvIGFsbG9jYXRlIGxhcmdlIHplcm9lZCBtZW1vcnkgaW4g
V2FzbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTgy
MDY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjg0MDEzMj4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHN3aXRjaGVzIFdlYkFz
c2VtYmx5IE1lbW9yeSB0byBhbHdheXMgdXNlIGJtYWxsb2MncworICAgICAgICB6ZXJvZWQgdmly
dHVhbCBhbGxvY2F0aW9uIEFQSS4gVGhpcyBtYWtlcyBpdCBzbyB0aGF0IHdlIGRvbid0CisgICAg
ICAgIGRpcnR5IHRoZSBtZW1vcnkgdG8gemVybyBpdC4gSXQncyBhIGh1Z2UgY29tcGlsZSB0aW1l
IHNwZWVkdXAKKyAgICAgICAgb24gV2FzbUJlbmNoIG9uIGlPUy4KKworICAgICAgICAqIHdhc20v
V2FzbU1lbW9yeS5jcHA6CisgICAgICAgIChKU0M6Oldhc206Ok1lbW9yeTo6Y3JlYXRlKToKKyAg
ICAgICAgKEpTQzo6V2FzbTo6TWVtb3J5Ojp+TWVtb3J5KToKKyAgICAgICAgKEpTQzo6V2FzbTo6
TWVtb3J5OjphZGRyZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkpOgorICAgICAgICAoSlNDOjpXYXNt
OjpNZW1vcnk6Omdyb3cpOgorICAgICAgICAoSlNDOjpXYXNtOjpjb21taXRaZXJvUGFnZXMpOiBE
ZWxldGVkLgorCiAyMDE4LTAxLTI5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29t
PgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyMjczNDEpOiBERkdfQVNTRVJUIGZhaWx1cmUgYXQg
SlNDOjpERkc6OkF0VGFpbEFic3RyYWN0U3RhdGU6OmZvck5vZGUoKQpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1lbW9yeS5jcHAJKHJldmlzaW9uIDIyNzc0NSkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21NZW1vcnkuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC05NSwyNiArOTUsMjYgQEAgc3RydWN0IE1lbW9yeVJlc3VsdCB7CiBjbGFzcyBNZW1vcnlNYW5h
Z2VyIHsKIHB1YmxpYzoKICAgICBNZW1vcnlNYW5hZ2VyKCkKLSAgICAgICAgOiBtX21heENvdW50
KE9wdGlvbnM6Om1heE51bVdlYkFzc2VtYmx5RmFzdE1lbW9yaWVzKCkpCisgICAgICAgIDogbV9t
YXhGYXN0TWVtb3J5Q291bnQoT3B0aW9uczo6bWF4TnVtV2ViQXNzZW1ibHlGYXN0TWVtb3JpZXMo
KSkKICAgICB7CiAgICAgfQogICAgIAotICAgIE1lbW9yeVJlc3VsdCB0cnlBbGxvY2F0ZVZpcnR1
YWxQYWdlcygpCisgICAgTWVtb3J5UmVzdWx0IHRyeUFsbG9jYXRlRmFzdE1lbW9yeSgpCiAgICAg
ewogICAgICAgICBNZW1vcnlSZXN1bHQgcmVzdWx0ID0gWyZdIHsKICAgICAgICAgICAgIGF1dG8g
aG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKLSAgICAgICAgICAgIGlmIChtX21lbW9yaWVzLnNp
emUoKSA+PSBtX21heENvdW50KQorICAgICAgICAgICAgaWYgKG1fZmFzdE1lbW9yaWVzLnNpemUo
KSA+PSBtX21heEZhc3RNZW1vcnlDb3VudCkKICAgICAgICAgICAgICAgICByZXR1cm4gTWVtb3J5
UmVzdWx0KG51bGxwdHIsIE1lbW9yeVJlc3VsdDo6U3luY1RyeVRvUmVjbGFpbU1lbW9yeSk7CiAg
ICAgICAgICAgICAKLSAgICAgICAgICAgIHZvaWQqIHJlc3VsdCA9IEdpZ2FjYWdlOjp0cnlBbGxv
Y2F0ZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBNZW1vcnk6OmZhc3RNYXBwZWRC
eXRlcygpKTsKKyAgICAgICAgICAgIHZvaWQqIHJlc3VsdCA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0
ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBNZW1vcnk6OmZhc3RNYXBw
ZWRCeXRlcygpKTsKICAgICAgICAgICAgIGlmICghcmVzdWx0KQogICAgICAgICAgICAgICAgIHJl
dHVybiBNZW1vcnlSZXN1bHQobnVsbHB0ciwgTWVtb3J5UmVzdWx0OjpTeW5jVHJ5VG9SZWNsYWlt
TWVtb3J5KTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgbV9tZW1vcmllcy5hcHBlbmQocmVz
dWx0KTsKKyAgICAgICAgICAgIG1fZmFzdE1lbW9yaWVzLmFwcGVuZChyZXN1bHQpOwogICAgICAg
ICAgICAgCiAgICAgICAgICAgICByZXR1cm4gTWVtb3J5UmVzdWx0KAogICAgICAgICAgICAgICAg
IHJlc3VsdCwKLSAgICAgICAgICAgICAgICBtX21lbW9yaWVzLnNpemUoKSA+PSBtX21heENvdW50
IC8gMiA/IE1lbW9yeVJlc3VsdDo6U3VjY2Vzc0FuZE5vdGlmeU1lbW9yeVByZXNzdXJlIDogTWVt
b3J5UmVzdWx0OjpTdWNjZXNzKTsKKyAgICAgICAgICAgICAgICBtX2Zhc3RNZW1vcmllcy5zaXpl
KCkgPj0gbV9tYXhGYXN0TWVtb3J5Q291bnQgLyAyID8gTWVtb3J5UmVzdWx0OjpTdWNjZXNzQW5k
Tm90aWZ5TWVtb3J5UHJlc3N1cmUgOiBNZW1vcnlSZXN1bHQ6OlN1Y2Nlc3MpOwogICAgICAgICB9
KCk7CiAgICAgICAgIAogICAgICAgICBpZiAoT3B0aW9uczo6bG9nV2ViQXNzZW1ibHlNZW1vcnko
KSkKQEAgLTEyMywyMyArMTIzLDIzIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCi0gICAgdm9pZCBmcmVlVmlydHVhbFBhZ2VzKHZvaWQqIGJhc2VQdHIpCisg
ICAgdm9pZCBmcmVlRmFzdE1lbW9yeSh2b2lkKiBiYXNlUHRyKQogICAgIHsKICAgICAgICAgewog
ICAgICAgICAgICAgYXV0byBob2xkZXIgPSBob2xkTG9jayhtX2xvY2spOwogICAgICAgICAgICAg
R2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgYmFzZVB0ciwg
TWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSk7Ci0gICAgICAgICAgICBtX21lbW9yaWVzLnJlbW92
ZUZpcnN0KGJhc2VQdHIpOworICAgICAgICAgICAgbV9mYXN0TWVtb3JpZXMucmVtb3ZlRmlyc3Qo
YmFzZVB0cik7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChPcHRpb25zOjpsb2dX
ZWJBc3NlbWJseU1lbW9yeSgpKQogICAgICAgICAgICAgZGF0YUxvZygiRnJlZWQgdmlydHVhbDsg
c3RhdGU6ICIsICp0aGlzLCAiXG4iKTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBjb250YWluc0Fk
ZHJlc3Modm9pZCogYWRkcmVzcykKKyAgICBib29sIGlzQWRkcmVzc0luRmFzdE1lbW9yeSh2b2lk
KiBhZGRyZXNzKQogICAgIHsKICAgICAgICAgLy8gTk9URTogVGhpcyBjYW4gYmUgY2FsbGVkIGZy
b20gYSBzaWduYWwgaGFuZGxlciwgYnV0IG9ubHkgYWZ0ZXIgd2UgcHJvdmVkIHRoYXQgd2UncmUg
aW4gSklUIGNvZGUuCiAgICAgICAgIGF1dG8gaG9sZGVyID0gaG9sZExvY2sobV9sb2NrKTsKLSAg
ICAgICAgZm9yICh2b2lkKiBtZW1vcnkgOiBtX21lbW9yaWVzKSB7CisgICAgICAgIGZvciAodm9p
ZCogbWVtb3J5IDogbV9mYXN0TWVtb3JpZXMpIHsKICAgICAgICAgICAgIGNoYXIqIHN0YXJ0ID0g
c3RhdGljX2Nhc3Q8Y2hhcio+KG1lbW9yeSk7CiAgICAgICAgICAgICBpZiAoc3RhcnQgPD0gYWRk
cmVzcyAmJiBhZGRyZXNzIDw9IHN0YXJ0ICsgTWVtb3J5OjpmYXN0TWFwcGVkQnl0ZXMoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE4OCwxMyArMTg4LDEzIEBAIHB1YmxpYzoK
ICAgICAKICAgICB2b2lkIGR1bXAoUHJpbnRTdHJlYW0mIG91dCkgY29uc3QKICAgICB7Ci0gICAg
ICAgIG91dC5wcmludCgidmlydHVhbCBtZW1vcmllcyA9ICAiLCBtX21lbW9yaWVzLnNpemUoKSwg
Ii8iLCBtX21heENvdW50LCAiLCBieXRlcyA9ICIsIG1fcGh5c2ljYWxCeXRlcywgIi8iLCBtZW1v
cnlMaW1pdCgpKTsKKyAgICAgICAgb3V0LnByaW50KCJmYXN0IG1lbW9yaWVzID0gICIsIG1fZmFz
dE1lbW9yaWVzLnNpemUoKSwgIi8iLCBtX21heEZhc3RNZW1vcnlDb3VudCwgIiwgYnl0ZXMgPSAi
LCBtX3BoeXNpY2FsQnl0ZXMsICIvIiwgbWVtb3J5TGltaXQoKSk7CiAgICAgfQogICAgIAogcHJp
dmF0ZToKICAgICBMb2NrIG1fbG9jazsKLSAgICB1bnNpZ25lZCBtX21heENvdW50IHsgMCB9Owot
ICAgIFZlY3Rvcjx2b2lkKj4gbV9tZW1vcmllczsKKyAgICB1bnNpZ25lZCBtX21heEZhc3RNZW1v
cnlDb3VudCB7IDAgfTsKKyAgICBWZWN0b3I8dm9pZCo+IG1fZmFzdE1lbW9yaWVzOwogICAgIHNp
emVfdCBtX3BoeXNpY2FsQnl0ZXMgeyAwIH07CiB9OwogCkBAIC0yNjksMjEgKzI2OSw2IEBAIE1l
bW9yeTo6TWVtb3J5KHZvaWQqIG1lbW9yeSwgUGFnZUNvdW50IGkKICAgICBkYXRhTG9nTG5JZih2
ZXJib3NlLCAiTWVtb3J5OjpNZW1vcnkgYWxsb2NhdGluZyAiLCAqdGhpcyk7CiB9CiAKLXN0YXRp
YyB2b2lkIGNvbW1pdFplcm9QYWdlcyh2b2lkKiBzdGFydEFkZHJlc3MsIHNpemVfdCBzaXplSW5C
eXRlcykKLXsKLSAgICBib29sIHdyaXRhYmxlID0gdHJ1ZTsKLSAgICBib29sIGV4ZWN1dGFibGUg
PSBmYWxzZTsKLSNpZiBPUyhMSU5VWCkKLSAgICAvLyBJbiBMaW51eCwgTUFEVl9ET05UTkVFRCBj
bGVhcnMgYmFja2luZyBwYWdlcyB3aXRoIHplcm8uIEJlIENhcmVmdWwgdGhhdCBNQURWX0RPTlRO
RUVEIHNob3dzIGRpZmZlcmVudCBzZW1hbnRpY3MgaW4gZGlmZmVyZW50IE9TZXMuCi0gICAgLy8g
Rm9yIGV4YW1wbGUsIEZyZWVCU0QgZG9lcyBub3QgY2xlYXIgYmFja2luZyBwYWdlcyBpbW1lZGlh
dGVseS4KLSAgICB3aGlsZSAobWFkdmlzZShzdGFydEFkZHJlc3MsIHNpemVJbkJ5dGVzLCBNQURW
X0RPTlRORUVEKSA9PSAtMSAmJiBlcnJubyA9PSBFQUdBSU4pIHsgfQotICAgIE9TQWxsb2NhdG9y
Ojpjb21taXQoc3RhcnRBZGRyZXNzLCBzaXplSW5CeXRlcywgd3JpdGFibGUsIGV4ZWN1dGFibGUp
OwotI2Vsc2UKLSAgICBPU0FsbG9jYXRvcjo6Y29tbWl0KHN0YXJ0QWRkcmVzcywgc2l6ZUluQnl0
ZXMsIHdyaXRhYmxlLCBleGVjdXRhYmxlKTsKLSAgICBtZW1zZXQoc3RhcnRBZGRyZXNzLCAwLCBz
aXplSW5CeXRlcyk7Ci0jZW5kaWYKLX0KLQogUmVmUHRyPE1lbW9yeT4gTWVtb3J5OjpjcmVhdGUo
KQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KCkpOwpAQCAtMzE0LDcgKzI5OSw3
IEBAIFJlZlB0cjxNZW1vcnk+IE1lbW9yeTo6Y3JlYXRlKFBhZ2VDb3VudCAKICAgICBpZiAoT3B0
aW9uczo6dXNlV2ViQXNzZW1ibHlGYXN0TWVtb3J5KCkpIHsKICAgICAgICAgdHJ5QWxsb2NhdGUo
CiAgICAgICAgICAgICBbJl0gKCkgLT4gTWVtb3J5UmVzdWx0OjpLaW5kIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIHJlc3VsdCA9IG1lbW9yeU1hbmFnZXIoKS50cnlBbGxvY2F0ZVZpcnR1YWxQYWdl
cygpOworICAgICAgICAgICAgICAgIGF1dG8gcmVzdWx0ID0gbWVtb3J5TWFuYWdlcigpLnRyeUFs
bG9jYXRlRmFzdE1lbW9yeSgpOwogICAgICAgICAgICAgICAgIGZhc3RNZW1vcnkgPSBiaXR3aXNl
X2Nhc3Q8Y2hhcio+KHJlc3VsdC5iYXNlUHRyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gcmVz
dWx0LmtpbmQ7CiAgICAgICAgICAgICB9LCBub3RpZnlNZW1vcnlQcmVzc3VyZSwgc3luY1RyeVRv
UmVjbGFpbU1lbW9yeSk7CkBAIC0zMjcsOCArMzEyLDYgQEAgUmVmUHRyPE1lbW9yeT4gTWVtb3J5
OjpjcmVhdGUoUGFnZUNvdW50IAogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNI
RUQoKTsKICAgICAgICAgfQogCi0gICAgICAgIGNvbW1pdFplcm9QYWdlcyhmYXN0TWVtb3J5LCBp
bml0aWFsQnl0ZXMpOwotCiAgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgTWVtb3J5KGZhc3RN
ZW1vcnksIGluaXRpYWwsIG1heGltdW0sIE1lbW9yeTo6ZmFzdE1hcHBlZEJ5dGVzKCksIE1lbW9y
eU1vZGU6OlNpZ25hbGluZywgV1RGTW92ZShub3RpZnlNZW1vcnlQcmVzc3VyZSksIFdURk1vdmUo
c3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1Y2Nlc3NDYWxsYmFjaykpKTsK
ICAgICB9CiAgICAgCkBAIC0zMzgsMTIgKzMyMSwxMSBAQCBSZWZQdHI8TWVtb3J5PiBNZW1vcnk6
OmNyZWF0ZShQYWdlQ291bnQgCiAgICAgaWYgKCFpbml0aWFsQnl0ZXMpCiAgICAgICAgIHJldHVy
biBhZG9wdFJlZihuZXcgTWVtb3J5KGluaXRpYWwsIG1heGltdW0sIFdURk1vdmUobm90aWZ5TWVt
b3J5UHJlc3N1cmUpLCBXVEZNb3ZlKHN5bmNUcnlUb1JlY2xhaW1NZW1vcnkpLCBXVEZNb3ZlKGdy
b3dTdWNjZXNzQ2FsbGJhY2spKSk7CiAgICAgCi0gICAgdm9pZCogc2xvd01lbW9yeSA9IEdpZ2Fj
YWdlOjp0cnlBbGlnbmVkTWFsbG9jKEdpZ2FjYWdlOjpQcmltaXRpdmUsIFdURjo6cGFnZVNpemUo
KSwgaW5pdGlhbEJ5dGVzKTsKKyAgICB2b2lkKiBzbG93TWVtb3J5ID0gR2lnYWNhZ2U6OnRyeUFs
bG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKEdpZ2FjYWdlOjpQcmltaXRpdmUsIGluaXRpYWxCeXRl
cyk7CiAgICAgaWYgKCFzbG93TWVtb3J5KSB7CiAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVl
UGh5c2ljYWxCeXRlcyhpbml0aWFsQnl0ZXMpOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICB9Ci0gICAgbWVtc2V0KHNsb3dNZW1vcnksIDAsIGluaXRpYWxCeXRlcyk7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBNZW1vcnkoc2xvd01lbW9yeSwgaW5pdGlhbCwgbWF4aW11bSwgaW5pdGlh
bEJ5dGVzLCBNZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZywgV1RGTW92ZShub3RpZnlNZW1vcnlQ
cmVzc3VyZSksIFdURk1vdmUoc3luY1RyeVRvUmVjbGFpbU1lbW9yeSksIFdURk1vdmUoZ3Jvd1N1
Y2Nlc3NDYWxsYmFjaykpKTsKIH0KIApAQCAtMzU3LDEwICszMzksMTAgQEAgTWVtb3J5Ojp+TWVt
b3J5KCkKICAgICAgICAgICAgICAgICBkYXRhTG9nKCJtcHJvdGVjdCBmYWlsZWQ6ICIsIHN0cmVy
cm9yKGVycm5vKSwgIlxuIik7CiAgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVl
VmlydHVhbFBhZ2VzKG1fbWVtb3J5KTsKKyAgICAgICAgICAgIG1lbW9yeU1hbmFnZXIoKS5mcmVl
RmFzdE1lbW9yeShtX21lbW9yeSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBN
ZW1vcnlNb2RlOjpCb3VuZHNDaGVja2luZzoKLSAgICAgICAgICAgIEdpZ2FjYWdlOjphbGlnbmVk
RnJlZShHaWdhY2FnZTo6UHJpbWl0aXZlLCBtX21lbW9yeSk7CisgICAgICAgICAgICBHaWdhY2Fn
ZTo6ZnJlZVZpcnR1YWxQYWdlcyhHaWdhY2FnZTo6UHJpbWl0aXZlLCBtX21lbW9yeSwgbV9zaXpl
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtMzc5LDcgKzM2MSw3
IEBAIHNpemVfdCBNZW1vcnk6OmZhc3RNYXBwZWRCeXRlcygpCiAKIGJvb2wgTWVtb3J5OjphZGRy
ZXNzSXNJbkFjdGl2ZUZhc3RNZW1vcnkodm9pZCogYWRkcmVzcykKIHsKLSAgICByZXR1cm4gbWVt
b3J5TWFuYWdlcigpLmNvbnRhaW5zQWRkcmVzcyhhZGRyZXNzKTsKKyAgICByZXR1cm4gbWVtb3J5
TWFuYWdlcigpLmlzQWRkcmVzc0luRmFzdE1lbW9yeShhZGRyZXNzKTsKIH0KIAogRXhwZWN0ZWQ8
UGFnZUNvdW50LCBNZW1vcnk6Okdyb3dGYWlsUmVhc29uPiBNZW1vcnk6Omdyb3coUGFnZUNvdW50
IGRlbHRhKQpAQCAtNDIyLDE0ICs0MDQsMTMgQEAgRXhwZWN0ZWQ8UGFnZUNvdW50LCBNZW1vcnk6
Okdyb3dGYWlsUmVhcwogICAgIGNhc2UgTWVtb3J5TW9kZTo6Qm91bmRzQ2hlY2tpbmc6IHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQobWF4aW11bSgpLmJ5dGVzKCkgIT0gMCk7CiAKLSAgICAgICAg
dm9pZCogbmV3TWVtb3J5ID0gR2lnYWNhZ2U6OnRyeUFsaWduZWRNYWxsb2MoR2lnYWNhZ2U6OlBy
aW1pdGl2ZSwgV1RGOjpwYWdlU2l6ZSgpLCBkZXNpcmVkU2l6ZSk7CisgICAgICAgIHZvaWQqIG5l
d01lbW9yeSA9IEdpZ2FjYWdlOjp0cnlBbGxvY2F0ZVplcm9lZFZpcnR1YWxQYWdlcyhHaWdhY2Fn
ZTo6UHJpbWl0aXZlLCBkZXNpcmVkU2l6ZSk7CiAgICAgICAgIGlmICghbmV3TWVtb3J5KQogICAg
ICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKEdyb3dGYWlsUmVhc29uOjpPdXRPZk1lbW9y
eSk7CiAKICAgICAgICAgbWVtY3B5KG5ld01lbW9yeSwgbV9tZW1vcnksIG1fc2l6ZSk7Ci0gICAg
ICAgIG1lbXNldChzdGF0aWNfY2FzdDxjaGFyKj4obmV3TWVtb3J5KSArIG1fc2l6ZSwgMCwgZGVz
aXJlZFNpemUgLSBtX3NpemUpOwogICAgICAgICBpZiAobV9tZW1vcnkpCi0gICAgICAgICAgICBH
aWdhY2FnZTo6YWxpZ25lZEZyZWUoR2lnYWNhZ2U6OlByaW1pdGl2ZSwgbV9tZW1vcnkpOworICAg
ICAgICAgICAgR2lnYWNhZ2U6OmZyZWVWaXJ0dWFsUGFnZXMoR2lnYWNhZ2U6OlByaW1pdGl2ZSwg
bV9tZW1vcnksIG1fc2l6ZSk7CiAgICAgICAgIG1fbWVtb3J5ID0gbmV3TWVtb3J5OwogICAgICAg
ICBtX21hcHBlZENhcGFjaXR5ID0gZGVzaXJlZFNpemU7CiAgICAgICAgIG1fc2l6ZSA9IGRlc2ly
ZWRTaXplOwpAQCAtNDQ2LDcgKzQyNyw2IEBAIEV4cGVjdGVkPFBhZ2VDb3VudCwgTWVtb3J5OjpH
cm93RmFpbFJlYXMKICAgICAgICAgICAgIGRhdGFMb2coIm1wcm90ZWN0IGZhaWxlZDogIiwgc3Ry
ZXJyb3IoZXJybm8pLCAiXG4iKTsKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgIH0KLSAgICAgICAgY29tbWl0WmVyb1BhZ2VzKHN0YXJ0QWRkcmVzcywg
ZXh0cmFCeXRlcyk7CiAgICAgICAgIG1fc2l6ZSA9IGRlc2lyZWRTaXplOwogICAgICAgICBtX2lu
ZGV4aW5nTWFzayA9IFdURjo6Y29tcHV0ZUluZGV4aW5nTWFzayhkZXNpcmVkU2l6ZSk7CiAgICAg
ICAgIHJldHVybiBzdWNjZXNzKCk7CkluZGV4OiBTb3VyY2UvV1RGL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV1RGL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3NzQ1KQorKysgU291cmNl
L1dURi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxOC0wMS0z
MCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZXBsYWNlIHRy
eUxhcmdlTWVtYWxpZ25WaXJ0dWFsIHdpdGggdHJ5TGFyZ2VaZXJvZWRNZW1hbGlnblZpcnR1YWwg
YW5kIHVzZSBpdCB0byBhbGxvY2F0ZSBsYXJnZSB6ZXJvZWQgbWVtb3J5IGluIFdhc20KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjA2NAorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMzY4NDAxMzI+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvR2lnYWNhZ2UuY3BwOgorICAgICAgICAoR2lnYWNh
Z2U6OnRyeUFsbG9jYXRlWmVyb2VkVmlydHVhbFBhZ2VzKToKKyAgICAgICAgKEdpZ2FjYWdlOjp0
cnlBbGxvY2F0ZVZpcnR1YWxQYWdlcyk6IERlbGV0ZWQuCisgICAgICAgICogd3RmL0dpZ2FjYWdl
Lmg6CisgICAgICAgICogd3RmL09TQWxsb2NhdG9yLmg6CisKIDIwMTgtMDEtMjYgIE1hcmsgTGFt
ICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBpbmZyYXN0cnVjdHVyZSBmb3Ig
cG9pbnRlciBwcmVwYXJhdGlvbi4KSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9HaWdhY2FnZS5jcHAJKHJldmlzaW9uIDIyNzc0
NSkKKysrIFNvdXJjZS9XVEYvd3RmL0dpZ2FjYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEs
MTQgKzQxLDIyIEBAIHZvaWQqIHRyeU1hbGxvYyhLaW5kLCBzaXplX3Qgc2l6ZSkKICAgICByZXR1
cm4gRmFzdE1hbGxvYzo6dHJ5TWFsbG9jKHNpemUpOwogfQogCi12b2lkKiB0cnlBbGxvY2F0ZVZp
cnR1YWxQYWdlcyhLaW5kLCBzaXplX3Qgc2l6ZSkKK3ZvaWQqIHRyeUFsbG9jYXRlWmVyb2VkVmly
dHVhbFBhZ2VzKEtpbmQsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBPU0FsbG9jYXRvcjo6
cmVzZXJ2ZVVuY29tbWl0dGVkKHNpemUpOworICAgIHNpemUgPSByb3VuZFVwVG9NdWx0aXBsZU9m
KFdURjo6cGFnZVNpemUoKSwgc2l6ZSk7CisgICAgdm9pZCogcmVzdWx0ID0gT1NBbGxvY2F0b3I6
OnJlc2VydmVBbmRDb21taXQoc2l6ZSk7CisjaWYgIUFTU0VSVF9ESVNBQkxFRAorICAgIGlmIChy
ZXN1bHQpIHsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplIC8gc2l6ZW9mKHVp
bnRwdHJfdCk7ICsraSkKKyAgICAgICAgICAgIEFTU0VSVChzdGF0aWNfY2FzdDx1aW50cHRyX3Qq
PihyZXN1bHQpW2ldID09IDApOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiByZXN1bHQ7CiB9
CiAKIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBiYXNlUHRyLCBzaXplX3Qgc2l6
ZSkKIHsKLSAgICBPU0FsbG9jYXRvcjo6cmVsZWFzZURlY29tbWl0dGVkKGJhc2VQdHIsIHNpemUp
OworICAgIE9TQWxsb2NhdG9yOjpkZWNvbW1pdEFuZFJlbGVhc2UoYmFzZVB0ciwgc2l6ZSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCkBAIC05Myw5ICsxMDEsOSBAQCB2b2lkIGZyZWUo
S2luZCBraW5kLCB2b2lkKiBwKQogICAgIFdURjo6Y29tcGlsZXJGZW5jZSgpOwogfQogCi12b2lk
KiB0cnlBbGxvY2F0ZVZpcnR1YWxQYWdlcyhLaW5kIGtpbmQsIHNpemVfdCBzaXplKQordm9pZCog
dHJ5QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMoS2luZCBraW5kLCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICB2b2lkKiByZXN1bHQgPSBibWFsbG9jOjphcGk6OnRyeUxhcmdlTWVtYWxpZ25WaXJ0dWFs
KFdURjo6cGFnZVNpemUoKSwgc2l6ZSwgYm1hbGxvYzo6aGVhcEtpbmQoa2luZCkpOworICAgIHZv
aWQqIHJlc3VsdCA9IGJtYWxsb2M6OmFwaTo6dHJ5TGFyZ2VaZXJvZWRNZW1hbGlnblZpcnR1YWwo
V1RGOjpwYWdlU2l6ZSgpLCBzaXplLCBibWFsbG9jOjpoZWFwS2luZChraW5kKSk7CiAgICAgV1RG
Ojpjb21waWxlckZlbmNlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL0dpZ2FjYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvR2lnYWNhZ2Uu
aAkocmV2aXNpb24gMjI3NzQ1KQorKysgU291cmNlL1dURi93dGYvR2lnYWNhZ2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE5LDcgKzExOSw3IEBAIGlubGluZSB2b2lkIGFsaWduZWRGcmVlKEtpbmQs
IHZvaWQqIHApIHsKIFdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiB0cnlNYWxsb2MoS2luZCwgc2l6
ZV90IHNpemUpOwogaW5saW5lIHZvaWQgZnJlZShLaW5kLCB2b2lkKiBwKSB7IGZhc3RGcmVlKHAp
OyB9CiAKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiB0cnlBbGxvY2F0ZVZpcnR1YWxQYWdlcyhL
aW5kLCBzaXplX3Qgc2l6ZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogdHJ5QWxsb2NhdGVa
ZXJvZWRWaXJ0dWFsUGFnZXMoS2luZCwgc2l6ZV90IHNpemUpOwogV1RGX0VYUE9SVF9QUklWQVRF
IHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBiYXNlUHRyLCBzaXplX3Qgc2l6ZSk7
CiAKIH0gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCkBAIC0xMzMsNyArMTMzLDcgQEAgV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgYWxpZ25lZEZyZWUoS2luZAogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQq
IHRyeU1hbGxvYyhLaW5kLCBzaXplX3QpOwogV1RGX0VYUE9SVF9QUklWQVRFIHZvaWQgZnJlZShL
aW5kLCB2b2lkKik7CiAKLVdURl9FWFBPUlRfUFJJVkFURSB2b2lkKiB0cnlBbGxvY2F0ZVZpcnR1
YWxQYWdlcyhLaW5kLCBzaXplX3Qgc2l6ZSk7CitXVEZfRVhQT1JUX1BSSVZBVEUgdm9pZCogdHJ5
QWxsb2NhdGVaZXJvZWRWaXJ0dWFsUGFnZXMoS2luZCwgc2l6ZV90IHNpemUpOwogV1RGX0VYUE9S
VF9QUklWQVRFIHZvaWQgZnJlZVZpcnR1YWxQYWdlcyhLaW5kLCB2b2lkKiBiYXNlUHRyLCBzaXpl
X3Qgc2l6ZSk7CiAKIH0gLy8gbmFtZXNwYWNlIEdpZ2FjYWdlCkluZGV4OiBTb3VyY2UvV1RGL3d0
Zi9PU0FsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9y
LmgJKHJldmlzaW9uIDIyNzc0NSkKKysrIFNvdXJjZS9XVEYvd3RmL09TQWxsb2NhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDggQEAgcHVibGljOgogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBhcmUgc3ltbWV0cmljOyByZXNlcnZlVW5jb21taXR0ZWQgYWxsb2NhdGVzIFZNIGluIGFu
IHVuY29tbWl0dGVkIHN0YXRlLAogICAgIC8vIHJlbGVhc2VEZWNvbW1pdHRlZCBzaG91bGQgYmUg
Y2FsbGVkIG9uIGEgcmVnaW9uIG9mIFZNIGFsbG9jYXRlZCBieSBhIHNpbmdsZSByZXNlcnZhdGlv
biwKLSAgICAvLyB0aGUgbWVtb3J5IG11c3QgYWxsIGN1cnJlbnRseSBiZSBpbiBhIGRlY29tbWl0
dGVkIHN0YXRlLgorICAgIC8vIHRoZSBtZW1vcnkgbXVzdCBhbGwgY3VycmVudGx5IGJlIGluIGEg
ZGVjb21taXR0ZWQgc3RhdGUuIHJlc2VydmVVbmNvbW1pdHRlZCByZXR1cm5zIHRvCisgICAgLy8g
eW91IG1lbW9yeSB0aGF0IGlzIHplcm9lZC4KICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IHZvaWQqIHJlc2VydmVVbmNvbW1pdHRlZChzaXplX3QsIFVzYWdlID0gVW5rbm93blVzYWdlLCBi
b29sIHdyaXRhYmxlID0gdHJ1ZSwgYm9vbCBleGVjdXRhYmxlID0gZmFsc2UsIGJvb2wgaW5jbHVk
ZXNHdWFyZFBhZ2VzID0gZmFsc2UpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBzdGF0aWMgdm9p
ZCByZWxlYXNlRGVjb21taXR0ZWQodm9pZCosIHNpemVfdCk7CiAKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyNzg0NSkKKysrIFNvdXJjZS9ibWFsbG9jL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDQ5IEBACisyMDE4LTAxLTMwICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBw
bGUuY29tPgorCisgICAgICAgIFJlcGxhY2UgdHJ5TGFyZ2VNZW1hbGlnblZpcnR1YWwgd2l0aCB0
cnlMYXJnZVplcm9lZE1lbWFsaWduVmlydHVhbCBhbmQgdXNlIGl0IHRvIGFsbG9jYXRlIGxhcmdl
IHplcm9lZCBtZW1vcnkgaW4gV2FzbQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTgyMDY0CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjg0MDEzMj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBh
dGNoIHJlcGxhY2VzIHRoZSB0cnlMYXJnZU1lbWFsaWduVmlydHVhbCBBUEkgd2l0aCB0cnlMYXJn
ZVplcm9lZE1lbWFsaWduVmlydHVhbC4KKyAgICAgICAgQnkgZG9pbmcgdGhhdCwgd2UncmUgYWJs
ZSB0byByZW1vdmUgdGhlIEFsbG9jYXRpb25LaW5kIGVudW0uIFRvIHplcm8gdGhlIG1lbW9yeSwK
KyAgICAgICAgdHJ5TGFyZ2VaZXJvZWRNZW1hbGlnblZpcnR1YWwgdXNlcyBtbWFwKC4uLiBNQVBf
QU5PTiAuLi4pIG92ZXIgcHJldmlvdXNseSBtbWFwcGVkCisgICAgICAgIG1lbW9yeS4gVGhpcyBi
b3RoIHB1cmdlcyB0aGUgYW55IHJlc2lkZW50IG1lbW9yeSBmb3IgdGhlIHZpcnR1YWwgcmFuZ2Ug
YW5kIGVuc3VyZXMKKyAgICAgICAgdGhhdCB0aGUgcGFnZXMgaW4gdGhlIHJhbmdlIGFyZSB6ZXJv
ZWQuIE1vc3QgT1NzIHNob3VsZCBpbXBsZW1lbnQgdGhpcyBieSB0YWtpbmcgYQorICAgICAgICBw
YWdlIGZhdWx0IGFuZCB6ZXJvIGZpbGxpbmcgb24gZmlyc3QgYWNjZXNzLiBUaGVyZWZvcmUsIHRo
aXMgQVBJIGlzIHJldHVybmluZyBwYWdlcworICAgICAgICB0aGF0IHdpbGwgcmVzdWx0IGluIHBh
Z2UgZmF1bHRzIG9uIGZpcnN0IGFjY2Vzcy4gSGVuY2UsIHRoZSBuYW1lICd2aXJ0dWFsJyBpbiB0
aGUgQVBJLgorICAgICAgICBUaGlzIEFQSSBkaWZmZXJzIGZyb20gdGhlIG9sZCBBUEkgaW4gdGhh
dCB1c2VycyBvZiBpdCBuZWVkIG5vdCBjYWxsIG1hZHZpc2UgdGhlbXNlbHZlcy4KKyAgICAgICAg
VGhlIG1lbW9yeSBpcyByZWFkeSB0byBnby4KKworICAgICAgICAqIGJtYWxsb2MueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBibWFsbG9jL0FsbG9jYXRpb25LaW5kLmg6Cisg
ICAgICAgICogYm1hbGxvYy9EZWJ1Z0hlYXAuY3BwOgorICAgICAgICAoYm1hbGxvYzo6RGVidWdI
ZWFwOjptZW1hbGlnbkxhcmdlKToKKyAgICAgICAgKGJtYWxsb2M6OkRlYnVnSGVhcDo6ZnJlZUxh
cmdlKToKKyAgICAgICAgKiBibWFsbG9jL0RlYnVnSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2Mv
SGVhcC5jcHA6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzcGxpdEFuZEFsbG9jYXRlKToKKyAg
ICAgICAgKGJtYWxsb2M6OkhlYXA6OnRyeUFsbG9jYXRlTGFyZ2UpOgorICAgICAgICAoYm1hbGxv
Yzo6SGVhcDo6YWxsb2NhdGVMYXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpzaHJpbmtM
YXJnZSk6CisgICAgICAgIChibWFsbG9jOjpIZWFwOjpkZWFsbG9jYXRlTGFyZ2UpOgorICAgICAg
ICAqIGJtYWxsb2MvSGVhcC5oOgorICAgICAgICAqIGJtYWxsb2MvSXNvUGFnZS5jcHA6CisgICAg
ICAgIChibWFsbG9jOjpJc29QYWdlQmFzZTo6YWxsb2NhdGVQYWdlTWVtb3J5KToKKyAgICAgICAg
KiBibWFsbG9jL1ZNQWxsb2NhdGUuaDoKKyAgICAgICAgKGJtYWxsb2M6OnZtUGFnZVNpemVWaXJ0
dWFsKToKKyAgICAgICAgKGJtYWxsb2M6OnZtVmFsaWRhdGVWaXJ0dWFsKToKKyAgICAgICAgKGJt
YWxsb2M6OnZtWmVyb0FuZFB1cmdlVmlydHVhbCk6CisgICAgICAgICogYm1hbGxvYy9WTUhlYXAu
Y3BwOgorICAgICAgICAoYm1hbGxvYzo6Vk1IZWFwOjp0cnlBbGxvY2F0ZUxhcmdlQ2h1bmspOgor
ICAgICAgICAqIGJtYWxsb2MvVk1IZWFwLmg6CisgICAgICAgICogYm1hbGxvYy9ibWFsbG9jLmNw
cDoKKyAgICAgICAgKGJtYWxsb2M6OmFwaTo6dHJ5TGFyZ2VaZXJvZWRNZW1hbGlnblZpcnR1YWwp
OgorICAgICAgICAoYm1hbGxvYzo6YXBpOjpmcmVlTGFyZ2VWaXJ0dWFsKToKKyAgICAgICAgKGJt
YWxsb2M6OmFwaTo6dHJ5TGFyZ2VNZW1hbGlnblZpcnR1YWwpOiBEZWxldGVkLgorICAgICAgICAq
IGJtYWxsb2MvYm1hbGxvYy5oOgorCiAyMDE4LTAxLTE5ICBLZWl0aCBNaWxsZXIgIDxrZWl0aF9t
aWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEhhdmVJbnRlcm5hbFNESyBpbmNsdWRlcyBzaG91
bGQgYmUgIiNpbmNsdWRlPyIKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNzc0NSkKKysrIFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjEsNyArMjEsNiBAQAogLyogRW5kIFBCWEFnZ3JlZ2F0ZVRhcmdldCBzZWN0aW9uICovCiAKIC8q
IEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCi0JCTBGM0RBMDE0MUYyNjdBQjgwMDM0MkMw
OCAvKiBBbGxvY2F0aW9uS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEYzREEwMTMxRjI2N0FCODAwMzQyQzA4IC8qIEFsbG9jYXRpb25LaW5kLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1MTY3
NzQxRkFENjg1QzAwODIzNkE4IC8qIGJtYWxsb2MuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY1MTY3NzMxRkFENjg1MjAwODIzNkE4IC8qIGJtYWxs
b2MuY3BwICovOyB9OwogCQkwRjU1NDlFRjFGQjU0NzA0MDA3RkY3NUEgLyogSXNvUGFnZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU1NDlFRTFG
QjU0NzAxMDA3RkY3NUEgLyogSXNvUGFnZS5jcHAgKi87IH07CiAJCTBGNUJGMTQ3MUYyMkE4QjEw
MDI5RDkxRCAvKiBIZWFwS2luZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1QkYxNDYxRjIyQThCMTAwMjlEOTFEIC8qIEhlYXBLaW5kLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE3Myw3ICsxNzIs
NiBAQAogLyogRW5kIFBCWENvcHlGaWxlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdp
biBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KLQkJMEYzREEwMTMxRjI2N0FCODAwMzQyQzA4
IC8qIEFsbG9jYXRpb25LaW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IEFsbG9jYXRpb25LaW5kLmg7IHBh
dGggPSBibWFsbG9jL0FsbG9jYXRpb25LaW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNTE2NzczMUZBRDY4NTIwMDgyMzZBOCAvKiBibWFsbG9jLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IGJtYWxsb2MuY3BwOyBwYXRoID0gYm1hbGxvYy9ibWFs
bG9jLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NTQ5RUUxRkI1NDcwMTAw
N0ZGNzVBIC8qIElzb1BhZ2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gSXNvUGFnZS5jcHA7IHBhdGggPSBibWFsbG9jL0lzb1BhZ2UuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjVCRjE0NjFGMjJBOEIxMDAyOUQ5MUQgLyogSGVhcEtpbmQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBuYW1lID0gSGVhcEtpbmQuaDsgcGF0aCA9IGJtYWxsb2MvSGVhcEtpbmQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQ2OCw3ICs0NjYsNiBAQAogCQkxNEQ5REI0RTE3
RjI4NjZFMDBFQUFCNzkgLyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hp
bGRyZW4gPSAoCi0JCQkJMEYzREEwMTMxRjI2N0FCODAwMzQyQzA4IC8qIEFsbG9jYXRpb25LaW5k
LmggKi8sCiAJCQkJMTQwRkEwMDIxOUNFNDI5QzAwRkZEM0M4IC8qIEJ1bXBSYW5nZS5oICovLAog
CQkJCTE0N0RDNkUyMUNBNUI3MEIwMDcyNEU4RCAvKiBDaHVuay5oICovLAogCQkJCTE0MkI0NDM0
MUUyODM5RTcwMDFEQTZFOSAvKiBEZWJ1Z0hlYXAuY3BwICovLApAQCAtNjE0LDcgKzYxMSw2IEBA
CiAJCQkJMTRERDc4OTMxOEY0OEQwRjAwOTUwNzAyIC8qIE9iamVjdFR5cGUuaCBpbiBIZWFkZXJz
ICovLAogCQkJCTE0REQ3OENCMThGNDhENzUwMDk1MDcwMiAvKiBQZXJQcm9jZXNzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkwRjdFQjgyNjFGOTU0MUIwMDBGMUFCQ0IgLyogSXNvQWxsb2NhdG9ySW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJMEYzREEwMTQxRjI2N0FCODAwMzQyQzA4IC8qIEFs
bG9jYXRpb25LaW5kLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDQzE4RjQ4RDc1MDA5NTA3
MDIgLyogUGVyVGhyZWFkLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNERENzhDRDE4RjQ4RDc1MDA5
NTA3MDIgLyogUmFuZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGN0VCODQ0MUY5NTQxQjAwMEYx
QUJDQiAvKiBGcmVlTGlzdC5oIGluIEhlYWRlcnMgKi8sCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL0FsbG9jYXRpb25LaW5kLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9BbGxvY2F0aW9uS2luZC5oCShyZXZpc2lvbiAyMjc3NDUpCisrKyBTb3VyY2UvYm1hbGxv
Yy9ibWFsbG9jL0FsbG9jYXRpb25LaW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsMzYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotbmFtZXNwYWNlIGJtYWxsb2MgewotCi1lbnVtIGNsYXNzIEFsbG9jYXRpb25LaW5k
IHsKLSAgICBQaHlzaWNhbCwKLSAgICBWaXJ0dWFsCi19OwotCi19IC8vIG5hbWVzcGFjZSBibWFs
bG9jCi0KSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5jcHAJKHJldmlzaW9uIDIy
Nzc0NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvRGVidWdIZWFwLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTE1LDE1ICsxMTUsMTMgQEAgdm9pZCBEZWJ1Z0hlYXA6OmZyZWUodm9pZCogb2Jq
ZWN0KQogLy8gRklYTUU6IFRoaXMgbG9va3MgYW4gYXdmdWwgbG90IGxpa2UgdGhlIGNvZGUgaW4g
d3RmL0dpZ2FjYWdlLmNwcCBmb3IgbGFyZ2UgYWxsb2NhdGlvbi4KIC8vIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzUwODYKIAotdm9pZCogRGVidWdIZWFwOjptZW1h
bGlnbkxhcmdlKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBBbGxvY2F0aW9uS2luZCBh
bGxvY2F0aW9uS2luZCkKK3ZvaWQqIERlYnVnSGVhcDo6bWVtYWxpZ25MYXJnZShzaXplX3QgYWxp
Z25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKICAgICBhbGlnbm1lbnQgPSByb3VuZFVwVG9NdWx0aXBs
ZU9mKG1fcGFnZVNpemUsIGFsaWdubWVudCk7CiAgICAgc2l6ZSA9IHJvdW5kVXBUb011bHRpcGxl
T2YobV9wYWdlU2l6ZSwgc2l6ZSk7CiAgICAgdm9pZCogcmVzdWx0ID0gdHJ5Vk1BbGxvY2F0ZShh
bGlnbm1lbnQsIHNpemUpOwogICAgIGlmICghcmVzdWx0KQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKLSAgICBpZiAoYWxsb2NhdGlvbktpbmQgPT0gQWxsb2NhdGlvbktpbmQ6OlZpcnR1YWwpCi0g
ICAgICAgIHZtRGVhbGxvY2F0ZVBoeXNpY2FsUGFnZXMocmVzdWx0LCBzaXplKTsKICAgICB7CiAg
ICAgICAgIHN0ZDo6bG9ja19ndWFyZDxzdGQ6Om11dGV4PiBsb2NrZXIobV9sb2NrKTsKICAgICAg
ICAgbV9zaXplTWFwW3Jlc3VsdF0gPSBzaXplOwpAQCAtMTMxLDcgKzEyOSw3IEBAIHZvaWQqIERl
YnVnSGVhcDo6bWVtYWxpZ25MYXJnZShzaXplX3QgYWwKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci12b2lkIERlYnVnSGVhcDo6ZnJlZUxhcmdlKHZvaWQqIGJhc2UsIEFsbG9jYXRpb25LaW5kKQor
dm9pZCBEZWJ1Z0hlYXA6OmZyZWVMYXJnZSh2b2lkKiBiYXNlKQogewogICAgIGlmICghYmFzZSkK
ICAgICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9EZWJ1Z0hlYXAu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCShyZXZp
c2lvbiAyMjc3NDUpCisrKyBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0RlYnVnSGVhcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNSw3ICsyNSw2IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
QWxsb2NhdGlvbktpbmQuaCIKICNpbmNsdWRlICJTdGF0aWNNdXRleC5oIgogI2luY2x1ZGUgPG11
dGV4PgogI2luY2x1ZGUgPHVub3JkZXJlZF9tYXA+CkBAIC00NSw4ICs0NCw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkKiByZWFsbG9jKHZvaWQqLCBzaXplX3QpOwogICAgIHZvaWQgZnJlZSh2b2lkKik7
CiAgICAgCi0gICAgdm9pZCogbWVtYWxpZ25MYXJnZShzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qs
IEFsbG9jYXRpb25LaW5kKTsKLSAgICB2b2lkIGZyZWVMYXJnZSh2b2lkKiBiYXNlLCBBbGxvY2F0
aW9uS2luZCk7CisgICAgdm9pZCogbWVtYWxpZ25MYXJnZShzaXplX3QgYWxpZ25tZW50LCBzaXpl
X3QpOworICAgIHZvaWQgZnJlZUxhcmdlKHZvaWQqIGJhc2UpOwogCiBwcml2YXRlOgogI2lmIEJP
UyhEQVJXSU4pCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9ibWFsbG9jL0hlYXAuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHJldmlzaW9uIDIyNzc0NSkK
KysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSGVhcC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQy
MCw3ICs0MjAsNyBAQCB2b2lkIEhlYXA6OmFsbG9jYXRlU21hbGxCdW1wUmFuZ2VzQnlPYmplCiAg
ICAgfQogfQogCi1MYXJnZVJhbmdlIEhlYXA6OnNwbGl0QW5kQWxsb2NhdGUoTGFyZ2VSYW5nZSYg
cmFuZ2UsIHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBBbGxvY2F0aW9uS2luZCBhbGxv
Y2F0aW9uS2luZCkKK0xhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxvY2F0ZShMYXJnZVJhbmdl
JiByYW5nZSwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUpCiB7CiAgICAgUkVMRUFTRV9C
QVNTRVJUKGlzQWN0aXZlSGVhcEtpbmQobV9raW5kKSk7CiAKQEAgLTQ0MSwyMCArNDQxLDEwIEBA
IExhcmdlUmFuZ2UgSGVhcDo6c3BsaXRBbmRBbGxvY2F0ZShMYXJnZVIKICAgICAgICAgbmV4dCA9
IHBhaXIuc2Vjb25kOwogICAgIH0KICAgICAKLSAgICBzd2l0Y2ggKGFsbG9jYXRpb25LaW5kKSB7
Ci0gICAgY2FzZSBBbGxvY2F0aW9uS2luZDo6VmlydHVhbDoKLSAgICAgICAgaWYgKHJhbmdlLnBo
eXNpY2FsU2l6ZSgpKQotICAgICAgICAgICAgdm1EZWFsbG9jYXRlUGh5c2ljYWxQYWdlc1Nsb3Bw
eShyYW5nZS5iZWdpbigpLCByYW5nZS5zaXplKCkpOwotICAgICAgICBicmVhazsKLSAgICAgICAg
Ci0gICAgY2FzZSBBbGxvY2F0aW9uS2luZDo6UGh5c2ljYWw6Ci0gICAgICAgIGlmIChyYW5nZS5w
aHlzaWNhbFNpemUoKSA8IHJhbmdlLnNpemUoKSkgewotICAgICAgICAgICAgbV9zY2F2ZW5nZXIt
PnNjaGVkdWxlSWZVbmRlck1lbW9yeVByZXNzdXJlKHJhbmdlLnNpemUoKSk7Ci0gICAgICAgICAg
ICAKLSAgICAgICAgICAgIHZtQWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KHJhbmdlLmJlZ2lu
KCkgKyByYW5nZS5waHlzaWNhbFNpemUoKSwgcmFuZ2Uuc2l6ZSgpIC0gcmFuZ2UucGh5c2ljYWxT
aXplKCkpOwotICAgICAgICAgICAgcmFuZ2Uuc2V0UGh5c2ljYWxTaXplKHJhbmdlLnNpemUoKSk7
Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7CisgICAgaWYgKHJhbmdlLnBoeXNpY2FsU2l6ZSgp
IDwgcmFuZ2Uuc2l6ZSgpKSB7CisgICAgICAgIG1fc2NhdmVuZ2VyLT5zY2hlZHVsZUlmVW5kZXJN
ZW1vcnlQcmVzc3VyZShyYW5nZS5zaXplKCkpOworICAgICAgICB2bUFsbG9jYXRlUGh5c2ljYWxQ
YWdlc1Nsb3BweShyYW5nZS5iZWdpbigpICsgcmFuZ2UucGh5c2ljYWxTaXplKCksIHJhbmdlLnNp
emUoKSAtIHJhbmdlLnBoeXNpY2FsU2l6ZSgpKTsKKyAgICAgICAgcmFuZ2Uuc2V0UGh5c2ljYWxT
aXplKHJhbmdlLnNpemUoKSk7CiAgICAgfQogICAgIAogICAgIGlmIChwcmV2KQpAQCAtNDY5LDE0
ICs0NTksMTQgQEAgTGFyZ2VSYW5nZSBIZWFwOjpzcGxpdEFuZEFsbG9jYXRlKExhcmdlUgogICAg
IHJldHVybiByYW5nZTsKIH0KIAotdm9pZCogSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZShzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90IHNpemUsIEFs
bG9jYXRpb25LaW5kIGFsbG9jYXRpb25LaW5kKQordm9pZCogSGVhcDo6dHJ5QWxsb2NhdGVMYXJn
ZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90
IHNpemUpCiB7CiAgICAgUkVMRUFTRV9CQVNTRVJUKGlzQWN0aXZlSGVhcEtpbmQobV9raW5kKSk7
CiAKICAgICBCQVNTRVJUKGlzUG93ZXJPZlR3byhhbGlnbm1lbnQpKTsKICAgICAKICAgICBpZiAo
bV9kZWJ1Z0hlYXApCi0gICAgICAgIHJldHVybiBtX2RlYnVnSGVhcC0+bWVtYWxpZ25MYXJnZShh
bGlnbm1lbnQsIHNpemUsIGFsbG9jYXRpb25LaW5kKTsKKyAgICAgICAgcmV0dXJuIG1fZGVidWdI
ZWFwLT5tZW1hbGlnbkxhcmdlKGFsaWdubWVudCwgc2l6ZSk7CiAgICAgCiAgICAgbV9zY2F2ZW5n
ZXItPmRpZFN0YXJ0R3Jvd2luZygpOwogICAgIApAQCAtNDk1LDcgKzQ4NSw3IEBAIHZvaWQqIEhl
YXA6OnRyeUFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2cKICAgICAgICAgaWYgKHVzaW5nR2lnYWNh
Z2UoKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgICAgIHJhbmdlID0gUGVy
UHJvY2VzczxWTUhlYXA+OjpnZXQoKS0+dHJ5QWxsb2NhdGVMYXJnZUNodW5rKGFsaWdubWVudCwg
c2l6ZSwgYWxsb2NhdGlvbktpbmQpOworICAgICAgICByYW5nZSA9IFBlclByb2Nlc3M8Vk1IZWFw
Pjo6Z2V0KCktPnRyeUFsbG9jYXRlTGFyZ2VDaHVuayhhbGlnbm1lbnQsIHNpemUpOwogICAgICAg
ICBpZiAoIXJhbmdlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIApAQCAt
NTA0LDEyICs0OTQsMTIgQEAgdm9pZCogSGVhcDo6dHJ5QWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tf
ZwogICAgICAgICByYW5nZSA9IG1fbGFyZ2VGcmVlLnJlbW92ZShhbGlnbm1lbnQsIHNpemUpOwog
ICAgIH0KIAotICAgIHJldHVybiBzcGxpdEFuZEFsbG9jYXRlKHJhbmdlLCBhbGlnbm1lbnQsIHNp
emUsIGFsbG9jYXRpb25LaW5kKS5iZWdpbigpOworICAgIHJldHVybiBzcGxpdEFuZEFsbG9jYXRl
KHJhbmdlLCBhbGlnbm1lbnQsIHNpemUpLmJlZ2luKCk7CiB9CiAKLXZvaWQqIEhlYXA6OmFsbG9j
YXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYgbG9jaywgc2l6ZV90IGFsaWdu
bWVudCwgc2l6ZV90IHNpemUsIEFsbG9jYXRpb25LaW5kIGFsbG9jYXRpb25LaW5kKQordm9pZCog
SGVhcDo6YWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiBsb2NrLCBz
aXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICB2b2lkKiByZXN1bHQgPSB0cnlB
bGxvY2F0ZUxhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSwgYWxsb2NhdGlvbktpbmQpOworICAg
IHZvaWQqIHJlc3VsdCA9IHRyeUFsbG9jYXRlTGFyZ2UobG9jaywgYWxpZ25tZW50LCBzaXplKTsK
ICAgICBSRUxFQVNFX0JBU1NFUlQocmVzdWx0KTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAt
NTMwLDE4ICs1MjAsMTggQEAgdm9pZCBIZWFwOjpzaHJpbmtMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8
UwogCiAgICAgc2l6ZV90IHNpemUgPSBtX2xhcmdlQWxsb2NhdGVkLnJlbW92ZShvYmplY3QuYmVn
aW4oKSk7CiAgICAgTGFyZ2VSYW5nZSByYW5nZSA9IExhcmdlUmFuZ2Uob2JqZWN0LCBzaXplKTsK
LSAgICBzcGxpdEFuZEFsbG9jYXRlKHJhbmdlLCBhbGlnbm1lbnQsIG5ld1NpemUsIEFsbG9jYXRp
b25LaW5kOjpQaHlzaWNhbCk7CisgICAgc3BsaXRBbmRBbGxvY2F0ZShyYW5nZSwgYWxpZ25tZW50
LCBuZXdTaXplKTsKIAogICAgIG1fc2NhdmVuZ2VyLT5zY2hlZHVsZShzaXplKTsKIH0KIAotdm9p
ZCBIZWFwOjpkZWFsbG9jYXRlTGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHZv
aWQqIG9iamVjdCwgQWxsb2NhdGlvbktpbmQgYWxsb2NhdGlvbktpbmQpCit2b2lkIEhlYXA6OmRl
YWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgdm9pZCogb2JqZWN0
KQogewogICAgIGlmIChtX2RlYnVnSGVhcCkKLSAgICAgICAgcmV0dXJuIG1fZGVidWdIZWFwLT5m
cmVlTGFyZ2Uob2JqZWN0LCBhbGxvY2F0aW9uS2luZCk7CisgICAgICAgIHJldHVybiBtX2RlYnVn
SGVhcC0+ZnJlZUxhcmdlKG9iamVjdCk7CiAKICAgICBzaXplX3Qgc2l6ZSA9IG1fbGFyZ2VBbGxv
Y2F0ZWQucmVtb3ZlKG9iamVjdCk7Ci0gICAgbV9sYXJnZUZyZWUuYWRkKExhcmdlUmFuZ2Uob2Jq
ZWN0LCBzaXplLCBhbGxvY2F0aW9uS2luZCA9PSBBbGxvY2F0aW9uS2luZDo6UGh5c2ljYWwgPyBz
aXplIDogMCkpOworICAgIG1fbGFyZ2VGcmVlLmFkZChMYXJnZVJhbmdlKG9iamVjdCwgc2l6ZSwg
c2l6ZSkpOwogICAgIG1fc2NhdmVuZ2VyLT5zY2hlZHVsZShzaXplKTsKIH0KIApJbmRleDogU291
cmNlL2JtYWxsb2MvYm1hbGxvYy9IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2Mv
Ym1hbGxvYy9IZWFwLmgJKHJldmlzaW9uIDIyNzc0NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxs
b2MvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw2IEBACiAjaWZuZGVmIEhlYXBf
aAogI2RlZmluZSBIZWFwX2gKIAotI2luY2x1ZGUgIkFsbG9jYXRpb25LaW5kLmgiCiAjaW5jbHVk
ZSAiQnVtcFJhbmdlLmgiCiAjaW5jbHVkZSAiQ2h1bmsuaCIKICNpbmNsdWRlICJIZWFwS2luZC5o
IgpAQCAtNjcsOSArNjYsOSBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZXJlZlNtYWxsTGluZShzdGQ6
OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+JiwgT2JqZWN0LCBMaW5lQ2FjaGUmKTsKICAgICB2b2lk
IGRlYWxsb2NhdGVMaW5lQ2FjaGUoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIExpbmVD
YWNoZSYpOwogCi0gICAgdm9pZCogYWxsb2NhdGVMYXJnZShzdGQ6OmxvY2tfZ3VhcmQ8U3RhdGlj
TXV0ZXg+Jiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBBbGxvY2F0aW9uS2luZCA9IEFsbG9j
YXRpb25LaW5kOjpQaHlzaWNhbCk7Ci0gICAgdm9pZCogdHJ5QWxsb2NhdGVMYXJnZShzdGQ6Omxv
Y2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90LCBBbGxvY2F0
aW9uS2luZCA9IEFsbG9jYXRpb25LaW5kOjpQaHlzaWNhbCk7Ci0gICAgdm9pZCBkZWFsbG9jYXRl
TGFyZ2Uoc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHZvaWQqLCBBbGxvY2F0aW9uS2lu
ZCA9IEFsbG9jYXRpb25LaW5kOjpQaHlzaWNhbCk7CisgICAgdm9pZCogYWxsb2NhdGVMYXJnZShz
dGQ6OmxvY2tfZ3VhcmQ8U3RhdGljTXV0ZXg+Jiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsK
KyAgICB2b2lkKiB0cnlBbGxvY2F0ZUxhcmdlKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4m
LCBzaXplX3QgYWxpZ25tZW50LCBzaXplX3QpOworICAgIHZvaWQgZGVhbGxvY2F0ZUxhcmdlKHN0
ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCB2b2lkKik7CiAKICAgICBib29sIGlzTGFyZ2Uo
c3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiYsIHZvaWQqKTsKICAgICBzaXplX3QgbGFyZ2VT
aXplKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXRleD4mLCB2b2lkKik7CkBAIC0xMTAsNyArMTA5
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIG1lcmdlTGFyZ2VMZWZ0KEVuZFRhZyomLCBCZWdpblRh
ZyomLCBSYW5nZSYsIGJvb2wmIGluVk1IZWFwKTsKICAgICB2b2lkIG1lcmdlTGFyZ2VSaWdodChF
bmRUYWcqJiwgQmVnaW5UYWcqJiwgUmFuZ2UmLCBib29sJiBpblZNSGVhcCk7CiAKLSAgICBMYXJn
ZVJhbmdlIHNwbGl0QW5kQWxsb2NhdGUoTGFyZ2VSYW5nZSYsIHNpemVfdCBhbGlnbm1lbnQsIHNp
emVfdCwgQWxsb2NhdGlvbktpbmQpOworICAgIExhcmdlUmFuZ2Ugc3BsaXRBbmRBbGxvY2F0ZShM
YXJnZVJhbmdlJiwgc2l6ZV90IGFsaWdubWVudCwgc2l6ZV90KTsKIAogICAgIEhlYXBLaW5kIG1f
a2luZDsKICAgICAKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvSXNvUGFnZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmNwcAkocmV2aXNpb24g
MjI3NzQ1KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9Jc29QYWdlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgYm1hbGxvYyB7CiAKIHZvaWQqIElzb1Bh
Z2VCYXNlOjphbGxvY2F0ZVBhZ2VNZW1vcnkoKQogewotICAgIHJldHVybiBQZXJQcm9jZXNzPFZN
SGVhcD46OmdldCgpLT50cnlBbGxvY2F0ZUxhcmdlQ2h1bmsocGFnZVNpemUsIHBhZ2VTaXplLCBB
bGxvY2F0aW9uS2luZDo6UGh5c2ljYWwpLmJlZ2luKCk7CisgICAgcmV0dXJuIFBlclByb2Nlc3M8
Vk1IZWFwPjo6Z2V0KCktPnRyeUFsbG9jYXRlTGFyZ2VDaHVuayhwYWdlU2l6ZSwgcGFnZVNpemUp
LmJlZ2luKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIGJtYWxsb2MKSW5kZXg6IFNvdXJjZS9ibWFs
bG9jL2JtYWxsb2MvVk1BbGxvY2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvVk1BbGxvY2F0ZS5oCShyZXZpc2lvbiAyMjc3NDUpCisrKyBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL1ZNQWxsb2NhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCwzMSBAQCBp
bmxpbmUgdm9pZCB2bVZhbGlkYXRlUGh5c2ljYWwodm9pZCogcCwgCiAgICAgQkFTU0VSVChwID09
IG1hc2socCwgfih2bVBhZ2VTaXplUGh5c2ljYWwoKSAtIDEpKSk7CiB9CiAKK2lubGluZSBzaXpl
X3Qgdm1QYWdlU2l6ZVZpcnR1YWwoKQoreworICAgIHN0YXRpYyBzaXplX3QgY2FjaGVkOworICAg
IGlmICghY2FjaGVkKQorICAgICAgICBjYWNoZWQgPSBnZXRwYWdlc2l6ZSgpOworICAgIEJBU1NF
UlQoaXNQb3dlck9mVHdvKGNhY2hlZCkpOworICAgIHJldHVybiBjYWNoZWQ7Cit9CisKK2lubGlu
ZSB2b2lkIHZtVmFsaWRhdGVWaXJ0dWFsKHNpemVfdCB2bVNpemUpCit7CisgICAgVU5VU0VEKHZt
U2l6ZSk7CisgICAgQkFTU0VSVCh2bVNpemUpOworICAgIEJBU1NFUlQodm1TaXplID09IHJvdW5k
VXBUb011bHRpcGxlT2Yodm1QYWdlU2l6ZVZpcnR1YWwoKSwgdm1TaXplKSk7Cit9CisKK2lubGlu
ZSB2b2lkIHZtVmFsaWRhdGVWaXJ0dWFsKHZvaWQqIHAsIHNpemVfdCB2bVNpemUpCit7CisgICAg
dm1WYWxpZGF0ZVZpcnR1YWwodm1TaXplKTsKKyAgICAKKyAgICBVTlVTRUQocCk7CisgICAgQkFT
U0VSVChwKTsKKyAgICBCQVNTRVJUKHAgPT0gbWFzayhwLCB+KHZtUGFnZVNpemVWaXJ0dWFsKCkg
LSAxKSkpOworfQorCiBpbmxpbmUgdm9pZCogdHJ5Vk1BbGxvY2F0ZShzaXplX3Qgdm1TaXplKQog
ewogICAgIHZtVmFsaWRhdGUodm1TaXplKTsKQEAgLTEyNyw2ICsxNTIsMTUgQEAgaW5saW5lIHZv
aWQqIHRyeVZNQWxsb2NhdGUoc2l6ZV90IHZtU2l6ZQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K2lubGluZSB2b2lkIHZtWmVyb0FuZFB1cmdlVmlydHVhbCh2b2lkKiBwLCBzaXplX3Qgdm1TaXpl
KQoreworICAgIHZtVmFsaWRhdGVWaXJ0dWFsKHAsIHZtU2l6ZSk7CisgICAgLy8gTUFQX0FOT04g
Z3VhcmFudGVlcyB0aGUgbWVtb3J5IGlzIHplcm9lZC4gVGhpcyB3aWxsIGFsc28gY2F1c2UKKyAg
ICAvLyBwYWdlIGZhdWx0cyBvbiBhY2Nlc3NlcyB0byB0aGlzIHJhbmdlIGZvbGxvd2luZyB0aGlz
IGNhbGwuCisgICAgdm9pZCogcmVzdWx0ID0gbW1hcChwLCB2bVNpemUsIFBST1RfUkVBRCB8IFBS
T1RfV1JJVEUsIE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfRklYRUQgfCBCTUFMTE9DX05P
UkVTRVJWRSwgQk1BTExPQ19WTV9UQUcsIDApOworICAgIFJFTEVBU0VfQkFTU0VSVChyZXN1bHQg
PT0gcCk7Cit9CisKIGlubGluZSB2b2lkKiB2bUFsbG9jYXRlKHNpemVfdCB2bVNpemUpCiB7CiAg
ICAgdm9pZCogcmVzdWx0ID0gdHJ5Vk1BbGxvY2F0ZSh2bVNpemUpOwpJbmRleDogU291cmNlL2Jt
YWxsb2MvYm1hbGxvYy9WTUhlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2Jt
YWxsb2MvVk1IZWFwLmNwcAkocmV2aXNpb24gMjI3NzQ1KQorKysgU291cmNlL2JtYWxsb2MvYm1h
bGxvYy9WTUhlYXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw3IEBAIFZNSGVhcDo6
Vk1IZWFwKHN0ZDo6bG9ja19ndWFyZDxTdGF0aWNNdXQKIHsKIH0KIAotTGFyZ2VSYW5nZSBWTUhl
YXA6OnRyeUFsbG9jYXRlTGFyZ2VDaHVuayhzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwg
QWxsb2NhdGlvbktpbmQgYWxsb2NhdGlvbktpbmQpCitMYXJnZVJhbmdlIFZNSGVhcDo6dHJ5QWxs
b2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplKQogewogICAgIC8v
IFdlIGFsbG9jYXRlIFZNIGluIGFsaWduZWQgbXVsdGlwbGVzIHRvIGluY3JlYXNlIHRoZSBjaGFu
Y2VzIHRoYXQKICAgICAvLyB0aGUgT1Mgd2lsbCBwcm92aWRlIGNvbnRpZ3VvdXMgcmFuZ2VzIHRo
YXQgd2UgY2FuIG1lcmdlLgpAQCAtNTEsOSArNTEsNiBAQCBMYXJnZVJhbmdlIFZNSGVhcDo6dHJ5
QWxsb2NhdGVMYXJnZUNodW5rCiAgICAgaWYgKCFtZW1vcnkpCiAgICAgICAgIHJldHVybiBMYXJn
ZVJhbmdlKCk7CiAgICAgCi0gICAgaWYgKGFsbG9jYXRpb25LaW5kID09IEFsbG9jYXRpb25LaW5k
OjpWaXJ0dWFsKQotICAgICAgICB2bURlYWxsb2NhdGVQaHlzaWNhbFBhZ2VzU2xvcHB5KG1lbW9y
eSwgc2l6ZSk7Ci0KICAgICBDaHVuayogY2h1bmsgPSBzdGF0aWNfY2FzdDxDaHVuayo+KG1lbW9y
eSk7CiAgICAgCiAjaWYgQk9TKERBUldJTikKSW5kZXg6IFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Vk1IZWFwLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaAko
cmV2aXNpb24gMjI3NzQ1KQorKysgU291cmNlL2JtYWxsb2MvYm1hbGxvYy9WTUhlYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtMjYsNyArMjYsNiBAQAogI2lmbmRlZiBWTUhlYXBfaAogI2RlZmluZSBW
TUhlYXBfaAogCi0jaW5jbHVkZSAiQWxsb2NhdGlvbktpbmQuaCIKICNpbmNsdWRlICJDaHVuay5o
IgogI2luY2x1ZGUgIkZpeGVkVmVjdG9yLmgiCiAjaW5jbHVkZSAiSGVhcEtpbmQuaCIKQEAgLTQ5
LDcgKzQ4LDcgQEAgY2xhc3MgVk1IZWFwIHsKIHB1YmxpYzoKICAgICBWTUhlYXAoc3RkOjpsb2Nr
X2d1YXJkPFN0YXRpY011dGV4PiYpOwogICAgIAotICAgIExhcmdlUmFuZ2UgdHJ5QWxsb2NhdGVM
YXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCwgQWxsb2NhdGlvbktpbmQpOworICAg
IExhcmdlUmFuZ2UgdHJ5QWxsb2NhdGVMYXJnZUNodW5rKHNpemVfdCBhbGlnbm1lbnQsIHNpemVf
dCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBibWFsbG9jCkluZGV4OiBTb3VyY2UvYm1hbGxvYy9i
bWFsbG9jL2JtYWxsb2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Ym1hbGxvYy5jcHAJKHJldmlzaW9uIDIyNzc0NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2Mv
Ym1hbGxvYy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDEyICszOSwyNiBAQCB2b2lkIGZyZWVP
dXRPZkxpbmUodm9pZCogb2JqZWN0LCBIZWFwS2luCiAgICAgZnJlZShvYmplY3QsIGtpbmQpOwog
fQogCi12b2lkKiB0cnlMYXJnZU1lbWFsaWduVmlydHVhbChzaXplX3QgYWxpZ25tZW50LCBzaXpl
X3Qgc2l6ZSwgSGVhcEtpbmQga2luZCkKK3ZvaWQqIHRyeUxhcmdlWmVyb2VkTWVtYWxpZ25WaXJ0
dWFsKHNpemVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBIZWFwS2luZCBraW5kKQogeworICAg
IEJBU1NFUlQoaXNQb3dlck9mVHdvKGFsaWdubWVudCkpOworCisgICAgc2l6ZV90IHZpcnR1YWxQ
YWdlU2l6ZSA9IHZtUGFnZVNpemVWaXJ0dWFsKCk7CisgICAgYWxpZ25tZW50ID0gcm91bmRVcFRv
TXVsdGlwbGVPZih2aXJ0dWFsUGFnZVNpemUsIGFsaWdubWVudCk7CisgICAgc2l6ZSA9IHJvdW5k
VXBUb011bHRpcGxlT2YodmlydHVhbFBhZ2VTaXplLCBzaXplKTsKKwogICAgIGtpbmQgPSBtYXBU
b0FjdGl2ZUhlYXBLaW5kKGtpbmQpOwogICAgIEhlYXAmIGhlYXAgPSBQZXJQcm9jZXNzPFBlckhl
YXBLaW5kPEhlYXA+Pjo6Z2V0KCktPmF0KGtpbmQpOwotICAgIHN0ZDo6bG9ja19ndWFyZDxTdGF0
aWNNdXRleD4gbG9jayhIZWFwOjptdXRleCgpKTsKLSAgICByZXR1cm4gaGVhcC50cnlBbGxvY2F0
ZUxhcmdlKGxvY2ssIGFsaWdubWVudCwgc2l6ZSwgQWxsb2NhdGlvbktpbmQ6OlZpcnR1YWwpOwor
CisgICAgdm9pZCogcmVzdWx0OworICAgIHsKKyAgICAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRp
Y011dGV4PiBsb2NrKEhlYXA6Om11dGV4KCkpOworICAgICAgICByZXN1bHQgPSBoZWFwLnRyeUFs
bG9jYXRlTGFyZ2UobG9jaywgYWxpZ25tZW50LCBzaXplKTsKKyAgICB9CisKKyAgICBpZiAocmVz
dWx0KQorICAgICAgICB2bVplcm9BbmRQdXJnZVZpcnR1YWwocmVzdWx0LCBzaXplKTsKKyAgICBy
ZXR1cm4gcmVzdWx0OwogfQogCiB2b2lkIGZyZWVMYXJnZVZpcnR1YWwodm9pZCogb2JqZWN0LCBI
ZWFwS2luZCBraW5kKQpAQCAtNTIsNyArNjYsNyBAQCB2b2lkIGZyZWVMYXJnZVZpcnR1YWwodm9p
ZCogb2JqZWN0LCBIZWFwCiAgICAga2luZCA9IG1hcFRvQWN0aXZlSGVhcEtpbmQoa2luZCk7CiAg
ICAgSGVhcCYgaGVhcCA9IFBlclByb2Nlc3M8UGVySGVhcEtpbmQ8SGVhcD4+OjpnZXQoKS0+YXQo
a2luZCk7CiAgICAgc3RkOjpsb2NrX2d1YXJkPFN0YXRpY011dGV4PiBsb2NrKEhlYXA6Om11dGV4
KCkpOwotICAgIGhlYXAuZGVhbGxvY2F0ZUxhcmdlKGxvY2ssIG9iamVjdCwgQWxsb2NhdGlvbktp
bmQ6OlZpcnR1YWwpOworICAgIGhlYXAuZGVhbGxvY2F0ZUxhcmdlKGxvY2ssIG9iamVjdCk7CiB9
CiAKIHZvaWQgc2NhdmVuZ2UoKQpJbmRleDogU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ibWFsbG9j
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL2JtYWxsb2MvYm1hbGxvYy9ibWFsbG9jLmgJKHJldmlz
aW9uIDIyNzc0NSkKKysrIFNvdXJjZS9ibWFsbG9jL2JtYWxsb2MvYm1hbGxvYy5oCSh3b3JraW5n
IGNvcHkpCkBAIC02OSw4ICs2OSwxMSBAQCBpbmxpbmUgdm9pZCogcmVhbGxvYyh2b2lkKiBvYmpl
Y3QsIHNpemVfCiAgICAgcmV0dXJuIENhY2hlOjpyZWFsbG9jYXRlKGtpbmQsIG9iamVjdCwgbmV3
U2l6ZSk7CiB9CiAKLS8vIFJldHVybnMgbnVsbCBmb3IgZmFpbHVyZQotQkVYUE9SVCB2b2lkKiB0
cnlMYXJnZU1lbWFsaWduVmlydHVhbChzaXplX3QgYWxpZ25tZW50LCBzaXplX3Qgc2l6ZSwgSGVh
cEtpbmQga2luZCA9IEhlYXBLaW5kOjpQcmltYXJ5KTsKKy8vIFJldHVybnMgbnVsbCBvbiBmYWls
dXJlLgorLy8gVGhpcyBBUEkgd2lsbCBnaXZlIHlvdSB6ZXJvZWQgcGFnZXMgdGhhdCBhcmUgcmVh
ZHkgdG8gYmUgdXNlZC4gVGhlc2UgcGFnZXMKKy8vIHdpbGwgcGFnZSBmYXVsdCBvbiBmaXJzdCBh
Y2Nlc3MuIEl0IHJldHVybnMgdG8geW91IG1lbW9yeSB0aGF0IGluaXRpYWxseSBvbmx5CisvLyB1
c2VzIHVwIHZpcnR1YWwgYWRkcmVzcyBzcGFjZSwgbm90IGBzaXplYCBieXRlcyBvZiBwaHlzaWNh
bCBtZW1vcnkuCitCRVhQT1JUIHZvaWQqIHRyeUxhcmdlWmVyb2VkTWVtYWxpZ25WaXJ0dWFsKHNp
emVfdCBhbGlnbm1lbnQsIHNpemVfdCBzaXplLCBIZWFwS2luZCBraW5kID0gSGVhcEtpbmQ6OlBy
aW1hcnkpOwogCiBpbmxpbmUgdm9pZCBmcmVlKHZvaWQqIG9iamVjdCwgSGVhcEtpbmQga2luZCA9
IEhlYXBLaW5kOjpQcmltYXJ5KQogewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332835</attachid>
            <date>2018-01-31 18:48:41 -0800</date>
            <delta_ts>2018-01-31 19:06:46 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10499</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjc5NDcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTMxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdoZW4gQnl0ZWNvZGVQYXJzZXIgaW5zZXJ0cyBVbnJlYWNoYWJsZSBh
ZnRlciBGb3JjZU9TUkV4aXQgaXQgbmVlZHMgdG8gdXBkYXRlIEFyZ3VtZW50UG9zaXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzNjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2OTMyNDY2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ZsdXNoLWFmdGVyLWZvcmNlLWV4aXQt
aW4tYnl0ZWNvZGVwYXJzZXItbmVlZHMtdG8tdXBkYXRlLWFyZ3VtZW50LXBvc2l0aW9ucy5qczog
QWRkZWQuCisgICAgICAgIChydW5OZWFyU3RhY2tMaW1pdC50KToKKyAgICAgICAgKHJ1bk5lYXJT
dGFja0xpbWl0KToKKyAgICAgICAgKHRyeS5ydW5OZWFyU3RhY2tMaW1pdCk6CisgICAgICAgIChj
YXRjaCk6CisKIDIwMTgtMDEtMzEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgSlNDIGluY29ycmVjdGx5IGludGVycHJldGluZyBzY3JpcHQsIHNldHMgR2xvYmFs
IFByb3BlcnR5IGluc3RlYWQgb2YgR2xvYmFsIExleGljYWwgdmFyaWFibGUgKExpdGVyYWxQYXJz
ZXIgLyBKU09OUCBwYXRoKQpJbmRleDogSlNUZXN0cy9zdHJlc3MvZmx1c2gtYWZ0ZXItZm9yY2Ut
ZXhpdC1pbi1ieXRlY29kZXBhcnNlci1uZWVkcy10by11cGRhdGUtYXJndW1lbnQtcG9zaXRpb25z
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2ZsdXNoLWFmdGVyLWZvcmNlLWV4aXQt
aW4tYnl0ZWNvZGVwYXJzZXItbmVlZHMtdG8tdXBkYXRlLWFyZ3VtZW50LXBvc2l0aW9ucy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9mbHVzaC1hZnRlci1mb3JjZS1leGl0LWlu
LWJ5dGVjb2RlcGFyc2VyLW5lZWRzLXRvLXVwZGF0ZS1hcmd1bWVudC1wb3NpdGlvbnMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlQ29uY3Vy
cmVudEdDPTAiLCAiLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9s
ZEZvckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwg
Ii0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRG
b3JPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVw
PTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uPTIwIiwgIi0tbWF4aW11bUV2YWxD
YWNoZWFibGVTb3VyY2VMZW5ndGg9MTUwMDAwIiwgIi0tbWF4UGVyVGhyZWFkU3RhY2tVc2FnZT0x
MDQ4NTc2IikKKworZnVuY3Rpb24gcnVuTmVhclN0YWNrTGltaXQoZikgeworICAgIGZ1bmN0aW9u
IHQoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdCgpOworICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZigpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiB0KCk7Cit9OworCitydW5OZWFyU3RhY2tMaW1pdCgoKSA9PiB7IH0pOworcnVu
TmVhclN0YWNrTGltaXQoKCkgPT4geyB9KTsKKworZnVuY3Rpb24gZjIoYSwgYikgeworICAgICd1
c2Ugc3RyaWN0JzsKKyAgICB0cnkgeworICAgICAgICBhLnB1c2goYXJndW1lbnRzWzBdICsgYXJn
dW1lbnRzWzJdICsgYSArIHVuZGVmaW5lZFZhcmlhYmxlKTsKKyAgICB9IGNhdGNoIChlKSB7IH0K
K30KKwordHJ5IHsKKyAgICBydW5OZWFyU3RhY2tMaW1pdCgoKSA9PiB7CisgICAgICAgIHJldHVy
biBmMigxLCAyLCAzKTsKKyAgICB9KTsKK30gY2F0Y2ggKGUpIHt9CisKK3RyeSB7CisgICAgcnVu
TmVhclN0YWNrTGltaXQoKTsKK30gY2F0Y2ggeyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyNzkyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0wMS0zMSAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIEJ5dGVjb2RlUGFyc2VyIGluc2Vy
dHMgVW5yZWFjaGFibGUgYWZ0ZXIgRm9yY2VPU1JFeGl0IGl0IG5lZWRzIHRvIHVwZGF0ZSBBcmd1
bWVudFBvc2l0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyMzY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjkzMjQ2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHByZXNlcnZpbmcg
bGl2ZW5lc3Mgd2hlbiBpbnNlcnRpbmcgVW5yZWFjaGFibGUgbm9kZXMgYWZ0ZXIgRm9yY2VPU1JF
eGl0LAorICAgICAgICB3ZSBtdXN0IGFkZCB0aGUgVmFyaWFibGVBY2Nlc3NEYXRhIHRvIHRoZSBn
aXZlbiBhcmd1bWVudCBwb3NpdGlvbi4gT3RoZXJ3aXNlLAorICAgICAgICB3ZSBtYXkgZW5kIHVw
IHdpdGggYSBWYXJpYWJsZUFjY2Vzc0RhdGEgdGhhdCBkb2Vzbid0IHJlc3BlY3QgdGhlIHNob3Vs
ZE5ldmVyVW5ib3ggYml0LgorICAgICAgICBJZiB3ZSBlbmQgdXAgd2l0aCBzdWNoIGEgc2l0dWF0
aW9uLCBpdCBjYW4gbGVhZCB0byBpbnZhbGlkIElSIGFmdGVyIHRoZQorICAgICAgICBhcmd1bWVu
dHMgZWxpbWluYXRpb24gcGhhc2Ugb3B0aW1pemVzIGEgR2V0QnlWYWwgdG8gYSBHZXRTdGFjay4K
KworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmZsdXNoRm9yVGVybWluYWxJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpm
bHVzaEZvclRlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKToKKwogMjAxOC0wMS0zMSAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYW5vbmljYWxpemUgYXF1aXJpbmcgdGhlIEpT
Q2VsbCBsb2NrLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyNzkyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjUsMTcgKzUy
NSwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKCFtX2dyYXBoLmhhc0RlYnVnZ2Vy
RW5hYmxlZCgpKTsKICAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzQ2xvc3VyZUNhbGwpCi0gICAgICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QocmVtYXBP
cGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpKTsKKyAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVDYWxsRnJhbWUs
IHJlbWFwT3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90OjpjYWxsZWUpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkKLSAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChyZW1hcE9wZXJhbmQoaW5saW5l
Q2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkp
KTsKKyAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVDYWxsRnJhbWUsIHJlbWFw
T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG51bUFyZ3VtZW50
cyA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lKS0+bnVtUGFy
YW1ldGVycygpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBudW1Bcmd1bWVu
dHM7IGFyZ3VtZW50LS07KQotICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QocmVtYXBPcGVyYW5k
KGlubGluZUNhbGxGcmFtZSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKSk7
CisgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVDYWxsRnJhbWUsIHJlbWFwT3BlcmFu
ZChpbmxpbmVDYWxsRnJhbWUsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkp
OwogCiAgICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpKQotICAgICAgICAg
ICAgYWRkRmx1c2hEaXJlY3QobV9ncmFwaC5tX2NvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKTsK
KyAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KGlubGluZUNhbGxGcmFtZSwgbV9ncmFwaC5tX2Nv
ZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKTsKICAgICB9CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBBZGRGbHVzaERpcmVjdEZ1bmMsIHR5cGVuYW1lIEFkZFBoYW50b21Mb2NhbERpcmVjdEZ1bmM+
CkBAIC01NTMsNyArNTUzLDcgQEAgcHJpdmF0ZToKIAogICAgICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgbG9jYWwgPSBjb2RlQmxvY2stPm1fbnVtQ2FsbGVlTG9jYWxzOyBsb2NhbC0tOykgewog
ICAgICAgICAgICAgICAgICAgICBpZiAobGl2ZW5lc3NBdEJ5dGVjb2RlW2xvY2FsXSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGFkZFBoYW50b21Mb2NhbERpcmVjdChyZW1hcE9wZXJhbmQoaW5s
aW5lQ2FsbEZyYW1lLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkpKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGFkZFBoYW50b21Mb2NhbERpcmVjdChpbmxpbmVDYWxsRnJhbWUsIHJl
bWFwT3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIHZpcnR1YWxSZWdpc3RlckZvckxvY2FsKGxvY2Fs
KSkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwogICAgIH0KQEAgLTYwMCwx
NCArNjAwLDE0IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGZsdXNoKElubGluZVN0YWNrRW50cnkq
IGlubGluZVN0YWNrRW50cnkpCiAgICAgewotICAgICAgICBhdXRvIGFkZEZsdXNoRGlyZWN0ID0g
WyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7IGZsdXNoRGlyZWN0KHJlZyk7IH07CisgICAgICAg
IGF1dG8gYWRkRmx1c2hEaXJlY3QgPSBbJl0gKElubGluZUNhbGxGcmFtZSosIFZpcnR1YWxSZWdp
c3RlciByZWcpIHsgZmx1c2hEaXJlY3QocmVnKTsgfTsKICAgICAgICAgZmx1c2hJbXBsKGlubGlu
ZVN0YWNrRW50cnktPm1faW5saW5lQ2FsbEZyYW1lLCBhZGRGbHVzaERpcmVjdCk7CiAgICAgfQog
CiAgICAgdm9pZCBmbHVzaEZvclRlcm1pbmFsKCkKICAgICB7Ci0gICAgICAgIGF1dG8gYWRkRmx1
c2hEaXJlY3QgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciByZWcpIHsgZmx1c2hEaXJlY3QocmVnKTsg
fTsKLSAgICAgICAgYXV0byBhZGRQaGFudG9tTG9jYWxEaXJlY3QgPSBbJl0gKFZpcnR1YWxSZWdp
c3RlciByZWcpIHsgcGhhbnRvbUxvY2FsRGlyZWN0KHJlZyk7IH07CisgICAgICAgIGF1dG8gYWRk
Rmx1c2hEaXJlY3QgPSBbJl0gKElubGluZUNhbGxGcmFtZSosIFZpcnR1YWxSZWdpc3RlciByZWcp
IHsgZmx1c2hEaXJlY3QocmVnKTsgfTsKKyAgICAgICAgYXV0byBhZGRQaGFudG9tTG9jYWxEaXJl
Y3QgPSBbJl0gKElubGluZUNhbGxGcmFtZSosIFZpcnR1YWxSZWdpc3RlciByZWcpIHsgcGhhbnRv
bUxvY2FsRGlyZWN0KHJlZyk7IH07CiAgICAgICAgIGZsdXNoRm9yVGVybWluYWxJbXBsKGN1cnJl
bnRDb2RlT3JpZ2luKCksIGFkZEZsdXNoRGlyZWN0LCBhZGRQaGFudG9tTG9jYWxEaXJlY3QpOwog
ICAgIH0KIApAQCAtMTAzMiw2ICsxMDMyLDggQEAgcHJpdmF0ZToKICAgICBGcm96ZW5WYWx1ZSog
bV9jb25zdGFudE9uZTsKICAgICBWZWN0b3I8Tm9kZSosIDE2PiBtX2NvbnN0YW50czsKIAorICAg
IEhhc2hNYXA8SW5saW5lQ2FsbEZyYW1lKiwgVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24qPiwgV1RG
OjpEZWZhdWx0SGFzaDxJbmxpbmVDYWxsRnJhbWUqPjo6SGFzaCwgV1RGOjpOdWxsYWJsZUhhc2hU
cmFpdHM8SW5saW5lQ2FsbEZyYW1lKj4+IG1faW5saW5lQ2FsbEZyYW1lVG9Bcmd1bWVudFBvc2l0
aW9uczsKKwogICAgIC8vIFRoZSBudW1iZXIgb2YgYXJndW1lbnRzIHBhc3NlZCB0byB0aGUgZnVu
Y3Rpb24uCiAgICAgdW5zaWduZWQgbV9udW1Bcmd1bWVudHM7CiAgICAgLy8gVGhlIG51bWJlciBv
ZiBsb2NhbHMgKHZhcnMgKyB0ZW1wb3JhcmllcykgdXNlZCBpbiB0aGUgZnVuY3Rpb24uCkBAIC02
NDU0LDEzICs2NDU2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGlu
ZQogICAgIH0KICAgICAKICAgICBpbnQgYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4
dXAgPSBzdGQ6Om1heDxpbnQ+KGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzLCBjb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7Ci0gICAgbV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1l
bnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXApOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRoRml4dXA7ICsraSkgewotICAgICAgICBieXRl
Q29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmFwcGVuZChBcmd1bWVudFBv
c2l0aW9uKCkpOwotICAgICAgICBBcmd1bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uID0g
JmJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMubGFzdCgpOwotICAg
ICAgICBtX2FyZ3VtZW50UG9zaXRpb25zW2ldID0gYXJndW1lbnRQb3NpdGlvbjsKLSAgICB9Ci0g
ICAgCisKICAgICBpZiAobV9jYWxsZXIpIHsKICAgICAgICAgLy8gSW5saW5lIGNhc2UuCiAgICAg
ICAgIEFTU0VSVChjb2RlQmxvY2sgIT0gYnl0ZUNvZGVQYXJzZXItPm1fY29kZUJsb2NrKTsKQEAg
LTY1MTEsNiArNjUwNywxNCBAQCBCeXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5s
aW5lCiAgICAgICAgICAgICBtX3N3aXRjaFJlbWFwW2ldID0gaTsKICAgICB9CiAgICAgCisgICAg
bV9hcmd1bWVudFBvc2l0aW9ucy5yZXNpemUoYXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXNXaXRo
Rml4dXApOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudEluY2x1ZGluZ1Ro
aXNXaXRoRml4dXA7ICsraSkgeworICAgICAgICBieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2Fy
Z3VtZW50UG9zaXRpb25zLmFwcGVuZChBcmd1bWVudFBvc2l0aW9uKCkpOworICAgICAgICBBcmd1
bWVudFBvc2l0aW9uKiBhcmd1bWVudFBvc2l0aW9uID0gJmJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBo
Lm1fYXJndW1lbnRQb3NpdGlvbnMubGFzdCgpOworICAgICAgICBtX2FyZ3VtZW50UG9zaXRpb25z
W2ldID0gYXJndW1lbnRQb3NpdGlvbjsKKyAgICB9CisgICAgYnl0ZUNvZGVQYXJzZXItPm1faW5s
aW5lQ2FsbEZyYW1lVG9Bcmd1bWVudFBvc2l0aW9ucy5hZGQobV9pbmxpbmVDYWxsRnJhbWUsIG1f
YXJndW1lbnRQb3NpdGlvbnMpOworICAgIAogICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZVN0
YWNrVG9wID0gdGhpczsKIH0KIApAQCAtNjY2MSwxNyArNjY2NSwyNyBAQCB2b2lkIEJ5dGVDb2Rl
UGFyc2VyOjpwYXJzZSgpCiAKICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0aW9uU2V0Lmluc2Vy
dE5vZGUoYmxvY2stPnNpemUoKSwgU3BlY05vbmUsIEV4aXRPSywgZW5kT3JpZ2luKTsKIAotICAg
ICAgICAgICAgICAgICAgICBhdXRvIGluc2VydExpdmVuZXNzUHJlc2VydmluZ09wID0gWyZdIChO
b2RlVHlwZSBvcCwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgYXV0byBpbnNlcnRMaXZlbmVzc1ByZXNlcnZpbmdPcCA9IFsmXSAoSW5saW5lQ2FsbEZyYW1l
KiBpbmxpbmVDYWxsRnJhbWUsIE5vZGVUeXBlIG9wLCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkg
ewogICAgICAgICAgICAgICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9
IG1hcHBpbmcub3BlcmFuZChvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgh
dmFyaWFibGUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSA9IG5ld1Zh
cmlhYmxlQWNjZXNzRGF0YShvcGVyYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
YXBwaW5nLm9wZXJhbmQob3BlcmFuZCkgPSB2YXJpYWJsZTsKICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIGFyZ3VtZW50
ID0gb3BlcmFuZCAtIChpbmxpbmVDYWxsRnJhbWUgPyBpbmxpbmVDYWxsRnJhbWUtPnN0YWNrT2Zm
c2V0IDogMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYXJndW1lbnQuaXNBcmd1bWVu
dCgpICYmICFhcmd1bWVudC5pc0hlYWRlcigpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgVmVjdG9yPEFyZ3VtZW50UG9zaXRpb24qPiYgYXJndW1lbnRzID0gbV9pbmxpbmVD
YWxsRnJhbWVUb0FyZ3VtZW50UG9zaXRpb25zLmdldChpbmxpbmVDYWxsRnJhbWUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudC50b0FyZ3VtZW50KCldLT5h
ZGRWYXJpYWJsZSh2YXJpYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKGJsb2NrLT5zaXplKCks
IFNwZWNOb25lLCBvcCwgZW5kT3JpZ2luLCBPcEluZm8odmFyaWFibGUpKTsKICAgICAgICAgICAg
ICAgICAgICAgfTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRGbHVzaERpcmVjdCA9IFsm
XSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsgaW5zZXJ0TGl2ZW5lc3NQcmVzZXJ2aW5nT3Ao
Rmx1c2gsIG9wZXJhbmQpOyB9OwotICAgICAgICAgICAgICAgICAgICBhdXRvIGFkZFBoYW50b21M
b2NhbERpcmVjdCA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsgaW5zZXJ0TGl2ZW5l
c3NQcmVzZXJ2aW5nT3AoUGhhbnRvbUxvY2FsLCBvcGVyYW5kKTsgfTsKLQorICAgICAgICAgICAg
ICAgICAgICBhdXRvIGFkZEZsdXNoRGlyZWN0ID0gWyZdIChJbmxpbmVDYWxsRnJhbWUqIGlubGlu
ZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGluc2VydExpdmVuZXNzUHJlc2VydmluZ09wKGlubGluZUNhbGxGcmFtZSwgRmx1c2gs
IG9wZXJhbmQpOworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBh
dXRvIGFkZFBoYW50b21Mb2NhbERpcmVjdCA9IFsmXSAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVD
YWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBpbnNlcnRMaXZlbmVzc1ByZXNlcnZpbmdPcChpbmxpbmVDYWxsRnJhbWUsIFBoYW50b21M
b2NhbCwgb3BlcmFuZCk7CisgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAg
ICAgIGZsdXNoRm9yVGVybWluYWxJbXBsKGVuZE9yaWdpbi5zZW1hbnRpYywgYWRkRmx1c2hEaXJl
Y3QsIGFkZFBoYW50b21Mb2NhbERpcmVjdCk7CiAKICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0
aW9uU2V0Lmluc2VydE5vZGUoYmxvY2stPnNpemUoKSwgU3BlY05vbmUsIFVucmVhY2hhYmxlLCBl
bmRPcmlnaW4pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332839</attachid>
            <date>2018-01-31 19:06:46 -0800</date>
            <delta_ts>2018-02-01 11:22:29 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10491</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjc5NDcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTMxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdoZW4gQnl0ZWNvZGVQYXJzZXIgaW5zZXJ0cyBVbnJlYWNoYWJsZSBh
ZnRlciBGb3JjZU9TUkV4aXQgaXQgbmVlZHMgdG8gdXBkYXRlIEFyZ3VtZW50UG9zaXRpb25zCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODIzNjgKKyAg
ICAgICAgPHJkYXI6Ly9wcm9ibGVtLzM2OTMyNDY2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2ZsdXNoLWFmdGVyLWZvcmNlLWV4aXQt
aW4tYnl0ZWNvZGVwYXJzZXItbmVlZHMtdG8tdXBkYXRlLWFyZ3VtZW50LXBvc2l0aW9ucy5qczog
QWRkZWQuCisgICAgICAgIChydW5OZWFyU3RhY2tMaW1pdC50KToKKyAgICAgICAgKHJ1bk5lYXJT
dGFja0xpbWl0KToKKyAgICAgICAgKHRyeS5ydW5OZWFyU3RhY2tMaW1pdCk6CisgICAgICAgIChj
YXRjaCk6CisKIDIwMTgtMDEtMzEgIFNhYW0gQmFyYXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAK
ICAgICAgICAgSlNDIGluY29ycmVjdGx5IGludGVycHJldGluZyBzY3JpcHQsIHNldHMgR2xvYmFs
IFByb3BlcnR5IGluc3RlYWQgb2YgR2xvYmFsIExleGljYWwgdmFyaWFibGUgKExpdGVyYWxQYXJz
ZXIgLyBKU09OUCBwYXRoKQpJbmRleDogSlNUZXN0cy9zdHJlc3MvZmx1c2gtYWZ0ZXItZm9yY2Ut
ZXhpdC1pbi1ieXRlY29kZXBhcnNlci1uZWVkcy10by11cGRhdGUtYXJndW1lbnQtcG9zaXRpb25z
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvc3RyZXNzL2ZsdXNoLWFmdGVyLWZvcmNlLWV4aXQt
aW4tYnl0ZWNvZGVwYXJzZXItbmVlZHMtdG8tdXBkYXRlLWFyZ3VtZW50LXBvc2l0aW9ucy5qcwko
bm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9mbHVzaC1hZnRlci1mb3JjZS1leGl0LWlu
LWJ5dGVjb2RlcGFyc2VyLW5lZWRzLXRvLXVwZGF0ZS1hcmd1bWVudC1wb3NpdGlvbnMuanMJKHdv
cmtpbmcgY29weSkKQEAgLTAsMCArMSwzMiBAQAorLy9AIHJ1bkRlZmF1bHQoIi0tdXNlQ29uY3Vy
cmVudEdDPTAiLCAiLS10aHJlc2hvbGRGb3JKSVRBZnRlcldhcm1VcD0xMCIsICItLXRocmVzaG9s
ZEZvckpJVFNvb249MTAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyV2FybVVwPTIwIiwg
Ii0tdGhyZXNob2xkRm9yT3B0aW1pemVBZnRlckxvbmdXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRG
b3JPcHRpbWl6ZVNvb249MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZUFmdGVyV2FybVVw
PTIwIiwgIi0tdGhyZXNob2xkRm9yRlRMT3B0aW1pemVTb29uPTIwIiwgIi0tbWF4aW11bUV2YWxD
YWNoZWFibGVTb3VyY2VMZW5ndGg9MTUwMDAwIiwgIi0tbWF4UGVyVGhyZWFkU3RhY2tVc2FnZT0x
MDQ4NTc2IikKKworZnVuY3Rpb24gcnVuTmVhclN0YWNrTGltaXQoZikgeworICAgIGZ1bmN0aW9u
IHQoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gdCgpOworICAgICAgICB9
IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gZigpOworICAgICAgICB9CisgICAgfQor
ICAgIHJldHVybiB0KCk7Cit9OworCitydW5OZWFyU3RhY2tMaW1pdCgoKSA9PiB7IH0pOworcnVu
TmVhclN0YWNrTGltaXQoKCkgPT4geyB9KTsKKworZnVuY3Rpb24gZjIoYSwgYikgeworICAgICd1
c2Ugc3RyaWN0JzsKKyAgICB0cnkgeworICAgICAgICBhLnB1c2goYXJndW1lbnRzWzBdICsgYXJn
dW1lbnRzWzJdICsgYSArIHVuZGVmaW5lZFZhcmlhYmxlKTsKKyAgICB9IGNhdGNoIChlKSB7IH0K
K30KKwordHJ5IHsKKyAgICBydW5OZWFyU3RhY2tMaW1pdCgoKSA9PiB7CisgICAgICAgIHJldHVy
biBmMigxLCAyLCAzKTsKKyAgICB9KTsKK30gY2F0Y2ggKGUpIHt9CisKK3RyeSB7CisgICAgcnVu
TmVhclN0YWNrTGltaXQoKTsKK30gY2F0Y2ggeyB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cJKHJldmlzaW9uIDIyNzkyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAorMjAxOC0wMS0zMSAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KKworICAgICAgICBXaGVuIEJ5dGVjb2RlUGFyc2VyIGluc2Vy
dHMgVW5yZWFjaGFibGUgYWZ0ZXIgRm9yY2VPU1JFeGl0IGl0IG5lZWRzIHRvIHVwZGF0ZSBBcmd1
bWVudFBvc2l0aW9ucworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTgyMzY4CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zNjkzMjQ2Nj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXaGVuIHByZXNlcnZpbmcg
bGl2ZW5lc3Mgd2hlbiBpbnNlcnRpbmcgVW5yZWFjaGFibGUgbm9kZXMgYWZ0ZXIgRm9yY2VPU1JF
eGl0LAorICAgICAgICB3ZSBtdXN0IGFkZCB0aGUgVmFyaWFibGVBY2Nlc3NEYXRhIHRvIHRoZSBn
aXZlbiBhcmd1bWVudCBwb3NpdGlvbi4gT3RoZXJ3aXNlLAorICAgICAgICB3ZSBtYXkgZW5kIHVw
IHdpdGggYSBWYXJpYWJsZUFjY2Vzc0RhdGEgdGhhdCBkb2Vzbid0IHJlc3BlY3QgdGhlIHNob3Vs
ZE5ldmVyVW5ib3ggYml0LgorICAgICAgICBJZiB3ZSBlbmQgdXAgd2l0aCBzdWNoIGEgc2l0dWF0
aW9uLCBpdCBjYW4gbGVhZCB0byBpbnZhbGlkIElSIGFmdGVyIHRoZQorICAgICAgICBhcmd1bWVu
dHMgZWxpbWluYXRpb24gcGhhc2Ugb3B0aW1pemVzIGEgR2V0QnlWYWwgdG8gYSBHZXRTdGFjay4K
KworICAgICAgICAqIGRmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6OkRG
Rzo6Qnl0ZUNvZGVQYXJzZXI6OmZsdXNoSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNv
ZGVQYXJzZXI6OmZsdXNoRm9yVGVybWluYWxJbXBsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRl
Q29kZVBhcnNlcjo6Zmx1c2gpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpm
bHVzaEZvclRlcm1pbmFsKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6SW5s
aW5lU3RhY2tFbnRyeTo6SW5saW5lU3RhY2tFbnRyeSk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0
ZUNvZGVQYXJzZXI6OnBhcnNlKToKKwogMjAxOC0wMS0zMSAgS2VpdGggTWlsbGVyICA8a2VpdGhf
bWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBDYW5vbmljYWxpemUgYXF1aXJpbmcgdGhlIEpT
Q2VsbCBsb2NrLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBh
cnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRl
Q29kZVBhcnNlci5jcHAJKHJldmlzaW9uIDIyNzkyMykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MjUsMTcgKzUy
NSwxNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgQVNTRVJUKCFtX2dyYXBoLmhhc0RlYnVnZ2Vy
RW5hYmxlZCgpKTsKICAgICAgICAgICAgIG51bUFyZ3VtZW50cyA9IGlubGluZUNhbGxGcmFtZS0+
YXJndW1lbnRzV2l0aEZpeHVwLnNpemUoKTsKICAgICAgICAgICAgIGlmIChpbmxpbmVDYWxsRnJh
bWUtPmlzQ2xvc3VyZUNhbGwpCi0gICAgICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QocmVtYXBP
cGVyYW5kKGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmNh
bGxlZSkpKTsKKyAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVDYWxsRnJhbWUs
IHJlbWFwT3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVT
bG90OjpjYWxsZWUpKSk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc1ZhcmFy
Z3MoKSkKLSAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChyZW1hcE9wZXJhbmQoaW5saW5l
Q2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3VudCkp
KTsKKyAgICAgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVDYWxsRnJhbWUsIHJlbWFw
T3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90Ojph
cmd1bWVudENvdW50KSkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIG51bUFyZ3VtZW50
cyA9IG1fZ3JhcGguYmFzZWxpbmVDb2RlQmxvY2tGb3IoaW5saW5lQ2FsbEZyYW1lKS0+bnVtUGFy
YW1ldGVycygpOwogCiAgICAgICAgIGZvciAodW5zaWduZWQgYXJndW1lbnQgPSBudW1Bcmd1bWVu
dHM7IGFyZ3VtZW50LS07KQotICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QocmVtYXBPcGVyYW5k
KGlubGluZUNhbGxGcmFtZSwgdmlydHVhbFJlZ2lzdGVyRm9yQXJndW1lbnQoYXJndW1lbnQpKSk7
CisgICAgICAgICAgICBhZGRGbHVzaERpcmVjdChpbmxpbmVDYWxsRnJhbWUsIHJlbWFwT3BlcmFu
ZChpbmxpbmVDYWxsRnJhbWUsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkp
OwogCiAgICAgICAgIGlmIChtX2dyYXBoLm5lZWRzU2NvcGVSZWdpc3RlcigpKQotICAgICAgICAg
ICAgYWRkRmx1c2hEaXJlY3QobV9ncmFwaC5tX2NvZGVCbG9jay0+c2NvcGVSZWdpc3RlcigpKTsK
KyAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KG51bGxwdHIsIG1fZ3JhcGgubV9jb2RlQmxvY2st
PnNjb3BlUmVnaXN0ZXIoKSk7CiAgICAgfQogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgQWRkRmx1
c2hEaXJlY3RGdW5jLCB0eXBlbmFtZSBBZGRQaGFudG9tTG9jYWxEaXJlY3RGdW5jPgpAQCAtNTUz
LDcgKzU1Myw3IEBAIHByaXZhdGU6CiAKICAgICAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGxv
Y2FsID0gY29kZUJsb2NrLT5tX251bUNhbGxlZUxvY2FsczsgbG9jYWwtLTspIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGxpdmVuZXNzQXRCeXRlY29kZVtsb2NhbF0pCi0gICAgICAgICAgICAg
ICAgICAgICAgICBhZGRQaGFudG9tTG9jYWxEaXJlY3QocmVtYXBPcGVyYW5kKGlubGluZUNhbGxG
cmFtZSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpKSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRQaGFudG9tTG9jYWxEaXJlY3QoaW5saW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJh
bmQoaW5saW5lQ2FsbEZyYW1lLCB2aXJ0dWFsUmVnaXN0ZXJGb3JMb2NhbChsb2NhbCkpKTsKICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKICAgICB9CkBAIC02MDAsMTQgKzYwMCwx
NCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBmbHVzaChJbmxpbmVTdGFja0VudHJ5KiBpbmxpbmVT
dGFja0VudHJ5KQogICAgIHsKLSAgICAgICAgYXV0byBhZGRGbHVzaERpcmVjdCA9IFsmXSAoVmly
dHVhbFJlZ2lzdGVyIHJlZykgeyBmbHVzaERpcmVjdChyZWcpOyB9OworICAgICAgICBhdXRvIGFk
ZEZsdXNoRGlyZWN0ID0gWyZdIChJbmxpbmVDYWxsRnJhbWUqLCBWaXJ0dWFsUmVnaXN0ZXIgcmVn
KSB7IGZsdXNoRGlyZWN0KHJlZyk7IH07CiAgICAgICAgIGZsdXNoSW1wbChpbmxpbmVTdGFja0Vu
dHJ5LT5tX2lubGluZUNhbGxGcmFtZSwgYWRkRmx1c2hEaXJlY3QpOwogICAgIH0KIAogICAgIHZv
aWQgZmx1c2hGb3JUZXJtaW5hbCgpCiAgICAgewotICAgICAgICBhdXRvIGFkZEZsdXNoRGlyZWN0
ID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7IGZsdXNoRGlyZWN0KHJlZyk7IH07Ci0gICAg
ICAgIGF1dG8gYWRkUGhhbnRvbUxvY2FsRGlyZWN0ID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIgcmVn
KSB7IHBoYW50b21Mb2NhbERpcmVjdChyZWcpOyB9OworICAgICAgICBhdXRvIGFkZEZsdXNoRGly
ZWN0ID0gWyZdIChJbmxpbmVDYWxsRnJhbWUqLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7IGZsdXNo
RGlyZWN0KHJlZyk7IH07CisgICAgICAgIGF1dG8gYWRkUGhhbnRvbUxvY2FsRGlyZWN0ID0gWyZd
IChJbmxpbmVDYWxsRnJhbWUqLCBWaXJ0dWFsUmVnaXN0ZXIgcmVnKSB7IHBoYW50b21Mb2NhbERp
cmVjdChyZWcpOyB9OwogICAgICAgICBmbHVzaEZvclRlcm1pbmFsSW1wbChjdXJyZW50Q29kZU9y
aWdpbigpLCBhZGRGbHVzaERpcmVjdCwgYWRkUGhhbnRvbUxvY2FsRGlyZWN0KTsKICAgICB9CiAK
QEAgLTEwMzIsNiArMTAzMiw4IEBAIHByaXZhdGU6CiAgICAgRnJvemVuVmFsdWUqIG1fY29uc3Rh
bnRPbmU7CiAgICAgVmVjdG9yPE5vZGUqLCAxNj4gbV9jb25zdGFudHM7CiAKKyAgICBIYXNoTWFw
PElubGluZUNhbGxGcmFtZSosIFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uKj4sIFdURjo6RGVmYXVs
dEhhc2g8SW5saW5lQ2FsbEZyYW1lKj46Okhhc2gsIFdURjo6TnVsbGFibGVIYXNoVHJhaXRzPElu
bGluZUNhbGxGcmFtZSo+PiBtX2lubGluZUNhbGxGcmFtZVRvQXJndW1lbnRQb3NpdGlvbnM7CisK
ICAgICAvLyBUaGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uLgog
ICAgIHVuc2lnbmVkIG1fbnVtQXJndW1lbnRzOwogICAgIC8vIFRoZSBudW1iZXIgb2YgbG9jYWxz
ICh2YXJzICsgdGVtcG9yYXJpZXMpIHVzZWQgaW4gdGhlIGZ1bmN0aW9uLgpAQCAtNjQ1NCwxMyAr
NjQ1Niw3IEBAIEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICB9
CiAgICAgCiAgICAgaW50IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwID0gc3Rk
OjptYXg8aW50Pihhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcywgY29kZUJsb2NrLT5udW1QYXJh
bWV0ZXJzKCkpOwotICAgIG1fYXJndW1lbnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJ
bmNsdWRpbmdUaGlzV2l0aEZpeHVwKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50
Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwOyArK2kpIHsKLSAgICAgICAgYnl0ZUNvZGVQYXJz
ZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5hcHBlbmQoQXJndW1lbnRQb3NpdGlvbigp
KTsKLSAgICAgICAgQXJndW1lbnRQb3NpdGlvbiogYXJndW1lbnRQb3NpdGlvbiA9ICZieXRlQ29k
ZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLmxhc3QoKTsKLSAgICAgICAgbV9h
cmd1bWVudFBvc2l0aW9uc1tpXSA9IGFyZ3VtZW50UG9zaXRpb247Ci0gICAgfQotICAgIAorCiAg
ICAgaWYgKG1fY2FsbGVyKSB7CiAgICAgICAgIC8vIElubGluZSBjYXNlLgogICAgICAgICBBU1NF
UlQoY29kZUJsb2NrICE9IGJ5dGVDb2RlUGFyc2VyLT5tX2NvZGVCbG9jayk7CkBAIC02NTExLDYg
KzY1MDcsMTQgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZQogICAg
ICAgICAgICAgbV9zd2l0Y2hSZW1hcFtpXSA9IGk7CiAgICAgfQogICAgIAorICAgIG1fYXJndW1l
bnRQb3NpdGlvbnMucmVzaXplKGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZpeHVwKTsK
KyAgICBmb3IgKGludCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnRJbmNsdWRpbmdUaGlzV2l0aEZp
eHVwOyArK2kpIHsKKyAgICAgICAgYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBv
c2l0aW9ucy5hcHBlbmQoQXJndW1lbnRQb3NpdGlvbigpKTsKKyAgICAgICAgQXJndW1lbnRQb3Np
dGlvbiogYXJndW1lbnRQb3NpdGlvbiA9ICZieXRlQ29kZVBhcnNlci0+bV9ncmFwaC5tX2FyZ3Vt
ZW50UG9zaXRpb25zLmxhc3QoKTsKKyAgICAgICAgbV9hcmd1bWVudFBvc2l0aW9uc1tpXSA9IGFy
Z3VtZW50UG9zaXRpb247CisgICAgfQorICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2lubGluZUNhbGxG
cmFtZVRvQXJndW1lbnRQb3NpdGlvbnMuYWRkKG1faW5saW5lQ2FsbEZyYW1lLCBtX2FyZ3VtZW50
UG9zaXRpb25zKTsKKyAgICAKICAgICBieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVTdGFja1RvcCA9
IHRoaXM7CiB9CiAKQEAgLTY2NjEsMTcgKzY2NjUsMjcgQEAgdm9pZCBCeXRlQ29kZVBhcnNlcjo6
cGFyc2UoKQogCiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5pbnNlcnROb2RlKGJs
b2NrLT5zaXplKCksIFNwZWNOb25lLCBFeGl0T0ssIGVuZE9yaWdpbik7CiAKLSAgICAgICAgICAg
ICAgICAgICAgYXV0byBpbnNlcnRMaXZlbmVzc1ByZXNlcnZpbmdPcCA9IFsmXSAoTm9kZVR5cGUg
b3AsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
aW5zZXJ0TGl2ZW5lc3NQcmVzZXJ2aW5nT3AgPSBbJl0gKElubGluZUNhbGxGcmFtZSogaW5saW5l
Q2FsbEZyYW1lLCBOb2RlVHlwZSBvcCwgVmlydHVhbFJlZ2lzdGVyIG9wZXJhbmQpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBtYXBwaW5n
Lm9wZXJhbmQob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXZhcmlhYmxl
KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPSBuZXdWYXJpYWJsZUFj
Y2Vzc0RhdGEob3BlcmFuZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGluZy5v
cGVyYW5kKG9wZXJhbmQpID0gdmFyaWFibGU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxSZWdpc3RlciBhcmd1bWVudCA9IG9wZXJh
bmQgLSAoaW5saW5lQ2FsbEZyYW1lID8gaW5saW5lQ2FsbEZyYW1lLT5zdGFja09mZnNldCA6IDAp
OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3VtZW50LmlzQXJndW1lbnQoKSAmJiAh
YXJndW1lbnQuaXNIZWFkZXIoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFZlY3RvcjxBcmd1bWVudFBvc2l0aW9uKj4mIGFyZ3VtZW50cyA9IG1faW5saW5lQ2FsbEZyYW1l
VG9Bcmd1bWVudFBvc2l0aW9ucy5nZXQoaW5saW5lQ2FsbEZyYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmd1bWVudHNbYXJndW1lbnQudG9Bcmd1bWVudCgpXS0+YWRkVmFyaWFi
bGUodmFyaWFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShibG9jay0+c2l6ZSgpLCBTcGVjTm9u
ZSwgb3AsIGVuZE9yaWdpbiwgT3BJbmZvKHZhcmlhYmxlKSk7CiAgICAgICAgICAgICAgICAgICAg
IH07Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkRmx1c2hEaXJlY3QgPSBbJl0gKFZpcnR1
YWxSZWdpc3RlciBvcGVyYW5kKSB7IGluc2VydExpdmVuZXNzUHJlc2VydmluZ09wKEZsdXNoLCBv
cGVyYW5kKTsgfTsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRQaGFudG9tTG9jYWxEaXJl
Y3QgPSBbJl0gKFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7IGluc2VydExpdmVuZXNzUHJlc2Vy
dmluZ09wKFBoYW50b21Mb2NhbCwgb3BlcmFuZCk7IH07Ci0KKyAgICAgICAgICAgICAgICAgICAg
YXV0byBhZGRGbHVzaERpcmVjdCA9IFsmXSAoSW5saW5lQ2FsbEZyYW1lKiBpbmxpbmVDYWxsRnJh
bWUsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBp
bnNlcnRMaXZlbmVzc1ByZXNlcnZpbmdPcChpbmxpbmVDYWxsRnJhbWUsIEZsdXNoLCBvcGVyYW5k
KTsKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBhZGRQ
aGFudG9tTG9jYWxEaXJlY3QgPSBbJl0gKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1l
LCBWaXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5z
ZXJ0TGl2ZW5lc3NQcmVzZXJ2aW5nT3AoaW5saW5lQ2FsbEZyYW1lLCBQaGFudG9tTG9jYWwsIG9w
ZXJhbmQpOworICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICBmbHVz
aEZvclRlcm1pbmFsSW1wbChlbmRPcmlnaW4uc2VtYW50aWMsIGFkZEZsdXNoRGlyZWN0LCBhZGRQ
aGFudG9tTG9jYWxEaXJlY3QpOwogCiAgICAgICAgICAgICAgICAgICAgIGluc2VydGlvblNldC5p
bnNlcnROb2RlKGJsb2NrLT5zaXplKCksIFNwZWNOb25lLCBVbnJlYWNoYWJsZSwgZW5kT3JpZ2lu
KTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>332895</attachid>
            <date>2018-02-01 11:22:29 -0800</date>
            <delta_ts>2018-02-02 14:55:33 -0800</delta_ts>
            <desc>patch</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>10537</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMjc5NDcpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE3IEBACisyMDE4LTAxLTMxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUu
Y29tPgorCisgICAgICAgIFdoZW4gQnl0ZWNvZGVQYXJzZXIgaW5zZXJ0cyBVbnJlYWNoYWJsZSBh
ZnRlciBGb3JjZU9TUkV4aXQgaXQgbmVlZHMgdG8gdXBkYXRlIEFyZ3VtZW50UG9zaXRpb25zIGZv
ciBGbHVzaGVzIGl0IGluc2VydHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE4MjM2OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY5MzI0NjY+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3Mv
Zmx1c2gtYWZ0ZXItZm9yY2UtZXhpdC1pbi1ieXRlY29kZXBhcnNlci1uZWVkcy10by11cGRhdGUt
YXJndW1lbnQtcG9zaXRpb25zLmpzOiBBZGRlZC4KKyAgICAgICAgKHJ1bk5lYXJTdGFja0xpbWl0
LnQpOgorICAgICAgICAocnVuTmVhclN0YWNrTGltaXQpOgorICAgICAgICAodHJ5LnJ1bk5lYXJT
dGFja0xpbWl0KToKKyAgICAgICAgKGNhdGNoKToKKwogMjAxOC0wMS0zMSAgU2FhbSBCYXJhdGkg
IDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBKU0MgaW5jb3JyZWN0bHkgaW50ZXJwcmV0
aW5nIHNjcmlwdCwgc2V0cyBHbG9iYWwgUHJvcGVydHkgaW5zdGVhZCBvZiBHbG9iYWwgTGV4aWNh
bCB2YXJpYWJsZSAoTGl0ZXJhbFBhcnNlciAvIEpTT05QIHBhdGgpCkluZGV4OiBKU1Rlc3RzL3N0
cmVzcy9mbHVzaC1hZnRlci1mb3JjZS1leGl0LWluLWJ5dGVjb2RlcGFyc2VyLW5lZWRzLXRvLXVw
ZGF0ZS1hcmd1bWVudC1wb3NpdGlvbnMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3Mv
Zmx1c2gtYWZ0ZXItZm9yY2UtZXhpdC1pbi1ieXRlY29kZXBhcnNlci1uZWVkcy10by11cGRhdGUt
YXJndW1lbnQtcG9zaXRpb25zLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMvc3RyZXNzL2Zs
dXNoLWFmdGVyLWZvcmNlLWV4aXQtaW4tYnl0ZWNvZGVwYXJzZXItbmVlZHMtdG8tdXBkYXRlLWFy
Z3VtZW50LXBvc2l0aW9ucy5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDMyIEBACisvL0Ag
cnVuRGVmYXVsdCgiLS11c2VDb25jdXJyZW50R0M9MCIsICItLXRocmVzaG9sZEZvckpJVEFmdGVy
V2FybVVwPTEwIiwgIi0tdGhyZXNob2xkRm9ySklUU29vbj0xMCIsICItLXRocmVzaG9sZEZvck9w
dGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JPcHRpbWl6ZUFmdGVyTG9uZ1dh
cm1VcD0yMCIsICItLXRocmVzaG9sZEZvck9wdGltaXplU29vbj0yMCIsICItLXRocmVzaG9sZEZv
ckZUTE9wdGltaXplQWZ0ZXJXYXJtVXA9MjAiLCAiLS10aHJlc2hvbGRGb3JGVExPcHRpbWl6ZVNv
b249MjAiLCAiLS1tYXhpbXVtRXZhbENhY2hlYWJsZVNvdXJjZUxlbmd0aD0xNTAwMDAiLCAiLS1t
YXhQZXJUaHJlYWRTdGFja1VzYWdlPTEwNDg1NzYiKQorCitmdW5jdGlvbiBydW5OZWFyU3RhY2tM
aW1pdChmKSB7CisgICAgZnVuY3Rpb24gdCgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IHJldHVybiB0KCk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVybiBm
KCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHQoKTsKK307CisKK3J1bk5lYXJTdGFj
a0xpbWl0KCgpID0+IHsgfSk7CitydW5OZWFyU3RhY2tMaW1pdCgoKSA9PiB7IH0pOworCitmdW5j
dGlvbiBmMihhLCBiKSB7CisgICAgJ3VzZSBzdHJpY3QnOworICAgIHRyeSB7CisgICAgICAgIGEu
cHVzaChhcmd1bWVudHNbMF0gKyBhcmd1bWVudHNbMl0gKyBhICsgdW5kZWZpbmVkVmFyaWFibGUp
OworICAgIH0gY2F0Y2ggKGUpIHsgfQorfQorCit0cnkgeworICAgIHJ1bk5lYXJTdGFja0xpbWl0
KCgpID0+IHsKKyAgICAgICAgcmV0dXJuIGYyKDEsIDIsIDMpOworICAgIH0pOworfSBjYXRjaCAo
ZSkge30KKwordHJ5IHsKKyAgICBydW5OZWFyU3RhY2tMaW1pdCgpOworfSBjYXRjaCB7IH0KSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjI3OTIzKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisy
MDE4LTAxLTMxICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIFdo
ZW4gQnl0ZWNvZGVQYXJzZXIgaW5zZXJ0cyBVbnJlYWNoYWJsZSBhZnRlciBGb3JjZU9TUkV4aXQg
aXQgbmVlZHMgdG8gdXBkYXRlIEFyZ3VtZW50UG9zaXRpb25zIGZvciBGbHVzaGVzIGl0IGluc2Vy
dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MjM2
OAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzY5MzI0NjY+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBwcmVzZXJ2aW5nIGxpdmVuZXNzIHdo
ZW4gaW5zZXJ0aW5nIFVucmVhY2hhYmxlIG5vZGVzIGFmdGVyIEZvcmNlT1NSRXhpdCwKKyAgICAg
ICAgd2UgbXVzdCBhZGQgdGhlIFZhcmlhYmxlQWNjZXNzRGF0YSB0byB0aGUgZ2l2ZW4gYXJndW1l
bnQgcG9zaXRpb24uIE90aGVyd2lzZSwKKyAgICAgICAgd2UgbWF5IGVuZCB1cCB3aXRoIGEgVmFy
aWFibGVBY2Nlc3NEYXRhIHRoYXQgZG9lc24ndCByZXNwZWN0IHRoZSBzaG91bGROZXZlclVuYm94
IGJpdC4KKyAgICAgICAgSWYgd2UgZW5kIHVwIHdpdGggc3VjaCBhIHNpdHVhdGlvbiwgaXQgY2Fu
IGxlYWQgdG8gaW52YWxpZCBJUiBhZnRlciB0aGUKKyAgICAgICAgYXJndW1lbnRzIGVsaW1pbmF0
aW9uIHBoYXNlIG9wdGltaXplcyBhIEdldEJ5VmFsIHRvIGEgR2V0U3RhY2suCisKKyAgICAgICAg
KiBkZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2Rl
UGFyc2VyOjpmbHVzaEltcGwpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2VyOjpm
bHVzaEZvclRlcm1pbmFsSW1wbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6
OmZsdXNoKToKKyAgICAgICAgKEpTQzo6REZHOjpCeXRlQ29kZVBhcnNlcjo6Zmx1c2hGb3JUZXJt
aW5hbCk6CisgICAgICAgIChKU0M6OkRGRzo6Qnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50
cnk6OklubGluZVN0YWNrRW50cnkpOgorICAgICAgICAoSlNDOjpERkc6OkJ5dGVDb2RlUGFyc2Vy
OjpwYXJzZSk6CisKIDIwMTgtMDEtMzEgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ2Fub25pY2FsaXplIGFxdWlyaW5nIHRoZSBKU0NlbGwgbG9jay4K
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIu
Y3BwCShyZXZpc2lvbiAyMjc5MjMpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0J5
dGVDb2RlUGFyc2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTI1LDE3ICs1MjUsMTcgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIEFTU0VSVCghbV9ncmFwaC5oYXNEZWJ1Z2dlckVuYWJsZWQoKSk7
CiAgICAgICAgICAgICBudW1Bcmd1bWVudHMgPSBpbmxpbmVDYWxsRnJhbWUtPmFyZ3VtZW50c1dp
dGhGaXh1cC5zaXplKCk7CiAgICAgICAgICAgICBpZiAoaW5saW5lQ2FsbEZyYW1lLT5pc0Nsb3N1
cmVDYWxsKQotICAgICAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KHJlbWFwT3BlcmFuZChpbmxp
bmVDYWxsRnJhbWUsIFZpcnR1YWxSZWdpc3RlcihDYWxsRnJhbWVTbG90OjpjYWxsZWUpKSk7Cisg
ICAgICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QoaW5saW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJh
bmQoaW5saW5lQ2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6Y2FsbGVl
KSkpOwogICAgICAgICAgICAgaWYgKGlubGluZUNhbGxGcmFtZS0+aXNWYXJhcmdzKCkpCi0gICAg
ICAgICAgICAgICAgYWRkRmx1c2hEaXJlY3QocmVtYXBPcGVyYW5kKGlubGluZUNhbGxGcmFtZSwg
VmlydHVhbFJlZ2lzdGVyKENhbGxGcmFtZVNsb3Q6OmFyZ3VtZW50Q291bnQpKSk7CisgICAgICAg
ICAgICAgICAgYWRkRmx1c2hEaXJlY3QoaW5saW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJhbmQoaW5s
aW5lQ2FsbEZyYW1lLCBWaXJ0dWFsUmVnaXN0ZXIoQ2FsbEZyYW1lU2xvdDo6YXJndW1lbnRDb3Vu
dCkpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBudW1Bcmd1bWVudHMgPSBtX2dyYXBo
LmJhc2VsaW5lQ29kZUJsb2NrRm9yKGlubGluZUNhbGxGcmFtZSktPm51bVBhcmFtZXRlcnMoKTsK
IAogICAgICAgICBmb3IgKHVuc2lnbmVkIGFyZ3VtZW50ID0gbnVtQXJndW1lbnRzOyBhcmd1bWVu
dC0tOykKLSAgICAgICAgICAgIGFkZEZsdXNoRGlyZWN0KHJlbWFwT3BlcmFuZChpbmxpbmVDYWxs
RnJhbWUsIHZpcnR1YWxSZWdpc3RlckZvckFyZ3VtZW50KGFyZ3VtZW50KSkpOworICAgICAgICAg
ICAgYWRkRmx1c2hEaXJlY3QoaW5saW5lQ2FsbEZyYW1lLCByZW1hcE9wZXJhbmQoaW5saW5lQ2Fs
bEZyYW1lLCB2aXJ0dWFsUmVnaXN0ZXJGb3JBcmd1bWVudChhcmd1bWVudCkpKTsKIAogICAgICAg
ICBpZiAobV9ncmFwaC5uZWVkc1Njb3BlUmVnaXN0ZXIoKSkKLSAgICAgICAgICAgIGFkZEZsdXNo
RGlyZWN0KG1fZ3JhcGgubV9jb2RlQmxvY2stPnNjb3BlUmVnaXN0ZXIoKSk7CisgICAgICAgICAg
ICBhZGRGbHVzaERpcmVjdChudWxscHRyLCBtX2dyYXBoLm1fY29kZUJsb2NrLT5zY29wZVJlZ2lz
dGVyKCkpOwogICAgIH0KIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEFkZEZsdXNoRGlyZWN0RnVu
YywgdHlwZW5hbWUgQWRkUGhhbnRvbUxvY2FsRGlyZWN0RnVuYz4KQEAgLTU1Myw3ICs1NTMsNyBA
QCBwcml2YXRlOgogCiAgICAgICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBsb2NhbCA9IGNvZGVC
bG9jay0+bV9udW1DYWxsZWVMb2NhbHM7IGxvY2FsLS07KSB7CiAgICAgICAgICAgICAgICAgICAg
IGlmIChsaXZlbmVzc0F0Qnl0ZWNvZGVbbG9jYWxdKQotICAgICAgICAgICAgICAgICAgICAgICAg
YWRkUGhhbnRvbUxvY2FsRGlyZWN0KHJlbWFwT3BlcmFuZChpbmxpbmVDYWxsRnJhbWUsIHZpcnR1
YWxSZWdpc3RlckZvckxvY2FsKGxvY2FsKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYWRk
UGhhbnRvbUxvY2FsRGlyZWN0KGlubGluZUNhbGxGcmFtZSwgcmVtYXBPcGVyYW5kKGlubGluZUNh
bGxGcmFtZSwgdmlydHVhbFJlZ2lzdGVyRm9yTG9jYWwobG9jYWwpKSk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSk7CiAgICAgfQpAQCAtNjAwLDE0ICs2MDAsMTQgQEAgcHJpdmF0
ZToKIAogICAgIHZvaWQgZmx1c2goSW5saW5lU3RhY2tFbnRyeSogaW5saW5lU3RhY2tFbnRyeSkK
ICAgICB7Ci0gICAgICAgIGF1dG8gYWRkRmx1c2hEaXJlY3QgPSBbJl0gKFZpcnR1YWxSZWdpc3Rl
ciByZWcpIHsgZmx1c2hEaXJlY3QocmVnKTsgfTsKKyAgICAgICAgYXV0byBhZGRGbHVzaERpcmVj
dCA9IFsmXSAoSW5saW5lQ2FsbEZyYW1lKiwgVmlydHVhbFJlZ2lzdGVyIHJlZykgeyBmbHVzaERp
cmVjdChyZWcpOyB9OwogICAgICAgICBmbHVzaEltcGwoaW5saW5lU3RhY2tFbnRyeS0+bV9pbmxp
bmVDYWxsRnJhbWUsIGFkZEZsdXNoRGlyZWN0KTsKICAgICB9CiAKICAgICB2b2lkIGZsdXNoRm9y
VGVybWluYWwoKQogICAgIHsKLSAgICAgICAgYXV0byBhZGRGbHVzaERpcmVjdCA9IFsmXSAoVmly
dHVhbFJlZ2lzdGVyIHJlZykgeyBmbHVzaERpcmVjdChyZWcpOyB9OwotICAgICAgICBhdXRvIGFk
ZFBoYW50b21Mb2NhbERpcmVjdCA9IFsmXSAoVmlydHVhbFJlZ2lzdGVyIHJlZykgeyBwaGFudG9t
TG9jYWxEaXJlY3QocmVnKTsgfTsKKyAgICAgICAgYXV0byBhZGRGbHVzaERpcmVjdCA9IFsmXSAo
SW5saW5lQ2FsbEZyYW1lKiwgVmlydHVhbFJlZ2lzdGVyIHJlZykgeyBmbHVzaERpcmVjdChyZWcp
OyB9OworICAgICAgICBhdXRvIGFkZFBoYW50b21Mb2NhbERpcmVjdCA9IFsmXSAoSW5saW5lQ2Fs
bEZyYW1lKiwgVmlydHVhbFJlZ2lzdGVyIHJlZykgeyBwaGFudG9tTG9jYWxEaXJlY3QocmVnKTsg
fTsKICAgICAgICAgZmx1c2hGb3JUZXJtaW5hbEltcGwoY3VycmVudENvZGVPcmlnaW4oKSwgYWRk
Rmx1c2hEaXJlY3QsIGFkZFBoYW50b21Mb2NhbERpcmVjdCk7CiAgICAgfQogCkBAIC0xMDMyLDYg
KzEwMzIsOCBAQCBwcml2YXRlOgogICAgIEZyb3plblZhbHVlKiBtX2NvbnN0YW50T25lOwogICAg
IFZlY3RvcjxOb2RlKiwgMTY+IG1fY29uc3RhbnRzOwogCisgICAgSGFzaE1hcDxJbmxpbmVDYWxs
RnJhbWUqLCBWZWN0b3I8QXJndW1lbnRQb3NpdGlvbio+LCBXVEY6OkRlZmF1bHRIYXNoPElubGlu
ZUNhbGxGcmFtZSo+OjpIYXNoLCBXVEY6Ok51bGxhYmxlSGFzaFRyYWl0czxJbmxpbmVDYWxsRnJh
bWUqPj4gbV9pbmxpbmVDYWxsRnJhbWVUb0FyZ3VtZW50UG9zaXRpb25zOworCiAgICAgLy8gVGhl
IG51bWJlciBvZiBhcmd1bWVudHMgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbi4KICAgICB1bnNpZ25l
ZCBtX251bUFyZ3VtZW50czsKICAgICAvLyBUaGUgbnVtYmVyIG9mIGxvY2FscyAodmFycyArIHRl
bXBvcmFyaWVzKSB1c2VkIGluIHRoZSBmdW5jdGlvbi4KQEAgLTY0NTQsMTMgKzY0NTYsNyBAQCBC
eXRlQ29kZVBhcnNlcjo6SW5saW5lU3RhY2tFbnRyeTo6SW5saW5lCiAgICAgfQogICAgIAogICAg
IGludCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCA9IHN0ZDo6bWF4PGludD4o
YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMsIGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpKTsK
LSAgICBtX2FyZ3VtZW50UG9zaXRpb25zLnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhp
c1dpdGhGaXh1cCk7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVk
aW5nVGhpc1dpdGhGaXh1cDsgKytpKSB7Ci0gICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBo
Lm1fYXJndW1lbnRQb3NpdGlvbnMuYXBwZW5kKEFyZ3VtZW50UG9zaXRpb24oKSk7Ci0gICAgICAg
IEFyZ3VtZW50UG9zaXRpb24qIGFyZ3VtZW50UG9zaXRpb24gPSAmYnl0ZUNvZGVQYXJzZXItPm1f
Z3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5sYXN0KCk7Ci0gICAgICAgIG1fYXJndW1lbnRQb3Np
dGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0aW9uOwotICAgIH0KLSAgICAKKwogICAgIGlmIChtX2Nh
bGxlcikgewogICAgICAgICAvLyBJbmxpbmUgY2FzZS4KICAgICAgICAgQVNTRVJUKGNvZGVCbG9j
ayAhPSBieXRlQ29kZVBhcnNlci0+bV9jb2RlQmxvY2spOwpAQCAtNjUxMSw2ICs2NTA3LDE0IEBA
IEJ5dGVDb2RlUGFyc2VyOjpJbmxpbmVTdGFja0VudHJ5OjpJbmxpbmUKICAgICAgICAgICAgIG1f
c3dpdGNoUmVtYXBbaV0gPSBpOwogICAgIH0KICAgICAKKyAgICBtX2FyZ3VtZW50UG9zaXRpb25z
LnJlc2l6ZShhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cCk7CisgICAgZm9yIChp
bnQgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50SW5jbHVkaW5nVGhpc1dpdGhGaXh1cDsgKytpKSB7
CisgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuYXBw
ZW5kKEFyZ3VtZW50UG9zaXRpb24oKSk7CisgICAgICAgIEFyZ3VtZW50UG9zaXRpb24qIGFyZ3Vt
ZW50UG9zaXRpb24gPSAmYnl0ZUNvZGVQYXJzZXItPm1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9u
cy5sYXN0KCk7CisgICAgICAgIG1fYXJndW1lbnRQb3NpdGlvbnNbaV0gPSBhcmd1bWVudFBvc2l0
aW9uOworICAgIH0KKyAgICBieXRlQ29kZVBhcnNlci0+bV9pbmxpbmVDYWxsRnJhbWVUb0FyZ3Vt
ZW50UG9zaXRpb25zLmFkZChtX2lubGluZUNhbGxGcmFtZSwgbV9hcmd1bWVudFBvc2l0aW9ucyk7
CisgICAgCiAgICAgYnl0ZUNvZGVQYXJzZXItPm1faW5saW5lU3RhY2tUb3AgPSB0aGlzOwogfQog
CkBAIC02NjYxLDE3ICs2NjY1LDI3IEBAIHZvaWQgQnl0ZUNvZGVQYXJzZXI6OnBhcnNlKCkKIAog
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShibG9jay0+c2l6ZSgp
LCBTcGVjTm9uZSwgRXhpdE9LLCBlbmRPcmlnaW4pOwogCi0gICAgICAgICAgICAgICAgICAgIGF1
dG8gaW5zZXJ0TGl2ZW5lc3NQcmVzZXJ2aW5nT3AgPSBbJl0gKE5vZGVUeXBlIG9wLCBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIGluc2VydExpdmVu
ZXNzUHJlc2VydmluZ09wID0gWyZdIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwg
Tm9kZVR5cGUgb3AsIFZpcnR1YWxSZWdpc3RlciBvcGVyYW5kKSB7CiAgICAgICAgICAgICAgICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbWFwcGluZy5vcGVyYW5kKG9w
ZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YXJpYWJsZSkgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlID0gbmV3VmFyaWFibGVBY2Nlc3NEYXRhKG9w
ZXJhbmQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcub3BlcmFuZChvcGVy
YW5kKSA9IHZhcmlhYmxlOwogICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgICAgICBWaXJ0dWFsUmVnaXN0ZXIgYXJndW1lbnQgPSBvcGVyYW5kIC0gKGlubGlu
ZUNhbGxGcmFtZSA/IGlubGluZUNhbGxGcmFtZS0+c3RhY2tPZmZzZXQgOiAwKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudC5pc0FyZ3VtZW50KCkgJiYgIWFyZ3VtZW50Lmlz
SGVhZGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBWZWN0b3I8QXJn
dW1lbnRQb3NpdGlvbio+JiBhcmd1bWVudHMgPSBtX2lubGluZUNhbGxGcmFtZVRvQXJndW1lbnRQ
b3NpdGlvbnMuZ2V0KGlubGluZUNhbGxGcmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgYXJndW1lbnRzW2FyZ3VtZW50LnRvQXJndW1lbnQoKV0tPmFkZFZhcmlhYmxlKHZhcmlhYmxl
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0aW9uU2V0Lmluc2VydE5vZGUoYmxvY2stPnNpemUoKSwgU3BlY05vbmUsIG9wLCBlbmRP
cmlnaW4sIE9wSW5mbyh2YXJpYWJsZSkpOwogICAgICAgICAgICAgICAgICAgICB9OwotICAgICAg
ICAgICAgICAgICAgICBhdXRvIGFkZEZsdXNoRGlyZWN0ID0gWyZdIChWaXJ0dWFsUmVnaXN0ZXIg
b3BlcmFuZCkgeyBpbnNlcnRMaXZlbmVzc1ByZXNlcnZpbmdPcChGbHVzaCwgb3BlcmFuZCk7IH07
Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUGhhbnRvbUxvY2FsRGlyZWN0ID0gWyZdIChW
aXJ0dWFsUmVnaXN0ZXIgb3BlcmFuZCkgeyBpbnNlcnRMaXZlbmVzc1ByZXNlcnZpbmdPcChQaGFu
dG9tTG9jYWwsIG9wZXJhbmQpOyB9OwotCisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkRmx1
c2hEaXJlY3QgPSBbJl0gKElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lLCBWaXJ0dWFs
UmVnaXN0ZXIgb3BlcmFuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0TGl2ZW5l
c3NQcmVzZXJ2aW5nT3AoaW5saW5lQ2FsbEZyYW1lLCBGbHVzaCwgb3BlcmFuZCk7CisgICAgICAg
ICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgICAgIGF1dG8gYWRkUGhhbnRvbUxvY2Fs
RGlyZWN0ID0gWyZdIChJbmxpbmVDYWxsRnJhbWUqIGlubGluZUNhbGxGcmFtZSwgVmlydHVhbFJl
Z2lzdGVyIG9wZXJhbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydExpdmVuZXNz
UHJlc2VydmluZ09wKGlubGluZUNhbGxGcmFtZSwgUGhhbnRvbUxvY2FsLCBvcGVyYW5kKTsKKyAg
ICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgZmx1c2hGb3JUZXJtaW5h
bEltcGwoZW5kT3JpZ2luLnNlbWFudGljLCBhZGRGbHVzaERpcmVjdCwgYWRkUGhhbnRvbUxvY2Fs
RGlyZWN0KTsKIAogICAgICAgICAgICAgICAgICAgICBpbnNlcnRpb25TZXQuaW5zZXJ0Tm9kZShi
bG9jay0+c2l6ZSgpLCBTcGVjTm9uZSwgVW5yZWFjaGFibGUsIGVuZE9yaWdpbik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>