<?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>141005</bug_id>
          
          <creation_ts>2015-01-28 12:10:24 -0800</creation_ts>
          <short_desc>Simple line layout: Drop uncommitted/committed terms from LineState.</short_desc>
          <delta_ts>2015-01-28 15:36:51 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1064982</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-01-28 12:10:24 -0800</bug_when>
    <thetext>and replace it with segments and runs. Multiple fragments form a segment and they turn into runs.
(uncommitted/committed terms a bit confusing. We only add fragments that we know that fit the line.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064984</commentid>
    <comment_count>1</comment_count>
      <attachid>245562</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-01-28 12:18:23 -0800</bug_when>
    <thetext>Created attachment 245562
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1064985</commentid>
    <comment_count>2</comment_count>
      <attachid>245562</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2015-01-28 12:23:02 -0800</bug_when>
    <thetext>Comment on attachment 245562
Patch

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

&gt; Source/WebCore/rendering/SimpleLineLayout.cpp:286
&gt; +    bool firstCharacterFits() const
&gt; +    {
&gt; +        return m_firstCharacterFits;
&gt; +    }

This could be on a single line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065006</commentid>
    <comment_count>3</comment_count>
      <attachid>245567</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-01-28 12:58:11 -0800</bug_when>
    <thetext>Created attachment 245567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065022</commentid>
    <comment_count>4</comment_count>
      <attachid>245567</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-28 13:46:09 -0800</bug_when>
    <thetext>Comment on attachment 245567
Patch

Rejecting attachment 245567 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.appspot.com&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 245567, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
d at 317 with fuzz 2 (offset 1 line).
Hunk #4 succeeded at 331 (offset 1 line).
Hunk #5 FAILED at 399.
Hunk #6 succeeded at 423 with fuzz 1 (offset 1 line).
Hunk #7 FAILED at 438.
Hunk #8 FAILED at 447.
Hunk #9 FAILED at 462.
Hunk #10 FAILED at 482.
Hunk #11 FAILED at 536.
8 out of 11 hunks FAILED -- saving rejects to file Source/WebCore/rendering/SimpleLineLayout.cpp.rej

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.appspot.com/results/6041009704140800</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065025</commentid>
    <comment_count>5</comment_count>
      <attachid>245569</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-01-28 13:57:16 -0800</bug_when>
    <thetext>Created attachment 245569
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065049</commentid>
    <comment_count>6</comment_count>
      <attachid>245569</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-28 15:36:46 -0800</bug_when>
    <thetext>Comment on attachment 245569
Patch

Clearing flags on attachment: 245569

Committed r179309: &lt;http://trac.webkit.org/changeset/179309&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065050</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-01-28 15:36:51 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245562</attachid>
            <date>2015-01-28 12:18:23 -0800</date>
            <delta_ts>2015-01-28 12:58:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141005-20150128121827.patch</filename>
            <type>text/plain</type>
            <size>13894</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQxNWNhYTAwNzU5YTIy
ZDNjYmM5ZjMyOTk2ODA3YWNhZmMwOTgxOC4uN2ZlZWNlNWY0NWI1OWYzYWM1OWVkMDUzZDhjNDkz
NzQ4YjZlNzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTAxLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBEcm9wIHVuY29tbWl0dGVkL2NvbW1pdHRlZCB0ZXJtcyBmcm9tIExpbmVTdGF0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTAwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZyYWdtZW50cyBmb3Jt
IHNlZ21lbnRzIGFuZCBzZWdtZW50cyB0dXJuIGludG8gcnVucyBvbiB0aGUgbGluZXMuCisgICAg
ICAgIFdlIGFkZCBmcmFnbWVudHMgb25seSB3aGVuIHRoZXkgZml0IHNvIHRoZXkgc2hvdWxkIG5v
dCBiZSBpbiAndW5jb21taXR0ZWQnIHN0YXRlIGF0IGFsbC4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6Y3Jl
YXRlUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6
YWRkRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVN0
YXRlOjphZGRXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OkxpbmVTdGF0ZTo6aGFzV2hpdGVzcGFjZU9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6TGluZVN0YXRlOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpMaW5lU3RhdGU6OmZpcnN0Q2hhcmFjdGVyRml0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMaW5lU3RhdGU6OnJlbW92ZVRyYWlsaW5nV2hpdGVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpyZW1vdmVUcmFpbGluZ1do
aXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Zmlyc3RGcmFn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVMaW5lUnVu
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjbG9zZUxpbmVFbmRpbmdB
bmRBZGp1c3RSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0
ZVRleHRSdW5zKTogVW5uZWNlc3NhcnkgYXNzZXJ0LgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6TGluZVN0YXRlOjpjb21taXRBbmRDcmVhdGVSdW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVN0YXRlOjphZGRVbmNvbW1pdHRl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMaW5lU3Rh
dGU6OmFkZFVuY29tbWl0dGVkV2hpdGVzcGFjZSk6IERlbGV0ZWQuCisKIDIwMTUtMDEtMjcgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkg
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA2ZGM3MWJiM2Q4YzRhNWQyZTUz
Njg0OTljNGJhODdjY2YzYTBkYzVmLi4xMTdiMjg5NjVlY2I3OGZjOTg2MWRiZDBmY2FiOWM3ZGFj
NTMyYzY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwCkBAIC0yMjcsNTIgKzIyNyw1MiBAQCBzdGF0aWMgZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KEVU
ZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgZmxvYXQgYwogfQogCiBz
dHJ1Y3QgTGluZVN0YXRlIHsKLSAgICB2b2lkIGNvbW1pdEFuZENyZWF0ZVJ1bihMYXlvdXQ6OlJ1
blZlY3RvciYgbGluZVJ1bnMpCisgICAgdm9pZCBjcmVhdGVSdW4oTGF5b3V0OjpSdW5WZWN0b3Im
IGxpbmVSdW5zKQogICAgIHsKLSAgICAgICAgaWYgKHVuY29tbWl0dGVkU3RhcnQgPT0gdW5jb21t
aXR0ZWRFbmQpCisgICAgICAgIGlmIChzZWdtZW50U3RhcnQgPT0gc2VnbWVudEVuZCkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBsaW5lUnVucy5hcHBlbmQoUnVuKHVuY29tbWl0dGVk
U3RhcnQsIHVuY29tbWl0dGVkRW5kLCBjb21taXR0ZWRXaWR0aCwgY29tbWl0dGVkV2lkdGggKyB1
bmNvbW1pdHRlZFdpZHRoLCBmYWxzZSkpOworICAgICAgICBsaW5lUnVucy5hcHBlbmQoUnVuKHNl
Z21lbnRTdGFydCwgc2VnbWVudEVuZCwgcnVuc1dpZHRoLCBydW5zV2lkdGggKyBzZWdtZW50V2lk
dGgsIGZhbHNlKSk7CiAgICAgICAgIC8vIE1vdmUgdW5jb21taXR0ZWQgdG8gY29tbWl0dGVkLgot
ICAgICAgICBjb21taXR0ZWRXaWR0aCArPSB1bmNvbW1pdHRlZFdpZHRoOwotICAgICAgICBjb21t
aXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IHVuY29taXR0ZWRUcmFpbGluZ1doaXRlc3Bh
Y2VXaWR0aDsKLSAgICAgICAgY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gdW5j
b21pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aDsKKyAgICAgICAgcnVuc1dpZHRoICs9IHNl
Z21lbnRXaWR0aDsKKyAgICAgICAgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gc2Vn
bWVudFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOworICAgICAgICBsYXN0UnVuVHJhaWxpbmdXaGl0
ZXNwYWNlTGVuZ3RoID0gc2VnbWVudFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aDsKICAgICAgICAg
aWYgKCFtX2ZpcnN0Q2hhcmFjdGVyRml0cykKLSAgICAgICAgICAgIG1fZmlyc3RDaGFyYWN0ZXJG
aXRzID0gdW5jb21taXR0ZWRTdGFydCArIDEgPiB1bmNvbW1pdHRlZEVuZCB8fCBjb21taXR0ZWRX
aWR0aCA8PSBhdmFpbGFibGVXaWR0aDsKKyAgICAgICAgICAgIG1fZmlyc3RDaGFyYWN0ZXJGaXRz
ID0gc2VnbWVudFN0YXJ0ICsgMSA+IHNlZ21lbnRFbmQgfHwgcnVuc1dpZHRoIDw9IGF2YWlsYWJs
ZVdpZHRoOwogCi0gICAgICAgIHVuY29tbWl0dGVkU3RhcnQgPSB1bmNvbW1pdHRlZEVuZDsKLSAg
ICAgICAgdW5jb21taXR0ZWRXaWR0aCA9IDA7Ci0gICAgICAgIHVuY29taXR0ZWRUcmFpbGluZ1do
aXRlc3BhY2VXaWR0aCA9IDA7Ci0gICAgICAgIHVuY29taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VM
ZW5ndGggPSAwOwotICAgICAgICBtX25ld1VuY29tbWl0dGVkU2VnbWVudCA9IHRydWU7CisgICAg
ICAgIHNlZ21lbnRTdGFydCA9IHNlZ21lbnRFbmQ7CisgICAgICAgIHNlZ21lbnRXaWR0aCA9IDA7
CisgICAgICAgIHNlZ21lbnRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IDA7CisgICAgICAgIHNl
Z21lbnRUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGggPSAwOworICAgICAgICBtX25ld1NlZ21lbnQg
PSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgYWRkVW5jb21taXR0ZWQoY29uc3QgRmxvd0NvbnRl
bnRzOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQorICAgIHZvaWQgYWRkRnJhZ21lbnQoY29uc3Qg
Rmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQogICAgIHsKICAgICAgICAgLy8g
U3RhcnQgYSBuZXcgdW5jb21taXR0ZWQgc2VnbWVudC4KLSAgICAgICAgaWYgKG1fbmV3VW5jb21t
aXR0ZWRTZWdtZW50KSB7Ci0gICAgICAgICAgICB1bmNvbW1pdHRlZFN0YXJ0ID0gZnJhZ21lbnQu
c3RhcnQ7Ci0gICAgICAgICAgICBtX25ld1VuY29tbWl0dGVkU2VnbWVudCA9IGZhbHNlOworICAg
ICAgICBpZiAobV9uZXdTZWdtZW50KSB7CisgICAgICAgICAgICBzZWdtZW50U3RhcnQgPSBmcmFn
bWVudC5zdGFydDsKKyAgICAgICAgICAgIG1fbmV3U2VnbWVudCA9IGZhbHNlOwogICAgICAgICB9
Ci0gICAgICAgIHVuY29tbWl0dGVkV2lkdGggKz0gZnJhZ21lbnQud2lkdGg7Ci0gICAgICAgIHVu
Y29tbWl0dGVkRW5kID0gZnJhZ21lbnQuZW5kOwotICAgICAgICB1bmNvbWl0dGVkVHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGggPSBmcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50czo6VGV4dEZyYWdt
ZW50OjpXaGl0ZXNwYWNlID8gZnJhZ21lbnQud2lkdGggOiAwOwotICAgICAgICB1bmNvbWl0dGVk
VHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gZnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHM6
OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSA/IGZyYWdtZW50LmVuZCAtIGZyYWdtZW50LnN0YXJ0
ICA6IDA7CisgICAgICAgIHNlZ21lbnRXaWR0aCArPSBmcmFnbWVudC53aWR0aDsKKyAgICAgICAg
c2VnbWVudEVuZCA9IGZyYWdtZW50LmVuZDsKKyAgICAgICAgc2VnbWVudFRyYWlsaW5nV2hpdGVz
cGFjZVdpZHRoID0gZnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHM6OlRleHRGcmFnbWVudDo6
V2hpdGVzcGFjZSA/IGZyYWdtZW50LndpZHRoIDogMDsKKyAgICAgICAgc2VnbWVudFRyYWlsaW5n
V2hpdGVzcGFjZUxlbmd0aCA9IGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzOjpUZXh0RnJh
Z21lbnQ6OldoaXRlc3BhY2UgPyBmcmFnbWVudC5lbmQgLSBmcmFnbWVudC5zdGFydCAgOiAwOwog
ICAgIH0KIAotICAgIHZvaWQgYWRkVW5jb21taXR0ZWRXaGl0ZXNwYWNlKGZsb2F0IHdoaXRlc3Bh
Y2VXaWR0aCkKKyAgICB2b2lkIGFkZFdoaXRlc3BhY2UoZmxvYXQgd2hpdGVzcGFjZVdpZHRoKQog
ICAgIHsKLSAgICAgICAgYWRkVW5jb21taXR0ZWQoRmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQo
dW5jb21taXR0ZWRFbmQsIHVuY29tbWl0dGVkRW5kICsgMSwgd2hpdGVzcGFjZVdpZHRoLCB0cnVl
KSk7CisgICAgICAgIGFkZEZyYWdtZW50KEZsb3dDb250ZW50czo6VGV4dEZyYWdtZW50KHNlZ21l
bnRFbmQsIHNlZ21lbnRFbmQgKyAxLCB3aGl0ZXNwYWNlV2lkdGgsIHRydWUpKTsKICAgICB9CiAK
ICAgICBib29sIGhhc1doaXRlc3BhY2VPbmx5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBjb21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCAmJiBjb21taXR0ZWRXaWR0aCA9PSBj
b21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aDsKKyAgICAgICAgcmV0dXJuIGxhc3RSdW5U
cmFpbGluZ1doaXRlc3BhY2VXaWR0aCAmJiBydW5zV2lkdGggPT0gbGFzdFJ1blRyYWlsaW5nV2hp
dGVzcGFjZVdpZHRoOwogICAgIH0KIAogICAgIGZsb2F0IHdpZHRoKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBjb21taXR0ZWRXaWR0aCArIHVuY29tbWl0dGVkV2lkdGg7CisgICAgICAg
IHJldHVybiBydW5zV2lkdGggKyBzZWdtZW50V2lkdGg7CiAgICAgfQogCiAgICAgYm9vbCBmaXRz
KGZsb2F0IGV4dHJhKSBjb25zdApAQCAtMjgwLDMyICsyODAsMzYgQEAgc3RydWN0IExpbmVTdGF0
ZSB7CiAgICAgICAgIHJldHVybiBhdmFpbGFibGVXaWR0aCA+PSB3aWR0aCgpICsgZXh0cmE7CiAg
ICAgfQogCisgICAgYm9vbCBmaXJzdENoYXJhY3RlckZpdHMoKSBjb25zdAorICAgIHsKKyAgICAg
ICAgcmV0dXJuIG1fZmlyc3RDaGFyYWN0ZXJGaXRzOworICAgIH0KKwogICAgIHZvaWQgcmVtb3Zl
VHJhaWxpbmdXaGl0ZXNwYWNlKCkKICAgICB7Ci0gICAgICAgIGNvbW1pdHRlZFdpZHRoIC09IGNv
bW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOwotICAgICAgICBjb21taXR0ZWRUcmFpbGlu
Z1doaXRlc3BhY2VXaWR0aCA9IDA7Ci0gICAgICAgIGNvbW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFj
ZUxlbmd0aCA9IDA7CisgICAgICAgIHJ1bnNXaWR0aCAtPSBsYXN0UnVuVHJhaWxpbmdXaGl0ZXNw
YWNlV2lkdGg7CisgICAgICAgIGxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IDA7Cisg
ICAgICAgIGxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VMZW5ndGggPSAwOwogICAgIH0KIAogICAg
IGZsb2F0IGF2YWlsYWJsZVdpZHRoIHsgMCB9OwogICAgIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0
IHsgMCB9OwotCi0gICAgdW5zaWduZWQgdW5jb21taXR0ZWRTdGFydCB7IDAgfTsKLSAgICB1bnNp
Z25lZCB1bmNvbW1pdHRlZEVuZCB7IDAgfTsKLSAgICBmbG9hdCB1bmNvbW1pdHRlZFdpZHRoIHsg
MCB9OwotICAgIGZsb2F0IGNvbW1pdHRlZFdpZHRoIHsgMCB9OwotICAgIGZsb2F0IGNvbW1pdHRl
ZFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoIHsgMCB9OyAvLyBVc2UgdGhpcyB0byByZW1vdmUgdHJh
aWxpbmcgd2hpdGVzcGFjZSB3aXRob3V0IHJlLW1lc3VyaW5nIHRoZSB0ZXh0LgotICAgIHVuc2ln
bmVkIGNvbW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCB7IDAgfTsKLSAgICAvLyBIYXZp
bmcgb25lIGNoYXJhY3RlciBvbiB0aGUgbGluZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGl0
IGFjdHVhbGx5IGZpdHMuCi0gICAgLy8gRmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBmaXJzdCBmcmFn
bWVudCBtaWdodCBiZSBmb3JjZWQgb24gdG8gdGhlIGN1cnJlbnQgbGluZSBldmVuIGlmIGl0IGRv
ZXMgbm90IGZpdC4KLSAgICBib29sIG1fZmlyc3RDaGFyYWN0ZXJGaXRzIHsgZmFsc2UgfTsKLSAg
ICBib29sIG1fbmV3VW5jb21taXR0ZWRTZWdtZW50IHsgdHJ1ZSB9OworICAgIGZsb2F0IGxhc3RS
dW5UcmFpbGluZ1doaXRlc3BhY2VXaWR0aCB7IDAgfTsgLy8gVXNlIHRoaXMgdG8gcmVtb3ZlIHRy
YWlsaW5nIHdoaXRlc3BhY2Ugd2l0aG91dCByZS1tZXN1cmluZyB0aGUgdGV4dC4KKyAgICB1bnNp
Z25lZCBsYXN0UnVuVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoIHsgMCB9OworICAgIGZsb2F0IHJ1
bnNXaWR0aCB7IDAgfTsKIAogICAgIEZsb3dDb250ZW50czo6VGV4dEZyYWdtZW50IG92ZXJmbG93
ZWRGcmFnbWVudDsKIAogcHJpdmF0ZToKLSAgICBmbG9hdCB1bmNvbWl0dGVkVHJhaWxpbmdXaGl0
ZXNwYWNlV2lkdGggeyAwIH07Ci0gICAgdW5zaWduZWQgdW5jb21pdHRlZFRyYWlsaW5nV2hpdGVz
cGFjZUxlbmd0aCB7IDAgfTsKKyAgICB1bnNpZ25lZCBzZWdtZW50U3RhcnQgeyAwIH07CisgICAg
dW5zaWduZWQgc2VnbWVudEVuZCB7IDAgfTsKKyAgICBmbG9hdCBzZWdtZW50V2lkdGggeyAwIH07
CisgICAgLy8gSGF2aW5nIG9uZSBjaGFyYWN0ZXIgb24gdGhlIGxpbmUgZG9lcyBub3QgbmVjZXNz
YXJpbHkgbWVhbiBpdCBhY3R1YWxseSBmaXRzLgorICAgIC8vIEZpcnN0IGNoYXJhY3RlciBvZiB0
aGUgZmlyc3QgZnJhZ21lbnQgbWlnaHQgYmUgZm9yY2VkIG9uIHRvIHRoZSBjdXJyZW50IGxpbmUg
ZXZlbiBpZiBpdCBkb2VzIG5vdCBmaXQuCisgICAgYm9vbCBtX2ZpcnN0Q2hhcmFjdGVyRml0cyB7
IGZhbHNlIH07CisgICAgYm9vbCBtX25ld1NlZ21lbnQgeyB0cnVlIH07CisgICAgZmxvYXQgc2Vn
bWVudFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoIHsgMCB9OworICAgIHVuc2lnbmVkIHNlZ21lbnRU
cmFpbGluZ1doaXRlc3BhY2VMZW5ndGggeyAwIH07CiB9OwogCiBzdGF0aWMgYm9vbCBwcmVXcmFw
KGNvbnN0IEZsb3dDb250ZW50czo6U3R5bGUmIHN0eWxlKQpAQCAtMzE1LDcgKzMxOSw3IEBAIHN0
YXRpYyBib29sIHByZVdyYXAoY29uc3QgRmxvd0NvbnRlbnRzOjpTdHlsZSYgc3R5bGUpCiAgICAg
CiBzdGF0aWMgdm9pZCByZW1vdmVUcmFpbGluZ1doaXRlc3BhY2UoTGluZVN0YXRlJiBsaW5lU3Rh
dGUsIExheW91dDo6UnVuVmVjdG9yJiBsaW5lUnVucywgY29uc3QgRmxvd0NvbnRlbnRzJiBmbG93
Q29udGVudHMpCiB7Ci0gICAgaWYgKCFsaW5lU3RhdGUuY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNw
YWNlTGVuZ3RoKQorICAgIGlmICghbGluZVN0YXRlLmxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VM
ZW5ndGgpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBSZW1vdmUgY29sbGFwc2VkIHdo
aXRlc3BhY2UsIG9yIG5vbi1jb2xsYXBzZWQgcHJlLXdyYXAgd2hpdGVzcGFjZSwgdW5sZXNzIGl0
J3MgdGhlIG9ubHkgY29udGVudCBvbiB0aGUgbGluZSAtc28gcmVtb3ZpbmcgdGhlIHdoaXRlc2Fw
Y2Ugd291bGQgcHJvZHVjZSBhbiBlbXB0eSBsaW5lLgpAQCAtMzI5LDggKzMzMyw4IEBAIHN0YXRp
YyB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShMaW5lU3RhdGUmIGxpbmVTdGF0ZSwgTGF5
b3V0OjpSdW5WZWN0b3ImIGxpCiAKICAgICBBU1NFUlQobGluZVJ1bnMuc2l6ZSgpKTsKICAgICBS
dW4mIGxhc3RSdW4gPSBsaW5lUnVucy5sYXN0KCk7Ci0gICAgbGFzdFJ1bi5sb2dpY2FsUmlnaHQg
LT0gbGluZVN0YXRlLmNvbW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOwotICAgIGxhc3RS
dW4uZW5kIC09IGxpbmVTdGF0ZS5jb21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGg7Cisg
ICAgbGFzdFJ1bi5sb2dpY2FsUmlnaHQgLT0gbGluZVN0YXRlLmxhc3RSdW5UcmFpbGluZ1doaXRl
c3BhY2VXaWR0aDsKKyAgICBsYXN0UnVuLmVuZCAtPSBsaW5lU3RhdGUubGFzdFJ1blRyYWlsaW5n
V2hpdGVzcGFjZUxlbmd0aDsKICAgICBpZiAobGFzdFJ1bi5zdGFydCA9PSBsYXN0UnVuLmVuZCkK
ICAgICAgICAgbGluZVJ1bnMucmVtb3ZlTGFzdCgpOwogICAgIGxpbmVTdGF0ZS5yZW1vdmVUcmFp
bGluZ1doaXRlc3BhY2UoKTsKQEAgLTM5Nyw3ICs0MDEsNyBAQCBzdGF0aWMgRmxvd0NvbnRlbnRz
OjpUZXh0RnJhZ21lbnQgZmlyc3RGcmFnbWVudChGbG93Q29udGVudHMmIGZsb3dDb250ZW50cywg
Y29ucwogICAgIGVsc2UgewogICAgICAgICAvLyBTcGVjaWFsIG92ZXJmbG93IHByZS13cmFwIHdo
aXRlc3BhY2UgaGFuZGxpbmc6IGlnbm9yZSB0aGUgb3ZlcmZsb3dlZCB3aGl0ZXNwYWNlIGlmIHdl
IG1hbmFnZWQgdG8gZml0IGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb24gdGhlIHByZXZpb3VzIGxp
bmUuCiAgICAgICAgIC8vIFdoZW4gdGhlIGxpbmUgaXMgdG9vIHNob3J0IHRvIGZpdCBvbmUgY2hh
cmFjdGVyICh0aG91Z2h0IGl0IHN0aWxsIHN0YXlzIG9uIHRoZSBsaW5lKSB3ZSBjb250aW51ZSB3
aXRoIHRoZSBvdmVyZmxvdyB3aGl0ZXNwYWNlIGNvbnRlbnQgb24gdGhpcyBsaW5lLgotICAgICAg
ICBpZiAoZmlyc3RGcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50czo6VGV4dEZyYWdtZW50OjpX
aGl0ZXNwYWNlICYmIHByZVdyYXAoc3R5bGUpICYmIHByZXZpb3VzTGluZS5tX2ZpcnN0Q2hhcmFj
dGVyRml0cykgeworICAgICAgICBpZiAoZmlyc3RGcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50
czo6VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlICYmIHByZVdyYXAoc3R5bGUpICYmIHByZXZpb3Vz
TGluZS5maXJzdENoYXJhY3RlckZpdHMoKSkgewogICAgICAgICAgICAgZmlyc3RGcmFnbWVudCA9
IGZsb3dDb250ZW50cy5uZXh0VGV4dEZyYWdtZW50KCk7CiAgICAgICAgICAgICAvLyBJZiBza2lw
cGluZyB0aGUgd2hpdGVzcGFjZSBwdXRzIHVzIG9uIGEgaGFyZCBuZXdsaW5lLCBza2lwIHRoZSBu
ZXdsaW5lIHRvbyBhcyB3ZSBhbHJlYWR5IHdyYXBwZWQgdGhlIGxpbmUuCiAgICAgICAgICAgICBp
ZiAoZmlyc3RGcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50czo6VGV4dEZyYWdtZW50OjpMaW5l
QnJlYWspCkBAIC00MjEsNyArNDI1LDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGlu
ZVN0YXRlJiBsaW5lLCBjb25zdCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSwgTGF5b3UKICAgICAg
ICAgaWYgKGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQ6OkxpbmVC
cmVhaykgewogICAgICAgICAgICAgLy8gQWRkIHRoZSBuZXcgbGluZSBmcmFnbWVudCBvbmx5IGlm
IHRoZXJlJ3Mgbm90aGluZyBvbiB0aGUgbGluZS4gKG90aGVyd2lzZSB0aGUgZXh0cmEgbmV3IGxp
bmUgY2hhcmFjdGVyIHdvdWxkIHNob3cgdXAgYXQgdGhlIGVuZCBvZiB0aGUgY29udGVudC4pCiAg
ICAgICAgICAgICBpZiAoIWxpbmUud2lkdGgoKSkKLSAgICAgICAgICAgICAgICBsaW5lLmFkZFVu
Y29tbWl0dGVkKGZyYWdtZW50KTsKKyAgICAgICAgICAgICAgICBsaW5lLmFkZEZyYWdtZW50KGZy
YWdtZW50KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGlmIChsaW5l
Q2FuQmVXcmFwcGVkICYmICFsaW5lLmZpdHMoZnJhZ21lbnQud2lkdGgpKSB7CkBAIC00MzYsNyAr
NDQwLDcgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lLCBjb25z
dCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSwgTGF5b3UKICAgICAgICAgICAgICAgICBpZiAoIXN0
eWxlLmNvbGxhcHNlV2hpdGVzcGFjZSkgewogICAgICAgICAgICAgICAgICAgICAvLyBTcGxpdCB0
aGUgZnJhZ21lbnQ7IChtb2RpZmllZClmcmFnbWVudCBzdGF5cyBvbiB0aGlzIGxpbmUsIG92ZXJm
bG93ZWRGcmFnbWVudCBpcyBwdXNoZWQgdG8gbmV4dCBsaW5lLgogICAgICAgICAgICAgICAgICAg
ICBsaW5lLm92ZXJmbG93ZWRGcmFnbWVudCA9IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoZnJhZ21l
bnQsIGxpbmUuYXZhaWxhYmxlV2lkdGggLSBsaW5lLndpZHRoKCksIGVtcHR5TGluZSwgZmxvd0Nv
bnRlbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZS5hZGRVbmNvbW1pdHRlZChmcmFnbWVu
dCk7CisgICAgICAgICAgICAgICAgICAgIGxpbmUuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBXaGVuIHdoaXRlc3BhY2UgY29sbGFw
c2UgaXMgb24sIHdoaXRlc3BhY2UgdGhhdCBkb2Vzbid0IGZpdCBpcyBzaW1wbHkgc2tpcHBlZC4K
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ0NSwxMiArNDQ5LDEyIEBAIHN0YXRpYyBib29s
IGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGluZSwgY29uc3QgTGluZVN0YXRlJiBwcmV2aW91
c0xpbmUsIExheW91CiAgICAgICAgICAgICBpZiAoKGVtcHR5TGluZSAmJiBzdHlsZS5icmVha1dv
cmRPbk92ZXJmbG93KSB8fCAhc3R5bGUud3JhcExpbmVzKSB7CiAgICAgICAgICAgICAgICAgLy8g
U3BsaXQgdGhlIGZyYWdtZW50OyAobW9kaWZpZWQpZnJhZ21lbnQgc3RheXMgb24gdGhpcyBsaW5l
LCBvdmVyZmxvd2VkRnJhZ21lbnQgaXMgcHVzaGVkIHRvIG5leHQgbGluZS4KICAgICAgICAgICAg
ICAgICBsaW5lLm92ZXJmbG93ZWRGcmFnbWVudCA9IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoZnJh
Z21lbnQsIGxpbmUuYXZhaWxhYmxlV2lkdGggLSBsaW5lLndpZHRoKCksIGVtcHR5TGluZSwgZmxv
d0NvbnRlbnRzKTsKLSAgICAgICAgICAgICAgICBsaW5lLmFkZFVuY29tbWl0dGVkKGZyYWdtZW50
KTsKKyAgICAgICAgICAgICAgICBsaW5lLmFkZEZyYWdtZW50KGZyYWdtZW50KTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vbi1icmVha2Fi
bGUgbm9uLXdoaXRlc3BhY2UgZmlyc3QgZnJhZ21lbnQuIEFkZCBpdCB0byB0aGUgY3VycmVudCBs
aW5lLiAtaXQgb3ZlcmZsb3dzIHRob3VnaC4KICAgICAgICAgICAgIGlmIChlbXB0eUxpbmUpIHsK
LSAgICAgICAgICAgICAgICBsaW5lLmFkZFVuY29tbWl0dGVkKGZyYWdtZW50KTsKKyAgICAgICAg
ICAgICAgICBsaW5lLmFkZEZyYWdtZW50KGZyYWdtZW50KTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIE5vbi1icmVha2FibGUgbm9uLXdoaXRl
c3BhY2UgZnJhZ21lbnQgd2hlbiB0aGVyZSdzIGFscmVhZHkgY29udGVudCBvbiB0aGUgbGluZS4g
UHVzaCBpdCB0byB0aGUgbmV4dCBsaW5lLgpAQCAtNDYwLDE0ICs0NjQsMTQgQEAgc3RhdGljIGJv
b2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lLCBjb25zdCBMaW5lU3RhdGUmIHByZXZp
b3VzTGluZSwgTGF5b3UKICAgICAgICAgLy8gV2hlbiB0aGUgY3VycmVudCBmcmFnbWVudCBpcyBj
b2xsYXBzZWQgd2hpdGVzcGFjZSwgd2UgbmVlZCB0byBjcmVhdGUgYSBydW4gZm9yIHdoYXQgd2Un
dmUgcHJvY2Vzc2VkIHNvIGZhci4KICAgICAgICAgaWYgKGZyYWdtZW50LmlzQ29sbGFwc2VkKSB7
CiAgICAgICAgICAgICAvLyBPbmUgdHJhaWxpbmcgd2hpdGVzcGFjZSB0byBwcmVzZXJ2ZS4KLSAg
ICAgICAgICAgIGxpbmUuYWRkVW5jb21taXR0ZWRXaGl0ZXNwYWNlKHN0eWxlLnNwYWNlV2lkdGgp
OwotICAgICAgICAgICAgbGluZS5jb21taXRBbmRDcmVhdGVSdW4obGluZVJ1bnMpOworICAgICAg
ICAgICAgbGluZS5hZGRXaGl0ZXNwYWNlKHN0eWxlLnNwYWNlV2lkdGgpOworICAgICAgICAgICAg
bGluZS5jcmVhdGVSdW4obGluZVJ1bnMpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGxp
bmUuYWRkVW5jb21taXR0ZWQoZnJhZ21lbnQpOworICAgICAgICAgICAgbGluZS5hZGRGcmFnbWVu
dChmcmFnbWVudCk7CiAgICAgICAgIC8vIEZpbmQgdGhlIG5leHQgdGV4dCBmcmFnbWVudC4KICAg
ICAgICAgZnJhZ21lbnQgPSBmbG93Q29udGVudHMubmV4dFRleHRGcmFnbWVudChsaW5lLndpZHRo
KCkpOwogICAgIH0KLSAgICBsaW5lLmNvbW1pdEFuZENyZWF0ZVJ1bihsaW5lUnVucyk7CisgICAg
bGluZS5jcmVhdGVSdW4obGluZVJ1bnMpOwogICAgIHJldHVybiBmcmFnbWVudC5pc0VtcHR5KCkg
JiYgbGluZS5vdmVyZmxvd2VkRnJhZ21lbnQuaXNFbXB0eSgpOwogfQogCkBAIC00ODAsNyArNDg0
LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhMaW5lU3RhdGUm
IGxpbmUsIExheW91dDo6UnVuVmVjdG9yJiBydW4KICAgICBpZiAoIXJ1bnMuc2l6ZSgpKQogICAg
ICAgICByZXR1cm47CiAgICAgLy8gQWRqdXN0IHJ1bnMnIHBvc2l0aW9uIGJ5IHRha2luZyBsaW5l
J3MgYWxpZ25tZW50IGludG8gYWNjb3VudC4KLSAgICBpZiAoZmxvYXQgbGluZUxvZ2ljYWxMZWZ0
ID0gY29tcHV0ZUxpbmVMZWZ0KGZsb3dDb250ZW50cy5zdHlsZSgpLnRleHRBbGlnbiwgbGluZS5h
dmFpbGFibGVXaWR0aCwgbGluZS5jb21taXR0ZWRXaWR0aCwgbGluZS5sb2dpY2FsTGVmdE9mZnNl
dCkpIHsKKyAgICBpZiAoZmxvYXQgbGluZUxvZ2ljYWxMZWZ0ID0gY29tcHV0ZUxpbmVMZWZ0KGZs
b3dDb250ZW50cy5zdHlsZSgpLnRleHRBbGlnbiwgbGluZS5hdmFpbGFibGVXaWR0aCwgbGluZS5y
dW5zV2lkdGgsIGxpbmUubG9naWNhbExlZnRPZmZzZXQpKSB7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IHByZXZpb3VzUnVuQ291bnQ7IGkgPCBydW5zLnNpemUoKTsgKytpKSB7CiAgICAgICAg
ICAgICBydW5zW2ldLmxvZ2ljYWxMZWZ0ICs9IGxpbmVMb2dpY2FsTGVmdDsKICAgICAgICAgICAg
IHJ1bnNbaV0ubG9naWNhbFJpZ2h0ICs9IGxpbmVMb2dpY2FsTGVmdDsKQEAgLTUzNCw3ICs1Mzgs
NiBAQCBzdGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlvdXQ6OlJ1blZlY3RvciYgcnVucywg
UmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZwogICAgIH0gd2hpbGUgKCFpc0VuZE9mQ29udGVu
dCk7CiAKICAgICBzcGxpdFJ1bnNBdFJlbmRlcmVyQm91bmRhcnkocnVucywgZmxvd0NvbnRlbnRz
KTsKLSAgICBBU1NFUlQoIWxpbmUudW5jb21taXR0ZWRXaWR0aCk7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxMYXlvdXQ+IGNyZWF0ZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245567</attachid>
            <date>2015-01-28 12:58:11 -0800</date>
            <delta_ts>2015-01-28 13:57:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141005-20150128125815.patch</filename>
            <type>text/plain</type>
            <size>13875</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5MjIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQxNWNhYTAwNzU5YTIy
ZDNjYmM5ZjMyOTk2ODA3YWNhZmMwOTgxOC4uZjZiYjEwZmNlYTE5MTZkMDFmNTNjYzQ5YTllMjA3
ZTdkNzRiMWI5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTAxLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBEcm9wIHVuY29tbWl0dGVkL2NvbW1pdHRlZCB0ZXJtcyBmcm9tIExpbmVTdGF0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTAwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEZyYWdtZW50cyBmb3Jt
IHNlZ21lbnRzIGFuZCBzZWdtZW50cyB0dXJuIGludG8gcnVucyBvbiB0aGUgbGluZXMuCisgICAg
ICAgIFdlIGFkZCBmcmFnbWVudHMgb25seSB3aGVuIHRoZXkgZml0IHNvIHRoZXkgc2hvdWxkIG5v
dCBiZSBpbiAndW5jb21taXR0ZWQnIHN0YXRlIGF0IGFsbC4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6Y3Jl
YXRlUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6
YWRkRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVN0
YXRlOjphZGRXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OkxpbmVTdGF0ZTo6aGFzV2hpdGVzcGFjZU9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6TGluZVN0YXRlOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpMaW5lU3RhdGU6OmZpcnN0Q2hhcmFjdGVyRml0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMaW5lU3RhdGU6OnJlbW92ZVRyYWlsaW5nV2hpdGVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpyZW1vdmVUcmFpbGluZ1do
aXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Zmlyc3RGcmFn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVMaW5lUnVu
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjbG9zZUxpbmVFbmRpbmdB
bmRBZGp1c3RSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0
ZVRleHRSdW5zKTogVW5uZWNlc3NhcnkgYXNzZXJ0LgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6TGluZVN0YXRlOjpjb21taXRBbmRDcmVhdGVSdW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVN0YXRlOjphZGRVbmNvbW1pdHRl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMaW5lU3Rh
dGU6OmFkZFVuY29tbWl0dGVkV2hpdGVzcGFjZSk6IERlbGV0ZWQuCisKIDIwMTUtMDEtMjcgIEVy
aWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgU2ltcGxpZnkg
aHR0cC90ZXN0cy9tZWRpYS92aWRlby1wbGF5LXN0YWxsLmh0bWwKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA2ZGM3MWJiM2Q4YzRhNWQyZTUz
Njg0OTljNGJhODdjY2YzYTBkYzVmLi40YjcyN2NjNWI3MzBhNWFhZTNlZDkyZGNhYzM1NTE0ZDlm
MTJlMjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxh
eW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQu
Y3BwCkBAIC0yMjcsNTIgKzIyNyw1MiBAQCBzdGF0aWMgZmxvYXQgY29tcHV0ZUxpbmVMZWZ0KEVU
ZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgZmxvYXQgYwogfQogCiBz
dHJ1Y3QgTGluZVN0YXRlIHsKLSAgICB2b2lkIGNvbW1pdEFuZENyZWF0ZVJ1bihMYXlvdXQ6OlJ1
blZlY3RvciYgbGluZVJ1bnMpCisgICAgdm9pZCBjcmVhdGVSdW4oTGF5b3V0OjpSdW5WZWN0b3Im
IGxpbmVSdW5zKQogICAgIHsKLSAgICAgICAgaWYgKHVuY29tbWl0dGVkU3RhcnQgPT0gdW5jb21t
aXR0ZWRFbmQpCisgICAgICAgIGlmIChzZWdtZW50U3RhcnQgPT0gc2VnbWVudEVuZCkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBsaW5lUnVucy5hcHBlbmQoUnVuKHVuY29tbWl0dGVk
U3RhcnQsIHVuY29tbWl0dGVkRW5kLCBjb21taXR0ZWRXaWR0aCwgY29tbWl0dGVkV2lkdGggKyB1
bmNvbW1pdHRlZFdpZHRoLCBmYWxzZSkpOworICAgICAgICBsaW5lUnVucy5hcHBlbmQoUnVuKHNl
Z21lbnRTdGFydCwgc2VnbWVudEVuZCwgcnVuc1dpZHRoLCBydW5zV2lkdGggKyBzZWdtZW50V2lk
dGgsIGZhbHNlKSk7CiAgICAgICAgIC8vIE1vdmUgdW5jb21taXR0ZWQgdG8gY29tbWl0dGVkLgot
ICAgICAgICBjb21taXR0ZWRXaWR0aCArPSB1bmNvbW1pdHRlZFdpZHRoOwotICAgICAgICBjb21t
aXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IHVuY29taXR0ZWRUcmFpbGluZ1doaXRlc3Bh
Y2VXaWR0aDsKLSAgICAgICAgY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gdW5j
b21pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aDsKKyAgICAgICAgcnVuc1dpZHRoICs9IHNl
Z21lbnRXaWR0aDsKKyAgICAgICAgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gc2Vn
bWVudFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOworICAgICAgICBsYXN0UnVuVHJhaWxpbmdXaGl0
ZXNwYWNlTGVuZ3RoID0gc2VnbWVudFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aDsKICAgICAgICAg
aWYgKCFtX2ZpcnN0Q2hhcmFjdGVyRml0cykKLSAgICAgICAgICAgIG1fZmlyc3RDaGFyYWN0ZXJG
aXRzID0gdW5jb21taXR0ZWRTdGFydCArIDEgPiB1bmNvbW1pdHRlZEVuZCB8fCBjb21taXR0ZWRX
aWR0aCA8PSBhdmFpbGFibGVXaWR0aDsKKyAgICAgICAgICAgIG1fZmlyc3RDaGFyYWN0ZXJGaXRz
ID0gc2VnbWVudFN0YXJ0ICsgMSA+IHNlZ21lbnRFbmQgfHwgcnVuc1dpZHRoIDw9IGF2YWlsYWJs
ZVdpZHRoOwogCi0gICAgICAgIHVuY29tbWl0dGVkU3RhcnQgPSB1bmNvbW1pdHRlZEVuZDsKLSAg
ICAgICAgdW5jb21taXR0ZWRXaWR0aCA9IDA7Ci0gICAgICAgIHVuY29taXR0ZWRUcmFpbGluZ1do
aXRlc3BhY2VXaWR0aCA9IDA7Ci0gICAgICAgIHVuY29taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VM
ZW5ndGggPSAwOwotICAgICAgICBtX25ld1VuY29tbWl0dGVkU2VnbWVudCA9IHRydWU7CisgICAg
ICAgIHNlZ21lbnRTdGFydCA9IHNlZ21lbnRFbmQ7CisgICAgICAgIHNlZ21lbnRXaWR0aCA9IDA7
CisgICAgICAgIHNlZ21lbnRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IDA7CisgICAgICAgIHNl
Z21lbnRUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGggPSAwOworICAgICAgICBtX25ld1NlZ21lbnQg
PSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgYWRkVW5jb21taXR0ZWQoY29uc3QgRmxvd0NvbnRl
bnRzOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQorICAgIHZvaWQgYWRkRnJhZ21lbnQoY29uc3Qg
Rmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQogICAgIHsKICAgICAgICAgLy8g
U3RhcnQgYSBuZXcgdW5jb21taXR0ZWQgc2VnbWVudC4KLSAgICAgICAgaWYgKG1fbmV3VW5jb21t
aXR0ZWRTZWdtZW50KSB7Ci0gICAgICAgICAgICB1bmNvbW1pdHRlZFN0YXJ0ID0gZnJhZ21lbnQu
c3RhcnQ7Ci0gICAgICAgICAgICBtX25ld1VuY29tbWl0dGVkU2VnbWVudCA9IGZhbHNlOworICAg
ICAgICBpZiAobV9uZXdTZWdtZW50KSB7CisgICAgICAgICAgICBzZWdtZW50U3RhcnQgPSBmcmFn
bWVudC5zdGFydDsKKyAgICAgICAgICAgIG1fbmV3U2VnbWVudCA9IGZhbHNlOwogICAgICAgICB9
Ci0gICAgICAgIHVuY29tbWl0dGVkV2lkdGggKz0gZnJhZ21lbnQud2lkdGg7Ci0gICAgICAgIHVu
Y29tbWl0dGVkRW5kID0gZnJhZ21lbnQuZW5kOwotICAgICAgICB1bmNvbWl0dGVkVHJhaWxpbmdX
aGl0ZXNwYWNlV2lkdGggPSBmcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50czo6VGV4dEZyYWdt
ZW50OjpXaGl0ZXNwYWNlID8gZnJhZ21lbnQud2lkdGggOiAwOwotICAgICAgICB1bmNvbWl0dGVk
VHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gZnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHM6
OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSA/IGZyYWdtZW50LmVuZCAtIGZyYWdtZW50LnN0YXJ0
ICA6IDA7CisgICAgICAgIHNlZ21lbnRXaWR0aCArPSBmcmFnbWVudC53aWR0aDsKKyAgICAgICAg
c2VnbWVudEVuZCA9IGZyYWdtZW50LmVuZDsKKyAgICAgICAgc2VnbWVudFRyYWlsaW5nV2hpdGVz
cGFjZVdpZHRoID0gZnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHM6OlRleHRGcmFnbWVudDo6
V2hpdGVzcGFjZSA/IGZyYWdtZW50LndpZHRoIDogMDsKKyAgICAgICAgc2VnbWVudFRyYWlsaW5n
V2hpdGVzcGFjZUxlbmd0aCA9IGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzOjpUZXh0RnJh
Z21lbnQ6OldoaXRlc3BhY2UgPyBmcmFnbWVudC5lbmQgLSBmcmFnbWVudC5zdGFydCAgOiAwOwog
ICAgIH0KIAotICAgIHZvaWQgYWRkVW5jb21taXR0ZWRXaGl0ZXNwYWNlKGZsb2F0IHdoaXRlc3Bh
Y2VXaWR0aCkKKyAgICB2b2lkIGFkZFdoaXRlc3BhY2UoZmxvYXQgd2hpdGVzcGFjZVdpZHRoKQog
ICAgIHsKLSAgICAgICAgYWRkVW5jb21taXR0ZWQoRmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQo
dW5jb21taXR0ZWRFbmQsIHVuY29tbWl0dGVkRW5kICsgMSwgd2hpdGVzcGFjZVdpZHRoLCB0cnVl
KSk7CisgICAgICAgIGFkZEZyYWdtZW50KEZsb3dDb250ZW50czo6VGV4dEZyYWdtZW50KHNlZ21l
bnRFbmQsIHNlZ21lbnRFbmQgKyAxLCB3aGl0ZXNwYWNlV2lkdGgsIHRydWUpKTsKICAgICB9CiAK
ICAgICBib29sIGhhc1doaXRlc3BhY2VPbmx5KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVy
biBjb21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCAmJiBjb21taXR0ZWRXaWR0aCA9PSBj
b21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aDsKKyAgICAgICAgcmV0dXJuIGxhc3RSdW5U
cmFpbGluZ1doaXRlc3BhY2VXaWR0aCAmJiBydW5zV2lkdGggPT0gbGFzdFJ1blRyYWlsaW5nV2hp
dGVzcGFjZVdpZHRoOwogICAgIH0KIAogICAgIGZsb2F0IHdpZHRoKCkgY29uc3QKICAgICB7Ci0g
ICAgICAgIHJldHVybiBjb21taXR0ZWRXaWR0aCArIHVuY29tbWl0dGVkV2lkdGg7CisgICAgICAg
IHJldHVybiBydW5zV2lkdGggKyBzZWdtZW50V2lkdGg7CiAgICAgfQogCiAgICAgYm9vbCBmaXRz
KGZsb2F0IGV4dHJhKSBjb25zdApAQCAtMjgwLDMyICsyODAsMzMgQEAgc3RydWN0IExpbmVTdGF0
ZSB7CiAgICAgICAgIHJldHVybiBhdmFpbGFibGVXaWR0aCA+PSB3aWR0aCgpICsgZXh0cmE7CiAg
ICAgfQogCisgICAgYm9vbCBmaXJzdENoYXJhY3RlckZpdHMoKSBjb25zdCB7IHJldHVybiBtX2Zp
cnN0Q2hhcmFjdGVyRml0czsgfQorCiAgICAgdm9pZCByZW1vdmVUcmFpbGluZ1doaXRlc3BhY2Uo
KQogICAgIHsKLSAgICAgICAgY29tbWl0dGVkV2lkdGggLT0gY29tbWl0dGVkVHJhaWxpbmdXaGl0
ZXNwYWNlV2lkdGg7Ci0gICAgICAgIGNvbW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0g
MDsKLSAgICAgICAgY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gMDsKKyAgICAg
ICAgcnVuc1dpZHRoIC09IGxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VXaWR0aDsKKyAgICAgICAg
bGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gMDsKKyAgICAgICAgbGFzdFJ1blRyYWls
aW5nV2hpdGVzcGFjZUxlbmd0aCA9IDA7CiAgICAgfQogCiAgICAgZmxvYXQgYXZhaWxhYmxlV2lk
dGggeyAwIH07CiAgICAgZmxvYXQgbG9naWNhbExlZnRPZmZzZXQgeyAwIH07Ci0KLSAgICB1bnNp
Z25lZCB1bmNvbW1pdHRlZFN0YXJ0IHsgMCB9OwotICAgIHVuc2lnbmVkIHVuY29tbWl0dGVkRW5k
IHsgMCB9OwotICAgIGZsb2F0IHVuY29tbWl0dGVkV2lkdGggeyAwIH07Ci0gICAgZmxvYXQgY29t
bWl0dGVkV2lkdGggeyAwIH07Ci0gICAgZmxvYXQgY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNl
V2lkdGggeyAwIH07IC8vIFVzZSB0aGlzIHRvIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHdp
dGhvdXQgcmUtbWVzdXJpbmcgdGhlIHRleHQuCi0gICAgdW5zaWduZWQgY29tbWl0dGVkVHJhaWxp
bmdXaGl0ZXNwYWNlTGVuZ3RoIHsgMCB9OwotICAgIC8vIEhhdmluZyBvbmUgY2hhcmFjdGVyIG9u
IHRoZSBsaW5lIGRvZXMgbm90IG5lY2Vzc2FyaWx5IG1lYW4gaXQgYWN0dWFsbHkgZml0cy4KLSAg
ICAvLyBGaXJzdCBjaGFyYWN0ZXIgb2YgdGhlIGZpcnN0IGZyYWdtZW50IG1pZ2h0IGJlIGZvcmNl
ZCBvbiB0byB0aGUgY3VycmVudCBsaW5lIGV2ZW4gaWYgaXQgZG9lcyBub3QgZml0LgotICAgIGJv
b2wgbV9maXJzdENoYXJhY3RlckZpdHMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9uZXdVbmNvbW1p
dHRlZFNlZ21lbnQgeyB0cnVlIH07CisgICAgZmxvYXQgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFj
ZVdpZHRoIHsgMCB9OyAvLyBVc2UgdGhpcyB0byByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZSB3
aXRob3V0IHJlLW1lc3VyaW5nIHRoZSB0ZXh0LgorICAgIHVuc2lnbmVkIGxhc3RSdW5UcmFpbGlu
Z1doaXRlc3BhY2VMZW5ndGggeyAwIH07CisgICAgZmxvYXQgcnVuc1dpZHRoIHsgMCB9OwogCiAg
ICAgRmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQgb3ZlcmZsb3dlZEZyYWdtZW50OwogCiBwcml2
YXRlOgotICAgIGZsb2F0IHVuY29taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCB7IDAgfTsK
LSAgICB1bnNpZ25lZCB1bmNvbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoIHsgMCB9Owor
ICAgIHVuc2lnbmVkIHNlZ21lbnRTdGFydCB7IDAgfTsKKyAgICB1bnNpZ25lZCBzZWdtZW50RW5k
IHsgMCB9OworICAgIGZsb2F0IHNlZ21lbnRXaWR0aCB7IDAgfTsKKyAgICAvLyBIYXZpbmcgb25l
IGNoYXJhY3RlciBvbiB0aGUgbGluZSBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIGl0IGFjdHVh
bGx5IGZpdHMuCisgICAgLy8gRmlyc3QgY2hhcmFjdGVyIG9mIHRoZSBmaXJzdCBmcmFnbWVudCBt
aWdodCBiZSBmb3JjZWQgb24gdG8gdGhlIGN1cnJlbnQgbGluZSBldmVuIGlmIGl0IGRvZXMgbm90
IGZpdC4KKyAgICBib29sIG1fZmlyc3RDaGFyYWN0ZXJGaXRzIHsgZmFsc2UgfTsKKyAgICBib29s
IG1fbmV3U2VnbWVudCB7IHRydWUgfTsKKyAgICBmbG9hdCBzZWdtZW50VHJhaWxpbmdXaGl0ZXNw
YWNlV2lkdGggeyAwIH07CisgICAgdW5zaWduZWQgc2VnbWVudFRyYWlsaW5nV2hpdGVzcGFjZUxl
bmd0aCB7IDAgfTsKIH07CiAKIHN0YXRpYyBib29sIHByZVdyYXAoY29uc3QgRmxvd0NvbnRlbnRz
OjpTdHlsZSYgc3R5bGUpCkBAIC0zMTUsNyArMzE2LDcgQEAgc3RhdGljIGJvb2wgcHJlV3JhcChj
b25zdCBGbG93Q29udGVudHM6OlN0eWxlJiBzdHlsZSkKICAgICAKIHN0YXRpYyB2b2lkIHJlbW92
ZVRyYWlsaW5nV2hpdGVzcGFjZShMaW5lU3RhdGUmIGxpbmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0
b3ImIGxpbmVSdW5zLCBjb25zdCBGbG93Q29udGVudHMmIGZsb3dDb250ZW50cykKIHsKLSAgICBp
ZiAoIWxpbmVTdGF0ZS5jb21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGgpCisgICAgaWYg
KCFsaW5lU3RhdGUubGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCkKICAgICAgICAgcmV0
dXJuOwogICAgIAogICAgIC8vIFJlbW92ZSBjb2xsYXBzZWQgd2hpdGVzcGFjZSwgb3Igbm9uLWNv
bGxhcHNlZCBwcmUtd3JhcCB3aGl0ZXNwYWNlLCB1bmxlc3MgaXQncyB0aGUgb25seSBjb250ZW50
IG9uIHRoZSBsaW5lIC1zbyByZW1vdmluZyB0aGUgd2hpdGVzYXBjZSB3b3VsZCBwcm9kdWNlIGFu
IGVtcHR5IGxpbmUuCkBAIC0zMjksOCArMzMwLDggQEAgc3RhdGljIHZvaWQgcmVtb3ZlVHJhaWxp
bmdXaGl0ZXNwYWNlKExpbmVTdGF0ZSYgbGluZVN0YXRlLCBMYXlvdXQ6OlJ1blZlY3RvciYgbGkK
IAogICAgIEFTU0VSVChsaW5lUnVucy5zaXplKCkpOwogICAgIFJ1biYgbGFzdFJ1biA9IGxpbmVS
dW5zLmxhc3QoKTsKLSAgICBsYXN0UnVuLmxvZ2ljYWxSaWdodCAtPSBsaW5lU3RhdGUuY29tbWl0
dGVkVHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGg7Ci0gICAgbGFzdFJ1bi5lbmQgLT0gbGluZVN0YXRl
LmNvbW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aDsKKyAgICBsYXN0UnVuLmxvZ2ljYWxS
aWdodCAtPSBsaW5lU3RhdGUubGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOworICAgIGxh
c3RSdW4uZW5kIC09IGxpbmVTdGF0ZS5sYXN0UnVuVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoOwog
ICAgIGlmIChsYXN0UnVuLnN0YXJ0ID09IGxhc3RSdW4uZW5kKQogICAgICAgICBsaW5lUnVucy5y
ZW1vdmVMYXN0KCk7CiAgICAgbGluZVN0YXRlLnJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZSgpOwpA
QCAtMzk3LDcgKzM5OCw3IEBAIHN0YXRpYyBGbG93Q29udGVudHM6OlRleHRGcmFnbWVudCBmaXJz
dEZyYWdtZW50KEZsb3dDb250ZW50cyYgZmxvd0NvbnRlbnRzLCBjb25zCiAgICAgZWxzZSB7CiAg
ICAgICAgIC8vIFNwZWNpYWwgb3ZlcmZsb3cgcHJlLXdyYXAgd2hpdGVzcGFjZSBoYW5kbGluZzog
aWdub3JlIHRoZSBvdmVyZmxvd2VkIHdoaXRlc3BhY2UgaWYgd2UgbWFuYWdlZCB0byBmaXQgYXQg
bGVhc3Qgb25lIGNoYXJhY3RlciBvbiB0aGUgcHJldmlvdXMgbGluZS4KICAgICAgICAgLy8gV2hl
biB0aGUgbGluZSBpcyB0b28gc2hvcnQgdG8gZml0IG9uZSBjaGFyYWN0ZXIgKHRob3VnaHQgaXQg
c3RpbGwgc3RheXMgb24gdGhlIGxpbmUpIHdlIGNvbnRpbnVlIHdpdGggdGhlIG92ZXJmbG93IHdo
aXRlc3BhY2UgY29udGVudCBvbiB0aGlzIGxpbmUuCi0gICAgICAgIGlmIChmaXJzdEZyYWdtZW50
LnR5cGUgPT0gRmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UgJiYgcHJlV3Jh
cChzdHlsZSkgJiYgcHJldmlvdXNMaW5lLm1fZmlyc3RDaGFyYWN0ZXJGaXRzKSB7CisgICAgICAg
IGlmIChmaXJzdEZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQ6Oldo
aXRlc3BhY2UgJiYgcHJlV3JhcChzdHlsZSkgJiYgcHJldmlvdXNMaW5lLmZpcnN0Q2hhcmFjdGVy
Rml0cygpKSB7CiAgICAgICAgICAgICBmaXJzdEZyYWdtZW50ID0gZmxvd0NvbnRlbnRzLm5leHRU
ZXh0RnJhZ21lbnQoKTsKICAgICAgICAgICAgIC8vIElmIHNraXBwaW5nIHRoZSB3aGl0ZXNwYWNl
IHB1dHMgdXMgb24gYSBoYXJkIG5ld2xpbmUsIHNraXAgdGhlIG5ld2xpbmUgdG9vIGFzIHdlIGFs
cmVhZHkgd3JhcHBlZCB0aGUgbGluZS4KICAgICAgICAgICAgIGlmIChmaXJzdEZyYWdtZW50LnR5
cGUgPT0gRmxvd0NvbnRlbnRzOjpUZXh0RnJhZ21lbnQ6OkxpbmVCcmVhaykKQEAgLTQyMSw3ICs0
MjIsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0
IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogICAgICAgICBpZiAoZnJhZ21lbnQudHlw
ZSA9PSBGbG93Q29udGVudHM6OlRleHRGcmFnbWVudDo6TGluZUJyZWFrKSB7CiAgICAgICAgICAg
ICAvLyBBZGQgdGhlIG5ldyBsaW5lIGZyYWdtZW50IG9ubHkgaWYgdGhlcmUncyBub3RoaW5nIG9u
IHRoZSBsaW5lLiAob3RoZXJ3aXNlIHRoZSBleHRyYSBuZXcgbGluZSBjaGFyYWN0ZXIgd291bGQg
c2hvdyB1cCBhdCB0aGUgZW5kIG9mIHRoZSBjb250ZW50LikKICAgICAgICAgICAgIGlmICghbGlu
ZS53aWR0aCgpKQotICAgICAgICAgICAgICAgIGxpbmUuYWRkVW5jb21taXR0ZWQoZnJhZ21lbnQp
OworICAgICAgICAgICAgICAgIGxpbmUuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGxpbmVDYW5CZVdyYXBwZWQgJiYgIWxp
bmUuZml0cyhmcmFnbWVudC53aWR0aCkpIHsKQEAgLTQzNiw3ICs0MzcsNyBAQCBzdGF0aWMgYm9v
bCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlv
dXNMaW5lLCBMYXlvdQogICAgICAgICAgICAgICAgIGlmICghc3R5bGUuY29sbGFwc2VXaGl0ZXNw
YWNlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNwbGl0IHRoZSBmcmFnbWVudDsgKG1vZGlm
aWVkKWZyYWdtZW50IHN0YXlzIG9uIHRoaXMgbGluZSwgb3ZlcmZsb3dlZEZyYWdtZW50IGlzIHB1
c2hlZCB0byBuZXh0IGxpbmUuCiAgICAgICAgICAgICAgICAgICAgIGxpbmUub3ZlcmZsb3dlZEZy
YWdtZW50ID0gc3BsaXRGcmFnbWVudFRvRml0TGluZShmcmFnbWVudCwgbGluZS5hdmFpbGFibGVX
aWR0aCAtIGxpbmUud2lkdGgoKSwgZW1wdHlMaW5lLCBmbG93Q29udGVudHMpOwotICAgICAgICAg
ICAgICAgICAgICBsaW5lLmFkZFVuY29tbWl0dGVkKGZyYWdtZW50KTsKKyAgICAgICAgICAgICAg
ICAgICAgbGluZS5hZGRGcmFnbWVudChmcmFnbWVudCk7CiAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgIC8vIFdoZW4gd2hpdGVzcGFjZSBjb2xsYXBzZSBpcyBvbiwgd2hpdGVzcGFj
ZSB0aGF0IGRvZXNuJ3QgZml0IGlzIHNpbXBseSBza2lwcGVkLgogICAgICAgICAgICAgICAgIGJy
ZWFrOwpAQCAtNDQ1LDEyICs0NDYsMTIgQEAgc3RhdGljIGJvb2wgY3JlYXRlTGluZVJ1bnMoTGlu
ZVN0YXRlJiBsaW5lLCBjb25zdCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSwgTGF5b3UKICAgICAg
ICAgICAgIGlmICgoZW1wdHlMaW5lICYmIHN0eWxlLmJyZWFrV29yZE9uT3ZlcmZsb3cpIHx8ICFz
dHlsZS53cmFwTGluZXMpIHsKICAgICAgICAgICAgICAgICAvLyBTcGxpdCB0aGUgZnJhZ21lbnQ7
IChtb2RpZmllZClmcmFnbWVudCBzdGF5cyBvbiB0aGlzIGxpbmUsIG92ZXJmbG93ZWRGcmFnbWVu
dCBpcyBwdXNoZWQgdG8gbmV4dCBsaW5lLgogICAgICAgICAgICAgICAgIGxpbmUub3ZlcmZsb3dl
ZEZyYWdtZW50ID0gc3BsaXRGcmFnbWVudFRvRml0TGluZShmcmFnbWVudCwgbGluZS5hdmFpbGFi
bGVXaWR0aCAtIGxpbmUud2lkdGgoKSwgZW1wdHlMaW5lLCBmbG93Q29udGVudHMpOwotICAgICAg
ICAgICAgICAgIGxpbmUuYWRkVW5jb21taXR0ZWQoZnJhZ21lbnQpOworICAgICAgICAgICAgICAg
IGxpbmUuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm9uLWJyZWFrYWJsZSBub24td2hpdGVzcGFjZSBm
aXJzdCBmcmFnbWVudC4gQWRkIGl0IHRvIHRoZSBjdXJyZW50IGxpbmUuIC1pdCBvdmVyZmxvd3Mg
dGhvdWdoLgogICAgICAgICAgICAgaWYgKGVtcHR5TGluZSkgewotICAgICAgICAgICAgICAgIGxp
bmUuYWRkVW5jb21taXR0ZWQoZnJhZ21lbnQpOworICAgICAgICAgICAgICAgIGxpbmUuYWRkRnJh
Z21lbnQoZnJhZ21lbnQpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgLy8gTm9uLWJyZWFrYWJsZSBub24td2hpdGVzcGFjZSBmcmFnbWVudCB3aGVu
IHRoZXJlJ3MgYWxyZWFkeSBjb250ZW50IG9uIHRoZSBsaW5lLiBQdXNoIGl0IHRvIHRoZSBuZXh0
IGxpbmUuCkBAIC00NjAsMTQgKzQ2MSwxNCBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhM
aW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogICAg
ICAgICAvLyBXaGVuIHRoZSBjdXJyZW50IGZyYWdtZW50IGlzIGNvbGxhcHNlZCB3aGl0ZXNwYWNl
LCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHJ1biBmb3Igd2hhdCB3ZSd2ZSBwcm9jZXNzZWQgc28gZmFy
LgogICAgICAgICBpZiAoZnJhZ21lbnQuaXNDb2xsYXBzZWQpIHsKICAgICAgICAgICAgIC8vIE9u
ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRvIHByZXNlcnZlLgotICAgICAgICAgICAgbGluZS5hZGRV
bmNvbW1pdHRlZFdoaXRlc3BhY2Uoc3R5bGUuc3BhY2VXaWR0aCk7Ci0gICAgICAgICAgICBsaW5l
LmNvbW1pdEFuZENyZWF0ZVJ1bihsaW5lUnVucyk7CisgICAgICAgICAgICBsaW5lLmFkZFdoaXRl
c3BhY2Uoc3R5bGUuc3BhY2VXaWR0aCk7CisgICAgICAgICAgICBsaW5lLmNyZWF0ZVJ1bihsaW5l
UnVucyk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbGluZS5hZGRVbmNvbW1pdHRlZChm
cmFnbWVudCk7CisgICAgICAgICAgICBsaW5lLmFkZEZyYWdtZW50KGZyYWdtZW50KTsKICAgICAg
ICAgLy8gRmluZCB0aGUgbmV4dCB0ZXh0IGZyYWdtZW50LgogICAgICAgICBmcmFnbWVudCA9IGZs
b3dDb250ZW50cy5uZXh0VGV4dEZyYWdtZW50KGxpbmUud2lkdGgoKSk7CiAgICAgfQotICAgIGxp
bmUuY29tbWl0QW5kQ3JlYXRlUnVuKGxpbmVSdW5zKTsKKyAgICBsaW5lLmNyZWF0ZVJ1bihsaW5l
UnVucyk7CiAgICAgcmV0dXJuIGZyYWdtZW50LmlzRW1wdHkoKSAmJiBsaW5lLm92ZXJmbG93ZWRG
cmFnbWVudC5pc0VtcHR5KCk7CiB9CiAKQEAgLTQ4MCw3ICs0ODEsNyBAQCBzdGF0aWMgdm9pZCBj
bG9zZUxpbmVFbmRpbmdBbmRBZGp1c3RSdW5zKExpbmVTdGF0ZSYgbGluZSwgTGF5b3V0OjpSdW5W
ZWN0b3ImIHJ1bgogICAgIGlmICghcnVucy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKICAgICAv
LyBBZGp1c3QgcnVucycgcG9zaXRpb24gYnkgdGFraW5nIGxpbmUncyBhbGlnbm1lbnQgaW50byBh
Y2NvdW50LgotICAgIGlmIChmbG9hdCBsaW5lTG9naWNhbExlZnQgPSBjb21wdXRlTGluZUxlZnQo
Zmxvd0NvbnRlbnRzLnN0eWxlKCkudGV4dEFsaWduLCBsaW5lLmF2YWlsYWJsZVdpZHRoLCBsaW5l
LmNvbW1pdHRlZFdpZHRoLCBsaW5lLmxvZ2ljYWxMZWZ0T2Zmc2V0KSkgeworICAgIGlmIChmbG9h
dCBsaW5lTG9naWNhbExlZnQgPSBjb21wdXRlTGluZUxlZnQoZmxvd0NvbnRlbnRzLnN0eWxlKCku
dGV4dEFsaWduLCBsaW5lLmF2YWlsYWJsZVdpZHRoLCBsaW5lLnJ1bnNXaWR0aCwgbGluZS5sb2dp
Y2FsTGVmdE9mZnNldCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcHJldmlvdXNSdW5D
b3VudDsgaSA8IHJ1bnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHJ1bnNbaV0ubG9naWNh
bExlZnQgKz0gbGluZUxvZ2ljYWxMZWZ0OwogICAgICAgICAgICAgcnVuc1tpXS5sb2dpY2FsUmln
aHQgKz0gbGluZUxvZ2ljYWxMZWZ0OwpAQCAtNTM0LDcgKzUzNSw2IEBAIHN0YXRpYyB2b2lkIGNy
ZWF0ZVRleHRSdW5zKExheW91dDo6UnVuVmVjdG9yJiBydW5zLCBSZW5kZXJCbG9ja0Zsb3cmIGZs
b3csIHVuc2lnCiAgICAgfSB3aGlsZSAoIWlzRW5kT2ZDb250ZW50KTsKIAogICAgIHNwbGl0UnVu
c0F0UmVuZGVyZXJCb3VuZGFyeShydW5zLCBmbG93Q29udGVudHMpOwotICAgIEFTU0VSVCghbGlu
ZS51bmNvbW1pdHRlZFdpZHRoKTsKIH0KIAogc3RkOjp1bmlxdWVfcHRyPExheW91dD4gY3JlYXRl
KFJlbmRlckJsb2NrRmxvdyYgZmxvdykK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245569</attachid>
            <date>2015-01-28 13:57:16 -0800</date>
            <delta_ts>2015-01-28 15:36:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-141005-20150128135720.patch</filename>
            <type>text/plain</type>
            <size>13957</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc5Mjg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmJiZmZlYjcyMzhiMmY0
OGExZmJjODhkMzdjZjE1NzAxZThhYzI1NS4uMTQyZTRkOGEzZDdiMDc5ZjZhYjkzZjcyNzhmNDAz
YTc0NWQ4N2Q1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE1LTAxLTI4ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgU2ltcGxlIGxpbmUgbGF5b3V0
OiBEcm9wIHVuY29tbWl0dGVkL2NvbW1pdHRlZCB0ZXJtcyBmcm9tIExpbmVTdGF0ZS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MTAwNQorCisgICAg
ICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIEZyYWdtZW50cyBmb3Jt
IHNlZ21lbnRzIGFuZCBzZWdtZW50cyB0dXJuIGludG8gcnVucyBvbiB0aGUgbGluZXMuCisgICAg
ICAgIFdlIGFkZCBmcmFnbWVudHMgb25seSB3aGVuIHRoZXkgZml0IHNvIHRoZXkgc2hvdWxkIG5v
dCBiZSBpbiAndW5jb21taXR0ZWQnIHN0YXRlIGF0IGFsbC4KKworICAgICAgICBObyBjaGFuZ2Ug
aW4gZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHJlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6Y3Jl
YXRlUnVuKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OkxpbmVTdGF0ZTo6
YWRkRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVN0
YXRlOjphZGRXaGl0ZXNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6
OkxpbmVTdGF0ZTo6aGFzV2hpdGVzcGFjZU9ubHkpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6TGluZVN0YXRlOjp3aWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVM
aW5lTGF5b3V0OjpMaW5lU3RhdGU6OmZpcnN0Q2hhcmFjdGVyRml0cyk6CisgICAgICAgIChXZWJD
b3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMaW5lU3RhdGU6OnJlbW92ZVRyYWlsaW5nV2hpdGVzcGFj
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpyZW1vdmVUcmFpbGluZ1do
aXRlc3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6Zmlyc3RGcmFn
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjcmVhdGVMaW5lUnVu
cyk6CisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpjbG9zZUxpbmVFbmRpbmdB
bmRBZGp1c3RSdW5zKToKKyAgICAgICAgKFdlYkNvcmU6OlNpbXBsZUxpbmVMYXlvdXQ6OmNyZWF0
ZVRleHRSdW5zKTogVW5uZWNlc3NhcnkgYXNzZXJ0LgorICAgICAgICAoV2ViQ29yZTo6U2ltcGxl
TGluZUxheW91dDo6TGluZVN0YXRlOjpjb21taXRBbmRDcmVhdGVSdW4pOiBEZWxldGVkLgorICAg
ICAgICAoV2ViQ29yZTo6U2ltcGxlTGluZUxheW91dDo6TGluZVN0YXRlOjphZGRVbmNvbW1pdHRl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTaW1wbGVMaW5lTGF5b3V0OjpMaW5lU3Rh
dGU6OmFkZFVuY29tbWl0dGVkV2hpdGVzcGFjZSk6IERlbGV0ZWQuCisKIDIwMTUtMDEtMjggIEJy
aWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24uZWR1PgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IHJlbW92ZSBDU1Muc2V0UHJvcGVydHlUZXh0LCBDU1MudG9nZ2xlUHJvcGVydHkgYW5k
IHJlbGF0ZWQgZGVhZCBjb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
U2ltcGxlTGluZUxheW91dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGlu
ZUxheW91dC5jcHAKaW5kZXggY2I1YzFjNjVmY2Y2Y2QyMmExNDllNTlmZWEzNTM0YTQ2NTc2Nzk2
OS4uNDNjNTBmM2U4MWYxNDRhOGY1ZWNmMzQwNWE5NzU3MjdiOGI2YWNlZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcApAQCAtMjI4LDUyICsyMjgs
NTIgQEAgc3RhdGljIGZsb2F0IGNvbXB1dGVMaW5lTGVmdChFVGV4dEFsaWduIHRleHRBbGlnbiwg
ZmxvYXQgYXZhaWxhYmxlV2lkdGgsIGZsb2F0IGMKIH0KIAogc3RydWN0IExpbmVTdGF0ZSB7Ci0g
ICAgdm9pZCBjb21taXRBbmRDcmVhdGVSdW4oTGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5zKQor
ICAgIHZvaWQgY3JlYXRlUnVuKExheW91dDo6UnVuVmVjdG9yJiBsaW5lUnVucykKICAgICB7Ci0g
ICAgICAgIGlmICh1bmNvbW1pdHRlZFN0YXJ0ID09IHVuY29tbWl0dGVkRW5kKQorICAgICAgICBp
ZiAoc2VnbWVudFN0YXJ0ID09IHNlZ21lbnRFbmQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgbGluZVJ1bnMuYXBwZW5kKFJ1bih1bmNvbW1pdHRlZFN0YXJ0LCB1bmNvbW1pdHRlZEVu
ZCwgY29tbWl0dGVkV2lkdGgsIGNvbW1pdHRlZFdpZHRoICsgdW5jb21taXR0ZWRXaWR0aCwgZmFs
c2UpKTsKKyAgICAgICAgbGluZVJ1bnMuYXBwZW5kKFJ1bihzZWdtZW50U3RhcnQsIHNlZ21lbnRF
bmQsIHJ1bnNXaWR0aCwgcnVuc1dpZHRoICsgc2VnbWVudFdpZHRoLCBmYWxzZSkpOwogICAgICAg
ICAvLyBNb3ZlIHVuY29tbWl0dGVkIHRvIGNvbW1pdHRlZC4KLSAgICAgICAgY29tbWl0dGVkV2lk
dGggKz0gdW5jb21taXR0ZWRXaWR0aDsKLSAgICAgICAgY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNw
YWNlV2lkdGggPSB1bmNvbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGg7Ci0gICAgICAgIGNv
bW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA9IHVuY29taXR0ZWRUcmFpbGluZ1doaXRl
c3BhY2VMZW5ndGg7CisgICAgICAgIHJ1bnNXaWR0aCArPSBzZWdtZW50V2lkdGg7CisgICAgICAg
IGxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IHNlZ21lbnRUcmFpbGluZ1doaXRlc3Bh
Y2VXaWR0aDsKKyAgICAgICAgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA9IHNlZ21l
bnRUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGg7CiAgICAgICAgIGlmICghbV9maXJzdENoYXJhY3Rl
ckZpdHMpCi0gICAgICAgICAgICBtX2ZpcnN0Q2hhcmFjdGVyRml0cyA9IHVuY29tbWl0dGVkU3Rh
cnQgKyAxID4gdW5jb21taXR0ZWRFbmQgfHwgY29tbWl0dGVkV2lkdGggPD0gYXZhaWxhYmxlV2lk
dGg7CisgICAgICAgICAgICBtX2ZpcnN0Q2hhcmFjdGVyRml0cyA9IHNlZ21lbnRTdGFydCArIDEg
PiBzZWdtZW50RW5kIHx8IHJ1bnNXaWR0aCA8PSBhdmFpbGFibGVXaWR0aDsKIAotICAgICAgICB1
bmNvbW1pdHRlZFN0YXJ0ID0gdW5jb21taXR0ZWRFbmQ7Ci0gICAgICAgIHVuY29tbWl0dGVkV2lk
dGggPSAwOwotICAgICAgICB1bmNvbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggPSAwOwot
ICAgICAgICB1bmNvbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gMDsKLSAgICAgICAg
bV9uZXdVbmNvbW1pdHRlZFNlZ21lbnQgPSB0cnVlOworICAgICAgICBzZWdtZW50U3RhcnQgPSBz
ZWdtZW50RW5kOworICAgICAgICBzZWdtZW50V2lkdGggPSAwOworICAgICAgICBzZWdtZW50VHJh
aWxpbmdXaGl0ZXNwYWNlV2lkdGggPSAwOworICAgICAgICBzZWdtZW50VHJhaWxpbmdXaGl0ZXNw
YWNlTGVuZ3RoID0gMDsKKyAgICAgICAgbV9uZXdTZWdtZW50ID0gdHJ1ZTsKICAgICB9CiAKLSAg
ICB2b2lkIGFkZFVuY29tbWl0dGVkKGNvbnN0IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJh
Z21lbnQmIGZyYWdtZW50KQorICAgIHZvaWQgYWRkRnJhZ21lbnQoY29uc3QgRmxvd0NvbnRlbnRz
SXRlcmF0b3I6OlRleHRGcmFnbWVudCYgZnJhZ21lbnQpCiAgICAgewogICAgICAgICAvLyBTdGFy
dCBhIG5ldyB1bmNvbW1pdHRlZCBzZWdtZW50LgotICAgICAgICBpZiAobV9uZXdVbmNvbW1pdHRl
ZFNlZ21lbnQpIHsKLSAgICAgICAgICAgIHVuY29tbWl0dGVkU3RhcnQgPSBmcmFnbWVudC5zdGFy
dDsKLSAgICAgICAgICAgIG1fbmV3VW5jb21taXR0ZWRTZWdtZW50ID0gZmFsc2U7CisgICAgICAg
IGlmIChtX25ld1NlZ21lbnQpIHsKKyAgICAgICAgICAgIHNlZ21lbnRTdGFydCA9IGZyYWdtZW50
LnN0YXJ0OworICAgICAgICAgICAgbV9uZXdTZWdtZW50ID0gZmFsc2U7CiAgICAgICAgIH0KLSAg
ICAgICAgdW5jb21taXR0ZWRXaWR0aCArPSBmcmFnbWVudC53aWR0aDsKLSAgICAgICAgdW5jb21t
aXR0ZWRFbmQgPSBmcmFnbWVudC5lbmQ7Ci0gICAgICAgIHVuY29taXR0ZWRUcmFpbGluZ1doaXRl
c3BhY2VXaWR0aCA9IGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudDo6V2hpdGVzcGFjZSA/IGZyYWdtZW50LndpZHRoIDogMDsKLSAgICAgICAgdW5jb21p
dHRlZFRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA9IGZyYWdtZW50LnR5cGUgPT0gRmxvd0NvbnRl
bnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSA/IGZyYWdtZW50LmVuZCAtIGZy
YWdtZW50LnN0YXJ0ICA6IDA7CisgICAgICAgIHNlZ21lbnRXaWR0aCArPSBmcmFnbWVudC53aWR0
aDsKKyAgICAgICAgc2VnbWVudEVuZCA9IGZyYWdtZW50LmVuZDsKKyAgICAgICAgc2VnbWVudFRy
YWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gZnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVy
YXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlID8gZnJhZ21lbnQud2lkdGggOiAwOworICAg
ICAgICBzZWdtZW50VHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gZnJhZ21lbnQudHlwZSA9PSBG
bG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlID8gZnJhZ21lbnQu
ZW5kIC0gZnJhZ21lbnQuc3RhcnQgIDogMDsKICAgICB9CiAKLSAgICB2b2lkIGFkZFVuY29tbWl0
dGVkV2hpdGVzcGFjZShmbG9hdCB3aGl0ZXNwYWNlV2lkdGgpCisgICAgdm9pZCBhZGRXaGl0ZXNw
YWNlKGZsb2F0IHdoaXRlc3BhY2VXaWR0aCkKICAgICB7Ci0gICAgICAgIGFkZFVuY29tbWl0dGVk
KEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQodW5jb21taXR0ZWRFbmQsIHVuY29t
bWl0dGVkRW5kICsgMSwgd2hpdGVzcGFjZVdpZHRoLCB0cnVlKSk7CisgICAgICAgIGFkZEZyYWdt
ZW50KEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQoc2VnbWVudEVuZCwgc2VnbWVu
dEVuZCArIDEsIHdoaXRlc3BhY2VXaWR0aCwgdHJ1ZSkpOwogICAgIH0KIAogICAgIGJvb2wgaGFz
V2hpdGVzcGFjZU9ubHkoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGNvbW1pdHRlZFRy
YWlsaW5nV2hpdGVzcGFjZVdpZHRoICYmIGNvbW1pdHRlZFdpZHRoID09IGNvbW1pdHRlZFRyYWls
aW5nV2hpdGVzcGFjZVdpZHRoOworICAgICAgICByZXR1cm4gbGFzdFJ1blRyYWlsaW5nV2hpdGVz
cGFjZVdpZHRoICYmIHJ1bnNXaWR0aCA9PSBsYXN0UnVuVHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGg7
CiAgICAgfQogCiAgICAgZmxvYXQgd2lkdGgoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJu
IGNvbW1pdHRlZFdpZHRoICsgdW5jb21taXR0ZWRXaWR0aDsKKyAgICAgICAgcmV0dXJuIHJ1bnNX
aWR0aCArIHNlZ21lbnRXaWR0aDsKICAgICB9CiAKICAgICBib29sIGZpdHMoZmxvYXQgZXh0cmEp
IGNvbnN0CkBAIC0yODEsMzIgKzI4MSwzMiBAQCBzdHJ1Y3QgTGluZVN0YXRlIHsKICAgICAgICAg
cmV0dXJuIGF2YWlsYWJsZVdpZHRoID49IHdpZHRoKCkgKyBleHRyYTsKICAgICB9CiAKKyAgICBi
b29sIGZpcnN0Q2hhcmFjdGVyRml0cygpIGNvbnN0IHsgcmV0dXJuIG1fZmlyc3RDaGFyYWN0ZXJG
aXRzOyB9CisKICAgICB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZSgpCiAgICAgewotICAg
ICAgICBjb21taXR0ZWRXaWR0aCAtPSBjb21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aDsK
LSAgICAgICAgY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggPSAwOwotICAgICAgICBj
b21taXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGggPSAwOworICAgICAgICBydW5zV2lkdGgg
LT0gbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoOworICAgICAgICBsYXN0UnVuVHJhaWxp
bmdXaGl0ZXNwYWNlV2lkdGggPSAwOworICAgICAgICBsYXN0UnVuVHJhaWxpbmdXaGl0ZXNwYWNl
TGVuZ3RoID0gMDsKICAgICB9CiAKICAgICBmbG9hdCBhdmFpbGFibGVXaWR0aCB7IDAgfTsKICAg
ICBmbG9hdCBsb2dpY2FsTGVmdE9mZnNldCB7IDAgfTsKKyAgICBmbG9hdCBydW5zV2lkdGggeyAw
IH07CisgICAgZmxvYXQgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoIHsgMCB9OyAvLyBV
c2UgdGhpcyB0byByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZSB3aXRob3V0IHJlLW1lc3VyaW5n
IHRoZSB0ZXh0LgorICAgIHVuc2lnbmVkIGxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VMZW5ndGgg
eyAwIH07CisgICAgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBvdmVyZmxvd2Vk
RnJhZ21lbnQ7CiAKLSAgICB1bnNpZ25lZCB1bmNvbW1pdHRlZFN0YXJ0IHsgMCB9OwotICAgIHVu
c2lnbmVkIHVuY29tbWl0dGVkRW5kIHsgMCB9OwotICAgIGZsb2F0IHVuY29tbWl0dGVkV2lkdGgg
eyAwIH07Ci0gICAgZmxvYXQgY29tbWl0dGVkV2lkdGggeyAwIH07Ci0gICAgZmxvYXQgY29tbWl0
dGVkVHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggeyAwIH07IC8vIFVzZSB0aGlzIHRvIHJlbW92ZSB0
cmFpbGluZyB3aGl0ZXNwYWNlIHdpdGhvdXQgcmUtbWVzdXJpbmcgdGhlIHRleHQuCi0gICAgdW5z
aWduZWQgY29tbWl0dGVkVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoIHsgMCB9OworcHJpdmF0ZToK
KyAgICB1bnNpZ25lZCBzZWdtZW50U3RhcnQgeyAwIH07CisgICAgdW5zaWduZWQgc2VnbWVudEVu
ZCB7IDAgfTsKKyAgICBmbG9hdCBzZWdtZW50V2lkdGggeyAwIH07CisgICAgZmxvYXQgc2VnbWVu
dFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoIHsgMCB9OworICAgIHVuc2lnbmVkIHNlZ21lbnRUcmFp
bGluZ1doaXRlc3BhY2VMZW5ndGggeyAwIH07CiAgICAgLy8gSGF2aW5nIG9uZSBjaGFyYWN0ZXIg
b24gdGhlIGxpbmUgZG9lcyBub3QgbmVjZXNzYXJpbHkgbWVhbiBpdCBhY3R1YWxseSBmaXRzLgog
ICAgIC8vIEZpcnN0IGNoYXJhY3RlciBvZiB0aGUgZmlyc3QgZnJhZ21lbnQgbWlnaHQgYmUgZm9y
Y2VkIG9uIHRvIHRoZSBjdXJyZW50IGxpbmUgZXZlbiBpZiBpdCBkb2VzIG5vdCBmaXQuCiAgICAg
Ym9vbCBtX2ZpcnN0Q2hhcmFjdGVyRml0cyB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX25ld1VuY29t
bWl0dGVkU2VnbWVudCB7IHRydWUgfTsKLQotICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0
RnJhZ21lbnQgb3ZlcmZsb3dlZEZyYWdtZW50OwotCi1wcml2YXRlOgotICAgIGZsb2F0IHVuY29t
aXR0ZWRUcmFpbGluZ1doaXRlc3BhY2VXaWR0aCB7IDAgfTsKLSAgICB1bnNpZ25lZCB1bmNvbWl0
dGVkVHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoIHsgMCB9OworICAgIGJvb2wgbV9uZXdTZWdtZW50
IHsgdHJ1ZSB9OwogfTsKIAogc3RhdGljIGJvb2wgcHJlV3JhcChjb25zdCBGbG93Q29udGVudHNJ
dGVyYXRvcjo6U3R5bGUmIHN0eWxlKQpAQCAtMzE2LDcgKzMxNiw3IEBAIHN0YXRpYyBib29sIHBy
ZVdyYXAoY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlN0eWxlJiBzdHlsZSkKICAgICAKIHN0
YXRpYyB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShMaW5lU3RhdGUmIGxpbmVTdGF0ZSwg
TGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5zLCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYg
Zmxvd0NvbnRlbnRzSXRlcmF0b3IpCiB7Ci0gICAgaWYgKCFsaW5lU3RhdGUuY29tbWl0dGVkVHJh
aWxpbmdXaGl0ZXNwYWNlTGVuZ3RoKQorICAgIGlmICghbGluZVN0YXRlLmxhc3RSdW5UcmFpbGlu
Z1doaXRlc3BhY2VMZW5ndGgpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICAvLyBSZW1vdmUg
Y29sbGFwc2VkIHdoaXRlc3BhY2UsIG9yIG5vbi1jb2xsYXBzZWQgcHJlLXdyYXAgd2hpdGVzcGFj
ZSwgdW5sZXNzIGl0J3MgdGhlIG9ubHkgY29udGVudCBvbiB0aGUgbGluZSAtc28gcmVtb3Zpbmcg
dGhlIHdoaXRlc2FwY2Ugd291bGQgcHJvZHVjZSBhbiBlbXB0eSBsaW5lLgpAQCAtMzMwLDggKzMz
MCw4IEBAIHN0YXRpYyB2b2lkIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShMaW5lU3RhdGUmIGxp
bmVTdGF0ZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpCiAKICAgICBBU1NFUlQobGluZVJ1bnMuc2l6
ZSgpKTsKICAgICBSdW4mIGxhc3RSdW4gPSBsaW5lUnVucy5sYXN0KCk7Ci0gICAgbGFzdFJ1bi5s
b2dpY2FsUmlnaHQgLT0gbGluZVN0YXRlLmNvbW1pdHRlZFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRo
OwotICAgIGxhc3RSdW4uZW5kIC09IGxpbmVTdGF0ZS5jb21taXR0ZWRUcmFpbGluZ1doaXRlc3Bh
Y2VMZW5ndGg7CisgICAgbGFzdFJ1bi5sb2dpY2FsUmlnaHQgLT0gbGluZVN0YXRlLmxhc3RSdW5U
cmFpbGluZ1doaXRlc3BhY2VXaWR0aDsKKyAgICBsYXN0UnVuLmVuZCAtPSBsaW5lU3RhdGUubGFz
dFJ1blRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aDsKICAgICBpZiAobGFzdFJ1bi5zdGFydCA9PSBs
YXN0UnVuLmVuZCkKICAgICAgICAgbGluZVJ1bnMucmVtb3ZlTGFzdCgpOwogICAgIGxpbmVTdGF0
ZS5yZW1vdmVUcmFpbGluZ1doaXRlc3BhY2UoKTsKQEAgLTM5OCw3ICszOTgsNyBAQCBzdGF0aWMg
Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudCBmaXJzdEZyYWdtZW50KEZsb3dDb250
ZW50c0l0ZXJhdG9yJiBmbAogICAgIGVsc2UgewogICAgICAgICAvLyBTcGVjaWFsIG92ZXJmbG93
IHByZS13cmFwIHdoaXRlc3BhY2UgaGFuZGxpbmc6IGlnbm9yZSB0aGUgb3ZlcmZsb3dlZCB3aGl0
ZXNwYWNlIGlmIHdlIG1hbmFnZWQgdG8gZml0IGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIgb24gdGhl
IHByZXZpb3VzIGxpbmUuCiAgICAgICAgIC8vIFdoZW4gdGhlIGxpbmUgaXMgdG9vIHNob3J0IHRv
IGZpdCBvbmUgY2hhcmFjdGVyICh0aG91Z2h0IGl0IHN0aWxsIHN0YXlzIG9uIHRoZSBsaW5lKSB3
ZSBjb250aW51ZSB3aXRoIHRoZSBvdmVyZmxvdyB3aGl0ZXNwYWNlIGNvbnRlbnQgb24gdGhpcyBs
aW5lLgotICAgICAgICBpZiAoZmlyc3RGcmFnbWVudC50eXBlID09IEZsb3dDb250ZW50c0l0ZXJh
dG9yOjpUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UgJiYgcHJlV3JhcChzdHlsZSkgJiYgcHJldmlv
dXNMaW5lLm1fZmlyc3RDaGFyYWN0ZXJGaXRzKSB7CisgICAgICAgIGlmIChmaXJzdEZyYWdtZW50
LnR5cGUgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSAm
JiBwcmVXcmFwKHN0eWxlKSAmJiBwcmV2aW91c0xpbmUuZmlyc3RDaGFyYWN0ZXJGaXRzKCkpIHsK
ICAgICAgICAgICAgIGZpcnN0RnJhZ21lbnQgPSBmbG93Q29udGVudHNJdGVyYXRvci5uZXh0VGV4
dEZyYWdtZW50KCk7CiAgICAgICAgICAgICAvLyBJZiBza2lwcGluZyB0aGUgd2hpdGVzcGFjZSBw
dXRzIHVzIG9uIGEgaGFyZCBuZXdsaW5lLCBza2lwIHRoZSBuZXdsaW5lIHRvbyBhcyB3ZSBhbHJl
YWR5IHdyYXBwZWQgdGhlIGxpbmUuCiAgICAgICAgICAgICBpZiAoZmlyc3RGcmFnbWVudC50eXBl
ID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQ6OkxpbmVCcmVhaykKQEAgLTQy
Miw3ICs0MjIsNyBAQCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUs
IGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogICAgICAgICBpZiAoZnJhZ21l
bnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpMaW5lQnJlYWsp
IHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3IGxpbmUgZnJhZ21lbnQgb25seSBpZiB0aGVy
ZSdzIG5vdGhpbmcgb24gdGhlIGxpbmUuIChvdGhlcndpc2UgdGhlIGV4dHJhIG5ldyBsaW5lIGNo
YXJhY3RlciB3b3VsZCBzaG93IHVwIGF0IHRoZSBlbmQgb2YgdGhlIGNvbnRlbnQuKQogICAgICAg
ICAgICAgaWYgKCFsaW5lLndpZHRoKCkpCi0gICAgICAgICAgICAgICAgbGluZS5hZGRVbmNvbW1p
dHRlZChmcmFnbWVudCk7CisgICAgICAgICAgICAgICAgbGluZS5hZGRGcmFnbWVudChmcmFnbWVu
dCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBpZiAobGluZUNhbkJl
V3JhcHBlZCAmJiAhbGluZS5maXRzKGZyYWdtZW50LndpZHRoKSkgewpAQCAtNDM3LDcgKzQzNyw3
IEBAIHN0YXRpYyBib29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGluZSwgY29uc3QgTGlu
ZVN0YXRlJiBwcmV2aW91c0xpbmUsIExheW91CiAgICAgICAgICAgICAgICAgaWYgKCFzdHlsZS5j
b2xsYXBzZVdoaXRlc3BhY2UpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU3BsaXQgdGhlIGZy
YWdtZW50OyAobW9kaWZpZWQpZnJhZ21lbnQgc3RheXMgb24gdGhpcyBsaW5lLCBvdmVyZmxvd2Vk
RnJhZ21lbnQgaXMgcHVzaGVkIHRvIG5leHQgbGluZS4KICAgICAgICAgICAgICAgICAgICAgbGlu
ZS5vdmVyZmxvd2VkRnJhZ21lbnQgPSBzcGxpdEZyYWdtZW50VG9GaXRMaW5lKGZyYWdtZW50LCBs
aW5lLmF2YWlsYWJsZVdpZHRoIC0gbGluZS53aWR0aCgpLCBlbXB0eUxpbmUsIGZsb3dDb250ZW50
c0l0ZXJhdG9yKTsKLSAgICAgICAgICAgICAgICAgICAgbGluZS5hZGRVbmNvbW1pdHRlZChmcmFn
bWVudCk7CisgICAgICAgICAgICAgICAgICAgIGxpbmUuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwog
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvLyBXaGVuIHdoaXRlc3BhY2UgY29s
bGFwc2UgaXMgb24sIHdoaXRlc3BhY2UgdGhhdCBkb2Vzbid0IGZpdCBpcyBzaW1wbHkgc2tpcHBl
ZC4KICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTQ0NiwxMiArNDQ2LDEyIEBAIHN0YXRpYyBi
b29sIGNyZWF0ZUxpbmVSdW5zKExpbmVTdGF0ZSYgbGluZSwgY29uc3QgTGluZVN0YXRlJiBwcmV2
aW91c0xpbmUsIExheW91CiAgICAgICAgICAgICBpZiAoKGVtcHR5TGluZSAmJiBzdHlsZS5icmVh
a1dvcmRPbk92ZXJmbG93KSB8fCAhc3R5bGUud3JhcExpbmVzKSB7CiAgICAgICAgICAgICAgICAg
Ly8gU3BsaXQgdGhlIGZyYWdtZW50OyAobW9kaWZpZWQpZnJhZ21lbnQgc3RheXMgb24gdGhpcyBs
aW5lLCBvdmVyZmxvd2VkRnJhZ21lbnQgaXMgcHVzaGVkIHRvIG5leHQgbGluZS4KICAgICAgICAg
ICAgICAgICBsaW5lLm92ZXJmbG93ZWRGcmFnbWVudCA9IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUo
ZnJhZ21lbnQsIGxpbmUuYXZhaWxhYmxlV2lkdGggLSBsaW5lLndpZHRoKCksIGVtcHR5TGluZSwg
Zmxvd0NvbnRlbnRzSXRlcmF0b3IpOwotICAgICAgICAgICAgICAgIGxpbmUuYWRkVW5jb21taXR0
ZWQoZnJhZ21lbnQpOworICAgICAgICAgICAgICAgIGxpbmUuYWRkRnJhZ21lbnQoZnJhZ21lbnQp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8g
Tm9uLWJyZWFrYWJsZSBub24td2hpdGVzcGFjZSBmaXJzdCBmcmFnbWVudC4gQWRkIGl0IHRvIHRo
ZSBjdXJyZW50IGxpbmUuIC1pdCBvdmVyZmxvd3MgdGhvdWdoLgogICAgICAgICAgICAgaWYgKGVt
cHR5TGluZSkgewotICAgICAgICAgICAgICAgIGxpbmUuYWRkVW5jb21taXR0ZWQoZnJhZ21lbnQp
OworICAgICAgICAgICAgICAgIGxpbmUuYWRkRnJhZ21lbnQoZnJhZ21lbnQpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTm9uLWJyZWFrYWJs
ZSBub24td2hpdGVzcGFjZSBmcmFnbWVudCB3aGVuIHRoZXJlJ3MgYWxyZWFkeSBjb250ZW50IG9u
IHRoZSBsaW5lLiBQdXNoIGl0IHRvIHRoZSBuZXh0IGxpbmUuCkBAIC00NjEsMTQgKzQ2MSwxNCBA
QCBzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhMaW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVT
dGF0ZSYgcHJldmlvdXNMaW5lLCBMYXlvdQogICAgICAgICAvLyBXaGVuIHRoZSBjdXJyZW50IGZy
YWdtZW50IGlzIGNvbGxhcHNlZCB3aGl0ZXNwYWNlLCB3ZSBuZWVkIHRvIGNyZWF0ZSBhIHJ1biBm
b3Igd2hhdCB3ZSd2ZSBwcm9jZXNzZWQgc28gZmFyLgogICAgICAgICBpZiAoZnJhZ21lbnQuaXND
b2xsYXBzZWQpIHsKICAgICAgICAgICAgIC8vIE9uZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHRvIHBy
ZXNlcnZlLgotICAgICAgICAgICAgbGluZS5hZGRVbmNvbW1pdHRlZFdoaXRlc3BhY2Uoc3R5bGUu
c3BhY2VXaWR0aCk7Ci0gICAgICAgICAgICBsaW5lLmNvbW1pdEFuZENyZWF0ZVJ1bihsaW5lUnVu
cyk7CisgICAgICAgICAgICBsaW5lLmFkZFdoaXRlc3BhY2Uoc3R5bGUuc3BhY2VXaWR0aCk7Cisg
ICAgICAgICAgICBsaW5lLmNyZWF0ZVJ1bihsaW5lUnVucyk7CiAgICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgbGluZS5hZGRVbmNvbW1pdHRlZChmcmFnbWVudCk7CisgICAgICAgICAgICBsaW5l
LmFkZEZyYWdtZW50KGZyYWdtZW50KTsKICAgICAgICAgLy8gRmluZCB0aGUgbmV4dCB0ZXh0IGZy
YWdtZW50LgogICAgICAgICBmcmFnbWVudCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLm5leHRUZXh0
RnJhZ21lbnQobGluZS53aWR0aCgpKTsKICAgICB9Ci0gICAgbGluZS5jb21taXRBbmRDcmVhdGVS
dW4obGluZVJ1bnMpOworICAgIGxpbmUuY3JlYXRlUnVuKGxpbmVSdW5zKTsKICAgICByZXR1cm4g
ZnJhZ21lbnQuaXNFbXB0eSgpICYmIGxpbmUub3ZlcmZsb3dlZEZyYWdtZW50LmlzRW1wdHkoKTsK
IH0KIApAQCAtNDgxLDcgKzQ4MSw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlTGluZUVuZGluZ0FuZEFk
anVzdFJ1bnMoTGluZVN0YXRlJiBsaW5lLCBMYXlvdXQ6OlJ1blZlY3RvciYgcnVuCiAgICAgaWYg
KCFydW5zLnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIC8vIEFkanVzdCBydW5zJyBwb3Np
dGlvbiBieSB0YWtpbmcgbGluZSdzIGFsaWdubWVudCBpbnRvIGFjY291bnQuCi0gICAgaWYgKGZs
b2F0IGxpbmVMb2dpY2FsTGVmdCA9IGNvbXB1dGVMaW5lTGVmdChmbG93Q29udGVudHNJdGVyYXRv
ci5zdHlsZSgpLnRleHRBbGlnbiwgbGluZS5hdmFpbGFibGVXaWR0aCwgbGluZS5jb21taXR0ZWRX
aWR0aCwgbGluZS5sb2dpY2FsTGVmdE9mZnNldCkpIHsKKyAgICBpZiAoZmxvYXQgbGluZUxvZ2lj
YWxMZWZ0ID0gY29tcHV0ZUxpbmVMZWZ0KGZsb3dDb250ZW50c0l0ZXJhdG9yLnN0eWxlKCkudGV4
dEFsaWduLCBsaW5lLmF2YWlsYWJsZVdpZHRoLCBsaW5lLnJ1bnNXaWR0aCwgbGluZS5sb2dpY2Fs
TGVmdE9mZnNldCkpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gcHJldmlvdXNSdW5Db3Vu
dDsgaSA8IHJ1bnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgICAgIHJ1bnNbaV0ubG9naWNhbExl
ZnQgKz0gbGluZUxvZ2ljYWxMZWZ0OwogICAgICAgICAgICAgcnVuc1tpXS5sb2dpY2FsUmlnaHQg
Kz0gbGluZUxvZ2ljYWxMZWZ0OwpAQCAtNTMzLDcgKzUzMyw2IEBAIHN0YXRpYyB2b2lkIGNyZWF0
ZVRleHRSdW5zKExheW91dDo6UnVuVmVjdG9yJiBydW5zLCBSZW5kZXJCbG9ja0Zsb3cmIGZsb3cs
IHVuc2lnCiAKICAgICBpZiAoZmxvdy5maXJzdENoaWxkKCkgIT0gZmxvdy5sYXN0Q2hpbGQoKSkK
ICAgICAgICAgc3BsaXRSdW5zQXRSZW5kZXJlckJvdW5kYXJ5KHJ1bnMsIGZsb3dDb250ZW50c0l0
ZXJhdG9yKTsKLSAgICBBU1NFUlQoIWxpbmUudW5jb21taXR0ZWRXaWR0aCk7CiB9CiAKIHN0ZDo6
dW5pcXVlX3B0cjxMYXlvdXQ+IGNyZWF0ZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>