<?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>141102</bug_id>
          
          <creation_ts>2015-01-30 16:19:20 -0800</creation_ts>
          <short_desc>Simple line layout: Fragments at renderers&apos; boundary.</short_desc>
          <delta_ts>2015-08-13 15:53:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>INVALID</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>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1065699</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-01-30 16:19:20 -0800</bug_when>
    <thetext>Currently flow iterator returns fragments across renderers boundaries and we split runs after processing the line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1065701</commentid>
    <comment_count>1</comment_count>
      <attachid>245754</attachid>
    <who name="alan">zalan</who>
    <bug_when>2015-01-30 16:21:23 -0800</bug_when>
    <thetext>Created attachment 245754
WIP patch.

I might need to find a different approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1117434</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2015-08-13 15:53:47 -0700</bug_when>
    <thetext>Fixed (different approach)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>245754</attachid>
            <date>2015-01-30 16:21:23 -0800</date>
            <delta_ts>2015-01-30 16:21:23 -0800</delta_ts>
            <desc>WIP patch.</desc>
            <filename>WIP.patch</filename>
            <type>text/plain</type>
            <size>32601</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvTGF5b3V0L2xpbmUtbGF5b3V0LXNpbXBsZS5o
dG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGluZS1sYXlvdXQtc2ltcGxlLmh0bWwKaW5k
ZXggOGYzNmFhYS4uZDgwZGEzYSAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQv
bGluZS1sYXlvdXQtc2ltcGxlLmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9MYXlvdXQvbGlu
ZS1sYXlvdXQtc2ltcGxlLmh0bWwKQEAgLTIsMTEgKzIsMTAgQEAKIDxodG1sPgogPGhlYWQ+CiAg
ICAgPHRpdGxlPkxpbmUgYnJlYWtpbmcgcGVyZm9ybWFuY2UgdGVzdDwvdGl0bGU+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgogPGJv
ZHk+CiAgICAgPHByZSBpZD0ibG9nIj48L3ByZT4KLSAgICA8ZGl2IGlkPSJ0YXJnZXQiIHN0eWxl
PSJ3aWR0aDogMzAwcHg7IGRpc3BsYXk6bm9uZSI+CisgICAgPGRpdiBpZD0idGFyZ2V0IiBzdHls
ZT0id2lkdGg6IDMwMHB4OyI+CiAgICAgICAgIDxkaXYgc3R5bGU9InRleHQtYWxpZ246IGNlbnRl
ciI+CiAgICAgICAgICAgICA8aDQ+QVJHVU1FTlRVTTwvaDQ+CiAgICAgICAgICAgICA8cD4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0LmNwcAppbmRleCA0M2M1
MGYzLi43ODYwZTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxl
TGluZUxheW91dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVM
YXlvdXQuY3BwCkBAIC0yMjgsODUgKzIyOCw4NyBAQCBzdGF0aWMgZmxvYXQgY29tcHV0ZUxpbmVM
ZWZ0KEVUZXh0QWxpZ24gdGV4dEFsaWduLCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgZmxvYXQgYwog
fQogCiBzdHJ1Y3QgTGluZVN0YXRlIHsKLSAgICB2b2lkIGNyZWF0ZVJ1bihMYXlvdXQ6OlJ1blZl
Y3RvciYgbGluZVJ1bnMpCisgICAgTGluZVN0YXRlKExheW91dDo6UnVuVmVjdG9yJiBydW5zKQor
ICAgICAgICA6IGxpbmVSdW5zKGxpbmVSdW5zKQogICAgIHsKLSAgICAgICAgaWYgKHNlZ21lbnRT
dGFydCA9PSBzZWdtZW50RW5kKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxpbmVS
dW5zLmFwcGVuZChSdW4oc2VnbWVudFN0YXJ0LCBzZWdtZW50RW5kLCBydW5zV2lkdGgsIHJ1bnNX
aWR0aCArIHNlZ21lbnRXaWR0aCwgZmFsc2UpKTsKLSAgICAgICAgLy8gTW92ZSB1bmNvbW1pdHRl
ZCB0byBjb21taXR0ZWQuCi0gICAgICAgIHJ1bnNXaWR0aCArPSBzZWdtZW50V2lkdGg7Ci0gICAg
ICAgIGxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VXaWR0aCA9IHNlZ21lbnRUcmFpbGluZ1doaXRl
c3BhY2VXaWR0aDsKLSAgICAgICAgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA9IHNl
Z21lbnRUcmFpbGluZ1doaXRlc3BhY2VMZW5ndGg7Ci0gICAgICAgIGlmICghbV9maXJzdENoYXJh
Y3RlckZpdHMpCi0gICAgICAgICAgICBtX2ZpcnN0Q2hhcmFjdGVyRml0cyA9IHNlZ21lbnRTdGFy
dCArIDEgPiBzZWdtZW50RW5kIHx8IHJ1bnNXaWR0aCA8PSBhdmFpbGFibGVXaWR0aDsKLQotICAg
ICAgICBzZWdtZW50U3RhcnQgPSBzZWdtZW50RW5kOwotICAgICAgICBzZWdtZW50V2lkdGggPSAw
OwotICAgICAgICBzZWdtZW50VHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggPSAwOwotICAgICAgICBz
ZWdtZW50VHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gMDsKLSAgICAgICAgbV9uZXdTZWdtZW50
ID0gdHJ1ZTsKICAgICB9CiAKICAgICB2b2lkIGFkZEZyYWdtZW50KGNvbnN0IEZsb3dDb250ZW50
c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQmIGZyYWdtZW50KQogICAgIHsKLSAgICAgICAgLy8gU3Rh
cnQgYSBuZXcgdW5jb21taXR0ZWQgc2VnbWVudC4KLSAgICAgICAgaWYgKG1fbmV3U2VnbWVudCkg
ewotICAgICAgICAgICAgc2VnbWVudFN0YXJ0ID0gZnJhZ21lbnQuc3RhcnQ7Ci0gICAgICAgICAg
ICBtX25ld1NlZ21lbnQgPSBmYWxzZTsKKyAgICAgICAgLy8gRXh0ZW5kIG9yIGFwcGVuZC4KKyAg
ICAgICAgaWYgKCFsaW5lUnVucy5zaXplKCkgfHwgZnJhZ21lbnQubmVlZHNOZXdSdW4oKSB8fCB3
aGl0ZXNwYWNlV2FzQ29sbGFwc2VkKQorICAgICAgICAgICAgbGluZVJ1bnMuYXBwZW5kKFJ1bihm
cmFnbWVudC5zdGFydCgpLCBmcmFnbWVudC5lbmQoKSwgcnVuc1dpZHRoLCBydW5zV2lkdGggKyBm
cmFnbWVudC53aWR0aCgpLCBmYWxzZSkpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIFJ1
biYgbGFzdFJ1biA9IGxpbmVSdW5zLmxhc3QoKTsKKyAgICAgICAgICAgIGxhc3RSdW4uZW5kID0g
ZnJhZ21lbnQuZW5kKCk7CisgICAgICAgICAgICBsYXN0UnVuLmxvZ2ljYWxSaWdodCA9IHJ1bnNX
aWR0aCArIGZyYWdtZW50LndpZHRoKCk7CisgICAgICAgIH0KKyAgICAgICAgcnVuc1dpZHRoICs9
IGZyYWdtZW50LndpZHRoKCk7CisKKyAgICAgICAgLy8gQWRqdXN0IHRyYWlsaW5nIHdoaXRlc3Bh
Y2UuCisgICAgICAgIGlmIChmcmFnbWVudC50eXBlKCkgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6
OlRleHRGcmFnbWVudDo6V2hpdGVzYXBjZSkgeworICAgICAgICAgICAgdHJhaWxpbmdXaGl0ZXNw
YWNlTGVuZ3RoICs9IGZyYWdtZW50LmVuZCgpIC0gZnJhZ21lbnQuc3RhcnQoKTsKKyAgICAgICAg
ICAgIHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoICs9IGZyYWdtZW50LndpZHRoKCk7CisgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICB0cmFpbGluZ1doaXRlc3BhY2VMZW5ndGggPSAwOworICAg
ICAgICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggPSAwOwogICAgICAgICB9Ci0gICAgICAg
IHNlZ21lbnRXaWR0aCArPSBmcmFnbWVudC53aWR0aDsKLSAgICAgICAgc2VnbWVudEVuZCA9IGZy
YWdtZW50LmVuZDsKLSAgICAgICAgc2VnbWVudFRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gZnJh
Z21lbnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNw
YWNlID8gZnJhZ21lbnQud2lkdGggOiAwOwotICAgICAgICBzZWdtZW50VHJhaWxpbmdXaGl0ZXNw
YWNlTGVuZ3RoID0gZnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZy
YWdtZW50OjpXaGl0ZXNwYWNlID8gZnJhZ21lbnQuZW5kIC0gZnJhZ21lbnQuc3RhcnQgIDogMDsK
KyAgICAgICAgaWYgKCFtX2ZpcnN0Q2hhcmFjdGVyRml0cykKKyAgICAgICAgICAgIG1fZmlyc3RD
aGFyYWN0ZXJGaXRzID0gZnJhZ21lbnQuc3RhcnQoKSArIDEgPiBmcmFnbWVudC5lbmQoKSB8fCBy
dW5XaWR0aCA8PSBhdmFpbGFibGVXaWR0aDsKKyAgICAgICAgd2hpdGVzcGFjZVdhc0NvbGxhcHNl
ZCA9IGZhbHNlOwogICAgIH0KIAotICAgIHZvaWQgYWRkV2hpdGVzcGFjZShmbG9hdCB3aGl0ZXNw
YWNlV2lkdGgpCi0gICAgewotICAgICAgICBhZGRGcmFnbWVudChGbG93Q29udGVudHNJdGVyYXRv
cjo6VGV4dEZyYWdtZW50KHNlZ21lbnRFbmQsIHNlZ21lbnRFbmQgKyAxLCB3aGl0ZXNwYWNlV2lk
dGgsIHRydWUpKTsKLSAgICB9CisgICAgZmxvYXQgd2lkdGgoKSBjb25zdCB7IHJldHVybiBydW5z
V2lkdGggKyBzZWdtZW50V2lkdGg7IH0KKyAgICBib29sIGZpdHMoZmxvYXQgZXh0cmEpIGNvbnN0
IHsgcmV0dXJuIGF2YWlsYWJsZVdpZHRoID49IHdpZHRoKCkgKyBleHRyYTsgfQorICAgIGJvb2wg
Zmlyc3RDaGFyYWN0ZXJGaXRzKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoYXJhY3RlckZpdHM7
IH0KKyAgICBib29sIGhhc1doaXRlc3BhY2VPbmx5KCkgY29uc3QgeyByZXR1cm4gbGFzdFJ1blRy
YWlsaW5nV2hpdGVzcGFjZVdpZHRoICYmIHJ1bnNXaWR0aCA9PSBsYXN0UnVuVHJhaWxpbmdXaGl0
ZXNwYWNlV2lkdGg7IH0KIAotICAgIGJvb2wgaGFzV2hpdGVzcGFjZU9ubHkoKSBjb25zdAorICAg
IHZvaWQgYWRkQ29sbGFwc2VkV2hpdGVzcGFjZShjb25zdCBGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50JiBmcmFnbWVudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBsYXN0UnVuVHJh
aWxpbmdXaGl0ZXNwYWNlV2lkdGggJiYgcnVuc1dpZHRoID09IGxhc3RSdW5UcmFpbGluZ1doaXRl
c3BhY2VXaWR0aDsKLSAgICB9CisgICAgICAgIGlmICh0cmFpbGluZ1doaXRlc3BhY2VMZW5ndGgg
PT0gMCkgeworICAgICAgICAgICAgYWRkRnJhZ21lbnQoKTsKKyAgICAgICAgfQogCi0gICAgZmxv
YXQgd2lkdGgoKSBjb25zdAotICAgIHsKLSAgICAgICAgcmV0dXJuIHJ1bnNXaWR0aCArIHNlZ21l
bnRXaWR0aDsKKyAgICAgICAgaWYgKHRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA8PSAxKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHdoaXRlc3BhY2VXYXNDb2xsYXBzZWQgPSB0cnVl
OwogICAgIH0KIAotICAgIGJvb2wgZml0cyhmbG9hdCBleHRyYSkgY29uc3QKKyAgICBGbG93Q29u
dGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IGZpcnN0VHJhaWxpbmdOb25XaGl0ZXNwYWNlKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhdmFpbGFibGVXaWR0aCA+PSB3aWR0aCgpICsgZXh0cmE7
CiAgICAgfQogCi0gICAgYm9vbCBmaXJzdENoYXJhY3RlckZpdHMoKSBjb25zdCB7IHJldHVybiBt
X2ZpcnN0Q2hhcmFjdGVyRml0czsgfQotCiAgICAgdm9pZCByZW1vdmVUcmFpbGluZ1doaXRlc3Bh
Y2UoKQogICAgIHsKLSAgICAgICAgcnVuc1dpZHRoIC09IGxhc3RSdW5UcmFpbGluZ1doaXRlc3Bh
Y2VXaWR0aDsKLSAgICAgICAgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoID0gMDsKLSAg
ICAgICAgbGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA9IDA7CisgICAgICAgIHdoaWxl
ICh0cmFpbGluZ1doaXRlc3BhY2VMZW5ndGggPiAwKSB7CisgICAgICAgICAgICBSdW4mIGxhc3RS
dW4gPSBsaW5lUnVucy5sYXN0KCk7CisgICAgICAgICAgICB1bnNpZ25lZCBydW5MZW5naHQgPSBs
YXN0UnVuLmVuZCAtIGxhc3RSdW4uc3RhcnQ7CisgICAgICAgICAgICB1bnNpZ25lZCBydW5XaWR0
aCA9IGxhc3RSdW4ubG9naWNhbFJpZ2h0LSBsYXN0UnVuLmxvZ2ljYWxMZWZ0OworICAgICAgICAg
ICAgaWYgKHRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCA+PSBydW5MZW5naHQpCisgICAgICAgICAg
ICAgICAgbGluZVJ1bnMucmVtb3ZlTGFzdCgpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgbGFzdFJ1bi5lbmQgLT0gdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoOworICAgICAg
ICAgICAgICAgIGxhc3RSdW4ubG9naWNhbFJpZ2h0IC09IHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRo
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoIC09
IHJ1bkxlbmdodDsKKyAgICAgICAgICAgIHRyYWlsaW5nV2hpdGVzcGFjZVdpZHRoIC09IHJ1bldp
ZHRoOworICAgICAgIH0KKyAgICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoID0gMDsKKyAg
ICAgICAgdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggPSAwOwogICAgIH0KIAogICAgIGZsb2F0IGF2
YWlsYWJsZVdpZHRoIHsgMCB9OwogICAgIGZsb2F0IGxvZ2ljYWxMZWZ0T2Zmc2V0IHsgMCB9Owog
ICAgIGZsb2F0IHJ1bnNXaWR0aCB7IDAgfTsKLSAgICBmbG9hdCBsYXN0UnVuVHJhaWxpbmdXaGl0
ZXNwYWNlV2lkdGggeyAwIH07IC8vIFVzZSB0aGlzIHRvIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNw
YWNlIHdpdGhvdXQgcmUtbWVzdXJpbmcgdGhlIHRleHQuCi0gICAgdW5zaWduZWQgbGFzdFJ1blRy
YWlsaW5nV2hpdGVzcGFjZUxlbmd0aCB7IDAgfTsKICAgICBGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50IG92ZXJmbG93ZWRGcmFnbWVudDsKIAogcHJpdmF0ZToKLSAgICB1bnNpZ25l
ZCBzZWdtZW50U3RhcnQgeyAwIH07Ci0gICAgdW5zaWduZWQgc2VnbWVudEVuZCB7IDAgfTsKLSAg
ICBmbG9hdCBzZWdtZW50V2lkdGggeyAwIH07Ci0gICAgZmxvYXQgc2VnbWVudFRyYWlsaW5nV2hp
dGVzcGFjZVdpZHRoIHsgMCB9OwotICAgIHVuc2lnbmVkIHNlZ21lbnRUcmFpbGluZ1doaXRlc3Bh
Y2VMZW5ndGggeyAwIH07CisgICAgZmxvYXQgdHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGggeyAwIH07
IC8vIFVzZSB0aGlzIHRvIHJlbW92ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIHdpdGhvdXQgcmUtbWVz
dXJpbmcgdGhlIHRleHQuCisgICAgdW5zaWduZWQgdHJhaWxpbmdXaGl0ZXNwYWNlTGVuZ3RoIHsg
MCB9OwogICAgIC8vIEhhdmluZyBvbmUgY2hhcmFjdGVyIG9uIHRoZSBsaW5lIGRvZXMgbm90IG5l
Y2Vzc2FyaWx5IG1lYW4gaXQgYWN0dWFsbHkgZml0cy4KICAgICAvLyBGaXJzdCBjaGFyYWN0ZXIg
b2YgdGhlIGZpcnN0IGZyYWdtZW50IG1pZ2h0IGJlIGZvcmNlZCBvbiB0byB0aGUgY3VycmVudCBs
aW5lIGV2ZW4gaWYgaXQgZG9lcyBub3QgZml0LgogICAgIGJvb2wgbV9maXJzdENoYXJhY3RlckZp
dHMgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9uZXdTZWdtZW50IHsgdHJ1ZSB9OwogfTsKIAogc3Rh
dGljIGJvb2wgcHJlV3JhcChjb25zdCBGbG93Q29udGVudHNJdGVyYXRvcjo6U3R5bGUmIHN0eWxl
KQpAQCAtMzE0LDcgKzMxNiw3IEBAIHN0YXRpYyBib29sIHByZVdyYXAoY29uc3QgRmxvd0NvbnRl
bnRzSXRlcmF0b3I6OlN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUud3JhcExpbmVzICYm
ICFzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2U7CiB9CiAgICAgCi1zdGF0aWMgdm9pZCByZW1vdmVU
cmFpbGluZ1doaXRlc3BhY2UoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6UnVuVmVjdG9y
JiBsaW5lUnVucywgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3ImIGZsb3dDb250ZW50c0l0ZXJh
dG9yKQorc3RhdGljIHZvaWQgcmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKExpbmVTdGF0ZSYgbGlu
ZVN0YXRlLCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3Ip
CiB7CiAgICAgaWYgKCFsaW5lU3RhdGUubGFzdFJ1blRyYWlsaW5nV2hpdGVzcGFjZUxlbmd0aCkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMzI4LDEyICszMzAsNiBAQCBzdGF0aWMgdm9pZCByZW1vdmVU
cmFpbGluZ1doaXRlc3BhY2UoTGluZVN0YXRlJiBsaW5lU3RhdGUsIExheW91dDo6UnVuVmVjdG9y
JiBsaQogICAgIGlmIChwcmVXcmFwKHN0eWxlKSAmJiBsaW5lU3RhdGUuaGFzV2hpdGVzcGFjZU9u
bHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgQVNTRVJUKGxpbmVSdW5zLnNpemUoKSk7Ci0g
ICAgUnVuJiBsYXN0UnVuID0gbGluZVJ1bnMubGFzdCgpOwotICAgIGxhc3RSdW4ubG9naWNhbFJp
Z2h0IC09IGxpbmVTdGF0ZS5sYXN0UnVuVHJhaWxpbmdXaGl0ZXNwYWNlV2lkdGg7Ci0gICAgbGFz
dFJ1bi5lbmQgLT0gbGluZVN0YXRlLmxhc3RSdW5UcmFpbGluZ1doaXRlc3BhY2VMZW5ndGg7Ci0g
ICAgaWYgKGxhc3RSdW4uc3RhcnQgPT0gbGFzdFJ1bi5lbmQpCi0gICAgICAgIGxpbmVSdW5zLnJl
bW92ZUxhc3QoKTsKICAgICBsaW5lU3RhdGUucmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCk7CiB9
CiAKQEAgLTM0Niw4ICszNDIsMTAgQEAgc3RhdGljIHZvaWQgdXBkYXRlTGluZUNvbnN0cmFpbnMo
Y29uc3QgUmVuZGVyQmxvY2tGbG93JiBmbG93LCBmbG9hdCYgYXZhaWxhYmxlV2kKICAgICBhdmFp
bGFibGVXaWR0aCA9IHN0ZDo6bWF4PGZsb2F0PigwLCBsb2dpY2FsUmlnaHRPZmZzZXQgLSBsb2dp
Y2FsTGVmdE9mZnNldCk7CiB9CiAKLXN0YXRpYyBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZy
YWdtZW50IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudCYgZnJhZ21lbnRUb1NwbGl0LCBmbG9hdCBhdmFpbGFibGVXaWR0aCwgYm9vbCBrZWVw
QXRMZWFzdE9uZUNoYXJhY3RlciwgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3ImIGZsb3dDb250
ZW50c0l0ZXJhdG9yKQorc3RhdGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21lbnQg
c3BsaXRGcmFnbWVudFRvRml0TGluZShGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50
JiAvKmZyYWdtZW50VG9TcGxpdCovLCBmbG9hdCAvKmF2YWlsYWJsZVdpZHRoKi8sIGJvb2wgLypr
ZWVwQXRMZWFzdE9uZUNoYXJhY3RlciovLCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRvciYgLypm
bG93Q29udGVudHNJdGVyYXRvciovKQogeworICAgIHJldHVybiBGbG93Q29udGVudHNJdGVyYXRv
cjo6VGV4dEZyYWdtZW50KDAsIDAsIDAsIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21l
bnQ6OldoaXRlc3BhY2UpOworICAgIC8qCiAgICAgLy8gRmFzdCBwYXRoIGZvciBzaW5nbGUgY2hh
ciBmcmFnbWVudHMuCiAgICAgaWYgKGZyYWdtZW50VG9TcGxpdC5zdGFydCArIDEgPT0gZnJhZ21l
bnRUb1NwbGl0LmVuZCkgewogICAgICAgICBpZiAoa2VlcEF0TGVhc3RPbmVDaGFyYWN0ZXIpCkBA
IC0zODUsNiArMzgzLDcgQEAgc3RhdGljIEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21l
bnQgc3BsaXRGcmFnbWVudFRvRml0TGluZShGbG93Q29udGVudHNJdGUKICAgICBmcmFnbWVudEZv
ck5leHRMaW5lLnN0YXJ0ID0gZnJhZ21lbnRUb1NwbGl0LmVuZDsKICAgICBmcmFnbWVudEZvck5l
eHRMaW5lLndpZHRoIC09IGZyYWdtZW50VG9TcGxpdC53aWR0aDsKICAgICByZXR1cm4gZnJhZ21l
bnRGb3JOZXh0TGluZTsKKyovCiB9CiAKIHN0YXRpYyBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4
dEZyYWdtZW50IGZpcnN0RnJhZ21lbnQoRmxvd0NvbnRlbnRzSXRlcmF0b3ImIGZsb3dDb250ZW50
c0l0ZXJhdG9yLCBjb25zdCBMaW5lU3RhdGUmIHByZXZpb3VzTGluZSkKQEAgLTM5OCw3OCArMzk3
LDkwIEBAIHN0YXRpYyBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50IGZpcnN0RnJh
Z21lbnQoRmxvd0NvbnRlbnRzSXRlcmF0b3ImIGZsCiAgICAgZWxzZSB7CiAgICAgICAgIC8vIFNw
ZWNpYWwgb3ZlcmZsb3cgcHJlLXdyYXAgd2hpdGVzcGFjZSBoYW5kbGluZzogaWdub3JlIHRoZSBv
dmVyZmxvd2VkIHdoaXRlc3BhY2UgaWYgd2UgbWFuYWdlZCB0byBmaXQgYXQgbGVhc3Qgb25lIGNo
YXJhY3RlciBvbiB0aGUgcHJldmlvdXMgbGluZS4KICAgICAgICAgLy8gV2hlbiB0aGUgbGluZSBp
cyB0b28gc2hvcnQgdG8gZml0IG9uZSBjaGFyYWN0ZXIgKHRob3VnaHQgaXQgc3RpbGwgc3RheXMg
b24gdGhlIGxpbmUpIHdlIGNvbnRpbnVlIHdpdGggdGhlIG92ZXJmbG93IHdoaXRlc3BhY2UgY29u
dGVudCBvbiB0aGlzIGxpbmUuCi0gICAgICAgIGlmIChmaXJzdEZyYWdtZW50LnR5cGUgPT0gRmxv
d0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSAmJiBwcmVXcmFwKHN0
eWxlKSAmJiBwcmV2aW91c0xpbmUuZmlyc3RDaGFyYWN0ZXJGaXRzKCkpIHsKKyAgICAgICAgaWYg
KGZpcnN0RnJhZ21lbnQudHlwZSgpID09IEZsb3dDb250ZW50c0l0ZXJhdG9yOjpUZXh0RnJhZ21l
bnQ6OldoaXRlc3BhY2UgJiYgcHJlV3JhcChzdHlsZSkgJiYgcHJldmlvdXNMaW5lLmZpcnN0Q2hh
cmFjdGVyRml0cygpKSB7CiAgICAgICAgICAgICBmaXJzdEZyYWdtZW50ID0gZmxvd0NvbnRlbnRz
SXRlcmF0b3IubmV4dFRleHRGcmFnbWVudCgpOwogICAgICAgICAgICAgLy8gSWYgc2tpcHBpbmcg
dGhlIHdoaXRlc3BhY2UgcHV0cyB1cyBvbiBhIGhhcmQgbmV3bGluZSwgc2tpcCB0aGUgbmV3bGlu
ZSB0b28gYXMgd2UgYWxyZWFkeSB3cmFwcGVkIHRoZSBsaW5lLgotICAgICAgICAgICAgaWYgKGZp
cnN0RnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpM
aW5lQnJlYWspCisgICAgICAgICAgICBpZiAoZmlyc3RGcmFnbWVudC50eXBlKCkgPT0gRmxvd0Nv
bnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6TGluZUJyZWFrKQogICAgICAgICAgICAgICAg
IGZpcnN0RnJhZ21lbnQgPSBmbG93Q29udGVudHNJdGVyYXRvci5uZXh0VGV4dEZyYWdtZW50KCk7
CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBDaGVjayBpZiB3ZSBuZWVkIHRvIHNraXAgdGhl
IGxlYWRpbmcgd2hpdGVzcGFjZS4KLSAgICBpZiAoc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlICYm
IGZpcnN0RnJhZ21lbnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50
OjpXaGl0ZXNwYWNlKQorICAgIGlmIChzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UgJiYgZmlyc3RG
cmFnbWVudC50eXBlKCkgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hp
dGVzcGFjZSkKICAgICAgICAgZmlyc3RGcmFnbWVudCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLm5l
eHRUZXh0RnJhZ21lbnQoKTsKICAgICByZXR1cm4gZmlyc3RGcmFnbWVudDsKIH0KIAotc3RhdGlj
IGJvb2wgY3JlYXRlTGluZVJ1bnMoTGluZVN0YXRlJiBsaW5lLCBjb25zdCBMaW5lU3RhdGUmIHBy
ZXZpb3VzTGluZSwgTGF5b3V0OjpSdW5WZWN0b3ImIGxpbmVSdW5zLCBGbG93Q29udGVudHNJdGVy
YXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCitzdGF0aWMgYm9vbCBjcmVhdGVMaW5lUnVucyhM
aW5lU3RhdGUmIGxpbmUsIGNvbnN0IExpbmVTdGF0ZSYgcHJldmlvdXNMaW5lLCBGbG93Q29udGVu
dHNJdGVyYXRvciYgZmxvd0NvbnRlbnRzSXRlcmF0b3IpCiB7CiAgICAgY29uc3QgYXV0byYgc3R5
bGUgPSBmbG93Q29udGVudHNJdGVyYXRvci5zdHlsZSgpOwogICAgIGJvb2wgbGluZUNhbkJlV3Jh
cHBlZCA9IHN0eWxlLndyYXBMaW5lcyB8fCBzdHlsZS5icmVha1dvcmRPbk92ZXJmbG93OwogICAg
IGF1dG8gZnJhZ21lbnQgPSBmaXJzdEZyYWdtZW50KGZsb3dDb250ZW50c0l0ZXJhdG9yLCBwcmV2
aW91c0xpbmUpOwotICAgIHdoaWxlICghZnJhZ21lbnQuaXNFbXB0eSgpKSB7CisgICAgd2hpbGUg
KGZyYWdtZW50LnR5cGUoKSAhPSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpM
aW5lRW5kKSB7CiAgICAgICAgIC8vIEhhcmQgbGluZWJyZWFrLgotICAgICAgICBpZiAoZnJhZ21l
bnQudHlwZSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpMaW5lQnJlYWsp
IHsKKyAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUoKSA9PSBGbG93Q29udGVudHNJdGVyYXRvcjo6
VGV4dEZyYWdtZW50OjpMaW5lQnJlYWspIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgbmV3IGxp
bmUgZnJhZ21lbnQgb25seSBpZiB0aGVyZSdzIG5vdGhpbmcgb24gdGhlIGxpbmUuIChvdGhlcndp
c2UgdGhlIGV4dHJhIG5ldyBsaW5lIGNoYXJhY3RlciB3b3VsZCBzaG93IHVwIGF0IHRoZSBlbmQg
b2YgdGhlIGNvbnRlbnQuKQogICAgICAgICAgICAgaWYgKCFsaW5lLndpZHRoKCkpCiAgICAgICAg
ICAgICAgICAgbGluZS5hZGRGcmFnbWVudChmcmFnbWVudCk7CiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQotICAgICAgICBpZiAobGluZUNhbkJlV3JhcHBlZCAmJiAhbGluZS5maXRzKGZy
YWdtZW50LndpZHRoKSkgeworICAgICAgICBpZiAobGluZUNhbkJlV3JhcHBlZCAmJiAhbGluZS5m
aXRzKGZyYWdtZW50LndpZHRoKCkpKSB7CiAgICAgICAgICAgICAvLyBPdmVyZmxvdyB3cmFwcGlu
ZyBiZWhhdmlvdXI6CiAgICAgICAgICAgICAvLyAxLiBXaGl0ZXNhcGNlIGNvbGxhcHNlIG9uOiB3
aGl0ZXNwYWNlIGlzIHNraXBwZWQuIEp1bXAgdG8gbmV4dCBsaW5lLgogICAgICAgICAgICAgLy8g
Mi4gV2hpdGVzcGFjZSBjb2xsYXBzZSBvZmY6IHdoaXRlc3BhY2UgaXMgd3JhcHBlZC4KICAgICAg
ICAgICAgIC8vIDMuIEZpcnN0LCBub24td2hpdGVzcGFjZSBmcmFnbWVudCBpcyBlaXRoZXIgd3Jh
cHBlZCBvciBrZXB0IG9uIHRoZSBsaW5lLiAoZGVwZW5kcyBvbiBvdmVyZmxvdy13cmFwKQogICAg
ICAgICAgICAgLy8gNC4gTm9uLXdoaXRlc3BhY2UgZnJhZ21lbnQgd2hlbiB0aGVyZSdzIGFscmVh
ZHkgYW5vdGhlciBmcmFnbWVudCBvbiB0aGUgbGluZSBnZXRzIHB1c2hlZCB0byB0aGUgbmV4dCBs
aW5lLgotICAgICAgICAgICAgYm9vbCBlbXB0eUxpbmUgPSAhbGluZS53aWR0aCgpOworICAgICAg
ICAgICAgYm9vbCBlbXB0eUxpbmUgPSBsaW5lLmlzRW1wdHkoKTsKICAgICAgICAgICAgIC8vIFdo
aXRlc3BhY2UgZnJhZ21lbnQuCi0gICAgICAgICAgICBpZiAoZnJhZ21lbnQudHlwZSA9PSBGbG93
Q29udGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpXaGl0ZXNwYWNlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFzdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2UpIHsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gU3BsaXQgdGhlIGZyYWdtZW50OyAobW9kaWZpZWQpZnJhZ21lbnQgc3RheXMgb24gdGhp
cyBsaW5lLCBvdmVyZmxvd2VkRnJhZ21lbnQgaXMgcHVzaGVkIHRvIG5leHQgbGluZS4KKyAgICAg
ICAgICAgIGlmIChmcmFnbWVudC50eXBlKCkgPT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRG
cmFnbWVudDo6V2hpdGVzcGFjZSkgeworICAgICAgICAgICAgICAgIGlmIChzdHlsZS5jb2xsYXBz
ZVdoaXRlc3BhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiB3aGl0ZXNwYWNlIGNv
bGxhcHNlIGlzIG9uLCB3aGl0ZXNwYWNlIHRoYXQgZG9lc24ndCBmaXQgc2hvdWxkIGJlIHNraXBw
ZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIFVuY29uZGl0aW9uYWxseSByZW1vdmUocm9sbGJh
Y2spIGFueSB0cmFpbGluZyB3aGl0ZXNwYWNlLiAoYWxsIHdoaXRzcGFjZSBmcmFnbWVudHMgdGhh
dCBhcmUgY29ubmVjdGVkIHdpdGggdGhpcyBvbmUgLWFjcm9zcyByZW5kZXJlcy4pCisgICAgICAg
ICAgICAgICAgICAgIGxpbmUucmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKCk7CisgICAgICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU3BsaXQgdGhlIHdoaXRlc3Bh
Y2U7IChtb2RpZmllZClmcmFnbWVudCBzdGF5cyBvbiB0aGlzIGxpbmUsIG92ZXJmbG93ZWRGcmFn
bWVudCBpcyBwdXNoZWQgdG8gbmV4dCBsaW5lLgogICAgICAgICAgICAgICAgICAgICBsaW5lLm92
ZXJmbG93ZWRGcmFnbWVudCA9IHNwbGl0RnJhZ21lbnRUb0ZpdExpbmUoZnJhZ21lbnQsIGxpbmUu
YXZhaWxhYmxlV2lkdGggLSBsaW5lLndpZHRoKCksIGVtcHR5TGluZSwgZmxvd0NvbnRlbnRzSXRl
cmF0b3IpOwogICAgICAgICAgICAgICAgICAgICBsaW5lLmFkZEZyYWdtZW50KGZyYWdtZW50KTsK
ICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLy8gV2hlbiB3aGl0ZXNwYWNlIGNv
bGxhcHNlIGlzIG9uLCB3aGl0ZXNwYWNlIHRoYXQgZG9lc24ndCBmaXQgaXMgc2ltcGx5IHNraXBw
ZWQuCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAv
LyBOb24td2hpdGVzcGFjZSBmcmFnbWVudC4gKCFzdHlsZS53cmFwTGluZXM6IGJ1ZzEzODEwMihw
cmVzZXJ2ZSBleGlzdGluZyBiZWhhdmlvcikKKyAgICAgICAgICAgIC8vIEJyZWFrYWJsZSBub24t
d2hpdGVzcGFjZSBmcmFnbWVudC4gKCFzdHlsZS53cmFwTGluZXM6IGJ1ZzEzODEwMihwcmVzZXJ2
ZSBleGlzdGluZyBiZWhhdmlvcikKICAgICAgICAgICAgIGlmICgoZW1wdHlMaW5lICYmIHN0eWxl
LmJyZWFrV29yZE9uT3ZlcmZsb3cpIHx8ICFzdHlsZS53cmFwTGluZXMpIHsKICAgICAgICAgICAg
ICAgICAvLyBTcGxpdCB0aGUgZnJhZ21lbnQ7IChtb2RpZmllZClmcmFnbWVudCBzdGF5cyBvbiB0
aGlzIGxpbmUsIG92ZXJmbG93ZWRGcmFnbWVudCBpcyBwdXNoZWQgdG8gbmV4dCBsaW5lLgogICAg
ICAgICAgICAgICAgIGxpbmUub3ZlcmZsb3dlZEZyYWdtZW50ID0gc3BsaXRGcmFnbWVudFRvRml0
TGluZShmcmFnbWVudCwgbGluZS5hdmFpbGFibGVXaWR0aCAtIGxpbmUud2lkdGgoKSwgZW1wdHlM
aW5lLCBmbG93Q29udGVudHNJdGVyYXRvcik7CiAgICAgICAgICAgICAgICAgbGluZS5hZGRGcmFn
bWVudChmcmFnbWVudCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAvLyBOb24tYnJlYWthYmxlIG5vbi13aGl0ZXNwYWNlIGZpcnN0IGZyYWdtZW50
LiBBZGQgaXQgdG8gdGhlIGN1cnJlbnQgbGluZS4gLWl0IG92ZXJmbG93cyB0aG91Z2guCisgICAg
ICAgICAgICAvLyBOb24tYnJlYWthYmxlIG5vbi13aGl0ZXNwYWNlIGZpcnN0IGZyYWdtZW50Lgog
ICAgICAgICAgICAgaWYgKGVtcHR5TGluZSkgeworICAgICAgICAgICAgICAgIC8vIEFkZCBpdCB0
byB0aGUgY3VycmVudCBsaW5lLiAtaXQgb3ZlcmZsb3dzIHRob3VnaC4KICAgICAgICAgICAgICAg
ICBsaW5lLmFkZEZyYWdtZW50KGZyYWdtZW50KTsKKyAgICAgICAgICAgICAgICAvLyBFbnN1cmUg
dGhhdCB0aGUgd2hvbGUgd29yZCBlbmRzIHVwIG9uIHRoaXMgbGluZSB0b28uICh3aGVuIHRoZSB3
b3JkIHNwYW5zIGFjcm9zcyBtdWx0aXBsZSByZW5kZXJlcnMpCisgICAgICAgICAgICAgICAgLy8g
S2VlcCBhZGRpbmcgdGhlIGZyYWdtZW50cyB1bnRpbCB3ZSBoaXQgdGhlIG5leHQgd2hpdGVzcGFj
ZS4KKyAgICAgICAgICAgICAgICB3aGlsZSAodHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICBm
cmFnbWVudCA9IGZsb3dDb250ZW50c0l0ZXJhdG9yLm5leHRUZXh0RnJhZ21lbnQobGluZS53aWR0
aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZyYWdtZW50LnR5cGUoKSAhPSBGbG93Q29u
dGVudHNJdGVyYXRvcjo6VGV4dEZyYWdtZW50OjpOb25XaGl0ZXNwYWNlKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lLm92ZXJmbG93ZWRGcmFnbWVudCA9IGZyYWdtZW50OworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgbGluZS5hZGRGcmFnbWVudChmcmFnbWVudCk7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8g
Tm9uLWJyZWFrYWJsZSBub24td2hpdGVzcGFjZSBmcmFnbWVudCB3aGVuIHRoZXJlJ3MgYWxyZWFk
eSBjb250ZW50IG9uIHRoZSBsaW5lLiBQdXNoIGl0IHRvIHRoZSBuZXh0IGxpbmUuCi0gICAgICAg
ICAgICBsaW5lLm92ZXJmbG93ZWRGcmFnbWVudCA9IGZyYWdtZW50OworICAgICAgICAgICAgLy8g
Tm9uLWJyZWFrYWJsZSBub24td2hpdGVzcGFjZSBmcmFnbWVudCB3aGVuIHRoZXJlJ3MgYWxyZWFk
eSBjb250ZW50IG9uIHRoZSBsaW5lLiBQdXNoIGl0IHRvIHRoZSBuZXh0IGxpbmUKKyAgICAgICAg
ICAgIC8vIGJ5IHJldHJpZXZpbmcvcmVtb3ZpbmcgdGhlIGNvbm5lY3RlZCBub24td2hpdGVzcGFj
ZSBmcmFnbWVudHMuCisgICAgICAgICAgICAvLyB0ZXh0OiAiZm9vIGJhciI7IEFzc3VtZSBlYWNo
IGNoYXJhY3RlciBoYXMgaXRzIG93biByZW5kZXJlciBhbmQgInIiIGRvZXMgbm90IGZpdCwgd2Ug
bmVlZCB0byByZXRyaWV2ZSB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBmcmFnbWVudDogImJhciIK
KyAgICAgICAgICAgIC8vIGFuZCBwdXNoIGl0IHRvIHRoZSBuZXh0IGxpbmUuIFRoZSBvdmVyZmxv
d2VkIHRleHQgZnJhZ21lbnQgaXMgImIiIGFzIHRoZSBmaXJzdCBub24td2hpdGVzcGFjZSBmcmFn
bWVudC4KKyAgICAgICAgICAgIGxpbmUub3ZlcmZsb3dlZEZyYWdtZW50ID0gbGluZS5maXJzdFRy
YWlsaW5nTm9uV2hpdGVzcGFjZSgpOworICAgICAgICAgICAgbGluZS5yZW1vdmVUcmFpbGluZ05v
bldoaXRlc3BhY2UoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIC8v
IFdoZW4gdGhlIGN1cnJlbnQgZnJhZ21lbnQgaXMgY29sbGFwc2VkIHdoaXRlc3BhY2UsIHdlIG5l
ZWQgdG8gY3JlYXRlIGEgcnVuIGZvciB3aGF0IHdlJ3ZlIHByb2Nlc3NlZCBzbyBmYXIuCi0gICAg
ICAgIGlmIChmcmFnbWVudC5pc0NvbGxhcHNlZCkgewotICAgICAgICAgICAgLy8gT25lIHRyYWls
aW5nIHdoaXRlc3BhY2UgdG8gcHJlc2VydmUuCi0gICAgICAgICAgICBsaW5lLmFkZFdoaXRlc3Bh
Y2Uoc3R5bGUuc3BhY2VXaWR0aCk7Ci0gICAgICAgICAgICBsaW5lLmNyZWF0ZVJ1bihsaW5lUnVu
cyk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbGluZS5hZGRGcmFnbWVudChmcmFnbWVu
dCk7Ci0gICAgICAgIC8vIEZpbmQgdGhlIG5leHQgdGV4dCBmcmFnbWVudC4KKyAgICAgICAgbGlu
ZS5hZGRGcmFnbWVudChmcmFnbWVudCk7CisgICAgICAgIGlmIChmcmFnbWVudC50eXBlKCkgPT0g
Rmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6V2hpdGVzcGFjZSAmJiBtX3N0eWxl
LmNvbGxhcHNlV2hpdGVzcGFjZSkKKyAgICAgICAgICAgIGxpbmUuY29sbGFwc2VXaGl0ZXNwYWNl
KHN0eWxlLnNwYWNlV2lkdGgpOwogICAgICAgICBmcmFnbWVudCA9IGZsb3dDb250ZW50c0l0ZXJh
dG9yLm5leHRUZXh0RnJhZ21lbnQobGluZS53aWR0aCgpKTsKICAgICB9Ci0gICAgbGluZS5jcmVh
dGVSdW4obGluZVJ1bnMpOwotICAgIHJldHVybiBmcmFnbWVudC5pc0VtcHR5KCkgJiYgbGluZS5v
dmVyZmxvd2VkRnJhZ21lbnQuaXNFbXB0eSgpOworICAgIHJldHVybiBmcmFnbWVudC50eXBlKCkg
IT0gRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlRleHRGcmFnbWVudDo6TGluZUVuZCAmJiBsaW5lLm92
ZXJmbG93ZWRGcmFnbWVudC5pc0VtcHR5KCk7CiB9CiAKIHN0YXRpYyB2b2lkIGNsb3NlTGluZUVu
ZGluZ0FuZEFkanVzdFJ1bnMoTGluZVN0YXRlJiBsaW5lLCBMYXlvdXQ6OlJ1blZlY3RvciYgcnVu
cywgdW5zaWduZWQgcHJldmlvdXNSdW5Db3VudCwgdW5zaWduZWQmIGxpbmVDb3VudCwgY29uc3Qg
Rmxvd0NvbnRlbnRzSXRlcmF0b3ImIGZsb3dDb250ZW50c0l0ZXJhdG9yKQpAQCAtNDc3LDcgKzQ4
OCw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlTGluZUVuZGluZ0FuZEFkanVzdFJ1bnMoTGluZVN0YXRl
JiBsaW5lLCBMYXlvdXQ6OlJ1blZlY3RvciYgcnVuCiAgICAgaWYgKHByZXZpb3VzUnVuQ291bnQg
PT0gcnVucy5zaXplKCkpCiAgICAgICAgIHJldHVybjsKICAgICBBU1NFUlQocnVucy5zaXplKCkp
OwotICAgIHJlbW92ZVRyYWlsaW5nV2hpdGVzcGFjZShsaW5lLCBydW5zLCBmbG93Q29udGVudHNJ
dGVyYXRvcik7CisgICAgcmVtb3ZlVHJhaWxpbmdXaGl0ZXNwYWNlKGxpbmUsIGZsb3dDb250ZW50
c0l0ZXJhdG9yKTsKICAgICBpZiAoIXJ1bnMuc2l6ZSgpKQogICAgICAgICByZXR1cm47CiAgICAg
Ly8gQWRqdXN0IHJ1bnMnIHBvc2l0aW9uIGJ5IHRha2luZyBsaW5lJ3MgYWxpZ25tZW50IGludG8g
YWNjb3VudC4KQEAgLTQ5MSwyOCArNTAyLDYgQEAgc3RhdGljIHZvaWQgY2xvc2VMaW5lRW5kaW5n
QW5kQWRqdXN0UnVucyhMaW5lU3RhdGUmIGxpbmUsIExheW91dDo6UnVuVmVjdG9yJiBydW4KICAg
ICArK2xpbmVDb3VudDsKIH0KIAotc3RhdGljIHZvaWQgc3BsaXRSdW5zQXRSZW5kZXJlckJvdW5k
YXJ5KExheW91dDo6UnVuVmVjdG9yJiBsaW5lUnVucywgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0
b3ImIGZsb3dDb250ZW50c0l0ZXJhdG9yKQotewotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgcHJv
YmFibHkgc3BsaXQgZHVyaW5nIHJ1biBjb25zdHJ1Y3Rpb24gaW5zdGVhZCBvZiBhcyBhIHNlcGFy
YXRlIHBhc3MuCi0gICAgaWYgKGxpbmVSdW5zLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHVuc2lnbmVkIHJ1bkluZGV4ID0gMDsKLSAgICBkbyB7Ci0gICAgICAgIGNvbnN0IFJ1biYg
cnVuID0gbGluZVJ1bnMuYXQocnVuSW5kZXgpOwotICAgICAgICBBU1NFUlQocnVuLnN0YXJ0ICE9
IHJ1bi5lbmQpOwotICAgICAgICBhdXRvJiBzdGFydFNlZ21lbnQgPSBmbG93Q29udGVudHNJdGVy
YXRvci5zZWdtZW50Rm9yUG9zaXRpb24ocnVuLnN0YXJ0KTsKLSAgICAgICAgaWYgKHJ1bi5lbmQg
PD0gc3RhcnRTZWdtZW50LmVuZCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBU
aGlzIHJ1biBvdmVybGFwcyBtdWx0aXBsZSByZW5kZXJlcnMuIFNwbGl0IGl0IHVwLgotICAgICAg
ICAvLyBTcGxpdCBydW4gYXQgdGhlIHJlbmRlcmVyJ3MgYm91bmRhcnkgYW5kIGNyZWF0ZSBhIG5l
dyBydW4gZm9yIHRoZSBsZWZ0IHNpZGUsIHdoaWxlIHVzZSB0aGUgY3VycmVudCBydW4gYXMgdGhl
IHJpZ2h0IHNpZGUuCi0gICAgICAgIGZsb2F0IGxvZ2ljYWxSaWdodE9mTGVmdFJ1biA9IHJ1bi5s
b2dpY2FsTGVmdCArIGZsb3dDb250ZW50c0l0ZXJhdG9yLnRleHRXaWR0aChydW4uc3RhcnQsIHN0
YXJ0U2VnbWVudC5lbmQsIHJ1bi5sb2dpY2FsTGVmdCk7Ci0gICAgICAgIGxpbmVSdW5zLmluc2Vy
dChydW5JbmRleCwgUnVuKHJ1bi5zdGFydCwgc3RhcnRTZWdtZW50LmVuZCwgcnVuLmxvZ2ljYWxM
ZWZ0LCBsb2dpY2FsUmlnaHRPZkxlZnRSdW4sIGZhbHNlKSk7Ci0gICAgICAgIFJ1biYgcmlnaHRT
aWRlUnVuID0gbGluZVJ1bnMuYXQocnVuSW5kZXggKyAxKTsKLSAgICAgICAgcmlnaHRTaWRlUnVu
LnN0YXJ0ID0gc3RhcnRTZWdtZW50LmVuZDsKLSAgICAgICAgcmlnaHRTaWRlUnVuLmxvZ2ljYWxM
ZWZ0ID0gbG9naWNhbFJpZ2h0T2ZMZWZ0UnVuOwotICAgIH0gd2hpbGUgKCsrcnVuSW5kZXggPCBs
aW5lUnVucy5zaXplKCkpOwotfQotCiBzdGF0aWMgdm9pZCBjcmVhdGVUZXh0UnVucyhMYXlvdXQ6
OlJ1blZlY3RvciYgcnVucywgUmVuZGVyQmxvY2tGbG93JiBmbG93LCB1bnNpZ25lZCYgbGluZUNv
dW50KQogewogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ0JlZm9yZSA9IGZsb3cuYm9y
ZGVyQW5kUGFkZGluZ0JlZm9yZSgpOwpAQCAtNTI1LDE0ICs1MTQsMTEgQEAgc3RhdGljIHZvaWQg
Y3JlYXRlVGV4dFJ1bnMoTGF5b3V0OjpSdW5WZWN0b3ImIHJ1bnMsIFJlbmRlckJsb2NrRmxvdyYg
ZmxvdywgdW5zaWcKICAgICAgICAgZmxvdy5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVIZWlnaHQgKiBs
aW5lQ291bnQgKyBib3JkZXJBbmRQYWRkaW5nQmVmb3JlKTsKICAgICAgICAgTGluZVN0YXRlIHBy
ZXZpb3VzTGluZSA9IGxpbmU7CiAgICAgICAgIHVuc2lnbmVkIHByZXZpb3VzUnVuQ291bnQgPSBy
dW5zLnNpemUoKTsKLSAgICAgICAgbGluZSA9IExpbmVTdGF0ZSgpOworICAgICAgICBsaW5lID0g
TGluZVN0YXRlKHJ1bnMpOwogICAgICAgICB1cGRhdGVMaW5lQ29uc3RyYWlucyhmbG93LCBsaW5l
LmF2YWlsYWJsZVdpZHRoLCBsaW5lLmxvZ2ljYWxMZWZ0T2Zmc2V0KTsKICAgICAgICAgaXNFbmRP
ZkNvbnRlbnQgPSBjcmVhdGVMaW5lUnVucyhsaW5lLCBwcmV2aW91c0xpbmUsIHJ1bnMsIGZsb3dD
b250ZW50c0l0ZXJhdG9yKTsKICAgICAgICAgY2xvc2VMaW5lRW5kaW5nQW5kQWRqdXN0UnVucyhs
aW5lLCBydW5zLCBwcmV2aW91c1J1bkNvdW50LCBsaW5lQ291bnQsIGZsb3dDb250ZW50c0l0ZXJh
dG9yKTsKICAgICB9IHdoaWxlICghaXNFbmRPZkNvbnRlbnQpOwotCi0gICAgaWYgKGZsb3cuZmly
c3RDaGlsZCgpICE9IGZsb3cubGFzdENoaWxkKCkpCi0gICAgICAgIHNwbGl0UnVuc0F0UmVuZGVy
ZXJCb3VuZGFyeShydW5zLCBmbG93Q29udGVudHNJdGVyYXRvcik7CiB9CiAKIHN0ZDo6dW5pcXVl
X3B0cjxMYXlvdXQ+IGNyZWF0ZShSZW5kZXJCbG9ja0Zsb3cmIGZsb3cpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0Nv
bnRlbnRzSXRlcmF0b3IuY3BwCmluZGV4IDRiNThiNTkuLjNkZDMwZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxv
d0NvbnRlbnRzSXRlcmF0b3IuY3BwCkBAIC02MSw2OSArNjEsNDkgQEAgRmxvd0NvbnRlbnRzSXRl
cmF0b3I6OlRleHRGcmFnbWVudCBGbG93Q29udGVudHNJdGVyYXRvcjo6bmV4dFRleHRGcmFnbWVu
dChmbG9hdAogICAgIC8vIDIuIHdoaXRlc3BhY2UgKGNvbGxhc3BlZCwgbm9uLWNvbGxhcHNlZCBt
dWx0aSBvciBzaW5nbGUpIG9yCiAgICAgLy8gMy4gbm9uLXdoaXRlc3BhY2UgY2hhcmFjdGVycy4K
ICAgICAvLyA0LiBlbXB0eSwgaW5kaWNhdGluZyBjb250ZW50IGVuZC4KLSAgICBUZXh0RnJhZ21l
bnQgZnJhZ21lbnQ7Ci0gICAgZnJhZ21lbnQuc3RhcnQgPSBtX3Bvc2l0aW9uOwotICAgIGlmIChp
c0VuZChmcmFnbWVudC5zdGFydCkpIHsKLSAgICAgICAgZnJhZ21lbnQuZW5kID0gZnJhZ21lbnQu
c3RhcnQ7Ci0gICAgICAgIHJldHVybiBmcmFnbWVudDsKLSAgICB9Ci0gICAgaWYgKGlzTGluZUJy
ZWFrKGZyYWdtZW50LnN0YXJ0KSkgewotICAgICAgICBmcmFnbWVudC50eXBlID0gVGV4dEZyYWdt
ZW50OjpMaW5lQnJlYWs7Ci0gICAgICAgIGZyYWdtZW50LmVuZCA9IGZyYWdtZW50LnN0YXJ0ICsg
MTsKLSAgICAgICAgbV9wb3NpdGlvbiA9IGZyYWdtZW50LmVuZDsKKyAgICBpZiAoaXNFbmQobV9w
b3NpdGlvbikpCisgICAgICAgIHJldHVybiBUZXh0RnJhZ21lbnQobV9wb3NpdGlvbiwgbV9wb3Np
dGlvbiwgMCwgVGV4dEZyYWdtZW50OjpMaW5lRW5kKTsKKworICAgIGlmIChpc0xpbmVCcmVhayht
X3Bvc2l0aW9uKSkgeworICAgICAgICBUZXh0RnJhZ21lbnQgZnJhZ21lbnQobV9wb3NpdGlvbiwg
bV9wb3NpdGlvbiArIDEsIDAsIFRleHRGcmFnbWVudDo6TGluZUJyZWFrKTsKKyAgICAgICAgKytt
X3Bvc2l0aW9uOwogICAgICAgICByZXR1cm4gZnJhZ21lbnQ7CiAgICAgfQogCiAgICAgdW5zaWdu
ZWQgc3BhY2VDb3VudCA9IDA7Ci0gICAgdW5zaWduZWQgd2hpdGVzcGFjZUVuZCA9IGZpbmROZXh0
Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKGZyYWdtZW50LnN0YXJ0LCBzcGFjZUNvdW50KTsKLSAgICBB
U1NFUlQoZnJhZ21lbnQuc3RhcnQgPD0gd2hpdGVzcGFjZUVuZCk7Ci0gICAgaWYgKGZyYWdtZW50
LnN0YXJ0ICE9IHdoaXRlc3BhY2VFbmQpIHsKLSAgICAgICAgZnJhZ21lbnQudHlwZSA9IFRleHRG
cmFnbWVudDo6V2hpdGVzcGFjZTsKLSAgICAgICAgZnJhZ21lbnQuZW5kID0gd2hpdGVzcGFjZUVu
ZDsKLSAgICAgICAgYm9vbCBtdWx0aXBsZVdoaXRlc3BhY2UgPSBmcmFnbWVudC5zdGFydCArIDEg
PCBmcmFnbWVudC5lbmQ7Ci0gICAgICAgIGZyYWdtZW50LmlzQ29sbGFwc2VkID0gbXVsdGlwbGVX
aGl0ZXNwYWNlICYmIG1fc3R5bGUuY29sbGFwc2VXaGl0ZXNwYWNlOwotICAgICAgICBmcmFnbWVu
dC5pc0JyZWFrYWJsZSA9ICFmcmFnbWVudC5pc0NvbGxhcHNlZCAmJiBtdWx0aXBsZVdoaXRlc3Bh
Y2U7Ci0gICAgICAgIGlmIChmcmFnbWVudC5pc0NvbGxhcHNlZCkKLSAgICAgICAgICAgIGZyYWdt
ZW50LndpZHRoID0gbV9zdHlsZS5zcGFjZVdpZHRoOworICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRp
b24gPSBtX3Bvc2l0aW9uOworICAgIHVuc2lnbmVkIGVuZFBvc2l0aW9uID0gbmV4dFdoaXRlc3Bh
Y2VQb3NpdGlvbihzdGFydFBvc2l0aW9uLCBzcGFjZUNvdW50KTsKKyAgICBBU1NFUlQoc3RhcnRQ
b3NpdGlvbiA8PSBlbmRQb3NpdGlvbik7CisgICAgaWYgKGVuZFBvc2l0aW9uID4gc3RhcnRQb3Np
dGlvbikgeworICAgICAgICBib29sIG11bHRpcGxlV2hpdGVzcGFjZSA9IHN0YXJ0UG9zaXRpb24g
KyAxIDwgZW5kUG9zaXRpb247CisgICAgICAgIGJvb2wgaXNDb2xsYXBzZWQgPSBtdWx0aXBsZVdo
aXRlc3BhY2UgJiYgbV9zdHlsZS5jb2xsYXBzZVdoaXRlc3BhY2U7CisgICAgICAgIGJvb2wgaXNC
cmVha2FibGUgPSAhaXNDb2xsYXBzZWQgJiYgbXVsdGlwbGVXaGl0ZXNwYWNlOworICAgICAgICBm
bG9hdCB3aWR0aCA9IDA7CisgICAgICAgIGlmIChpc0NvbGxhcHNlZCkKKyAgICAgICAgICAgIHdp
ZHRoID0gbV9zdHlsZS5zcGFjZVdpZHRoOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGZyYWdtZW50TGVuZ3RoID0gZnJhZ21lbnQuZW5kIC0gZnJhZ21lbnQuc3RhcnQ7Ci0g
ICAgICAgICAgICBpZiAoZnJhZ21lbnRMZW5ndGggPT0gc3BhY2VDb3VudCkKLSAgICAgICAgICAg
ICAgICBmcmFnbWVudC53aWR0aCA9IGZyYWdtZW50TGVuZ3RoICogbV9zdHlsZS5zcGFjZVdpZHRo
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGZyYWdtZW50LndpZHRoID0gdGV4
dFdpZHRoKGZyYWdtZW50LnN0YXJ0LCBmcmFnbWVudC5lbmQsIHhQb3NpdGlvbik7CisgICAgICAg
ICAgICB1bnNpZ25lZCB0ZXh0TGVuZ3RoID0gZW5kUG9zaXRpb24gLSBzdGFydFBvc2l0aW9uOwor
ICAgICAgICAgICAgdW5zaWduZWQgZml4ZWRXaWR0aCA9IHNwYWNlQ291bnQgPT0gdGV4dExlbmd0
aDsKKyAgICAgICAgICAgIHdpZHRoID0gZml4ZWRXaWR0aCA/IHRleHRMZW5ndGggKiBtX3N0eWxl
LnNwYWNlV2lkdGggOiB0ZXh0V2lkdGgoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHhQb3Np
dGlvbik7CiAgICAgICAgIH0KLSAgICAgICAgbV9wb3NpdGlvbiA9IGZyYWdtZW50LmVuZDsKLSAg
ICAgICAgcmV0dXJuIGZyYWdtZW50OworICAgICAgICBtX3Bvc2l0aW9uID0gZW5kUG9zaXRpb247
CisgICAgICAgIHJldHVybiBUZXh0RnJhZ21lbnQoc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24s
IHdpZHRoLCBUZXh0RnJhZ21lbnQ6OldoaXRlc3BhY2UsIGlzQnJlYWthYmxlKTsKICAgICB9Ci0K
LSAgICBmcmFnbWVudC50eXBlID0gVGV4dEZyYWdtZW50OjpOb25XaGl0ZXNwYWNlOwotICAgIGZy
YWdtZW50LmlzQnJlYWthYmxlID0gbV9zdHlsZS5icmVha1dvcmRPbk92ZXJmbG93OwotICAgIGZy
YWdtZW50LmVuZCA9IGZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24oZnJhZ21lbnQuc3RhcnQgKyAx
KTsKLSAgICBmcmFnbWVudC53aWR0aCA9IHRleHRXaWR0aChmcmFnbWVudC5zdGFydCwgZnJhZ21l
bnQuZW5kLCB4UG9zaXRpb24pOwotICAgIG1fcG9zaXRpb24gPSBmcmFnbWVudC5lbmQ7Ci0gICAg
cmV0dXJuIGZyYWdtZW50OworICAgIGVuZFBvc2l0aW9uID0gbmV4dE5vbldoaXRlc3BhY2VQb3Np
dGlvbihzdGFydFBvc2l0aW9uKTsKKyAgICBtX3Bvc2l0aW9uID0gZW5kUG9zaXRpb247CisgICAg
cmV0dXJuIFRleHRGcmFnbWVudChzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgdGV4dFdpZHRo
KHN0YXJ0UG9zaXRpb24sIGVuZFBvc2l0aW9uLCB4UG9zaXRpb24pLCBUZXh0RnJhZ21lbnQ6Ok5v
bldoaXRlc3BhY2UpOwogfQogCiBmbG9hdCBGbG93Q29udGVudHNJdGVyYXRvcjo6dGV4dFdpZHRo
KHVuc2lnbmVkIGZyb20sIHVuc2lnbmVkIHRvLCBmbG9hdCB4UG9zaXRpb24pIGNvbnN0CiB7Ci0g
ICAgY29uc3QgYXV0byYgZnJvbVNlZ21lbnQgPSBtX2Zsb3dDb250ZW50cy5zZWdtZW50Rm9yUG9z
aXRpb24oZnJvbSk7Ci0gICAgaWYgKChtX3N0eWxlLmZvbnQuaXNGaXhlZFBpdGNoKCkgJiYgZnJv
bVNlZ21lbnQuZW5kID49IHRvKSB8fCAoZnJvbSA9PSBmcm9tU2VnbWVudC5zdGFydCAmJiB0byA9
PSBmcm9tU2VnbWVudC5lbmQpKQotICAgICAgICByZXR1cm4gZnJvbVNlZ21lbnQucmVuZGVyZXIu
d2lkdGgoZnJvbSAtIGZyb21TZWdtZW50LnN0YXJ0LCB0byAtIGZyb20sIG1fc3R5bGUuZm9udCwg
eFBvc2l0aW9uLCBudWxscHRyLCBudWxscHRyKTsKLQotICAgIGNvbnN0IGF1dG8qIHNlZ21lbnQg
PSAmZnJvbVNlZ21lbnQ7Ci0gICAgZmxvYXQgdGV4dFdpZHRoID0gMDsKLSAgICB1bnNpZ25lZCBm
cmFnbWVudEVuZCA9IDA7Ci0gICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgZnJhZ21lbnRFbmQg
PSBzdGQ6Om1pbih0bywgc2VnbWVudC0+ZW5kKTsKLSAgICAgICAgdGV4dFdpZHRoICs9IHNlZ21l
bnQtPnRleHQuaXM4Qml0KCkgPyBydW5XaWR0aDxMQ2hhcj4oc2VnbWVudC0+dGV4dCwgZnJvbSAt
IHNlZ21lbnQtPnN0YXJ0LCBmcmFnbWVudEVuZCAtIHNlZ21lbnQtPnN0YXJ0LCB4UG9zaXRpb24g
KyB0ZXh0V2lkdGgpIDoKLSAgICAgICAgICAgIHJ1bldpZHRoPFVDaGFyPihzZWdtZW50LT50ZXh0
LCBmcm9tIC0gc2VnbWVudC0+c3RhcnQsIGZyYWdtZW50RW5kIC0gc2VnbWVudC0+c3RhcnQsIHhQ
b3NpdGlvbiArIHRleHRXaWR0aCk7Ci0gICAgICAgIGlmIChmcmFnbWVudEVuZCA9PSB0bykKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICBmcm9tID0gZnJhZ21lbnRFbmQ7Ci0gICAgICAgIHNl
Z21lbnQgPSAmbV9mbG93Q29udGVudHMuc2VnbWVudEZvclBvc2l0aW9uKGZyYWdtZW50RW5kKTsK
LSAgICB9OwotCi0gICAgcmV0dXJuIHRleHRXaWR0aDsKKyAgICBjb25zdCBhdXRvJiBzZWdtZW50
ID0gbV9mbG93Q29udGVudHMuc2VnbWVudEZvclBvc2l0aW9uKGZyb20pOworICAgIEFTU0VSVChm
cm9tID49IHNlZ21lbnQuc3RhcnQgJiYgdG8gPD0gc2VnbWVudC5lbmQpOworICAgIGlmIChtX3N0
eWxlLmZvbnQuaXNGaXhlZFBpdGNoKCkgfHwgKGZyb20gPT0gc2VnbWVudC5zdGFydCAmJiB0byA9
PSBzZWdtZW50LmVuZCkpCisgICAgICAgIHJldHVybiBzZWdtZW50LnJlbmRlcmVyLndpZHRoKGZy
b20gLSBzZWdtZW50LnN0YXJ0LCB0byAtIGZyb20sIG1fc3R5bGUuZm9udCwgeFBvc2l0aW9uLCBu
dWxscHRyLCBudWxscHRyKTsKKworICAgIHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24gPSBmcm9tIC0g
c2VnbWVudC5zdGFydDsKKyAgICB1bnNpZ25lZCBlbmRQb3NpdGlvbiA9IHRvIC0gc2VnbWVudC5z
dGFydDsKKyAgICByZXR1cm4gc2VnbWVudC50ZXh0LmlzOEJpdCgpID8gcnVuV2lkdGg8TENoYXI+
KHNlZ21lbnQudGV4dCwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHhQb3NpdGlvbikgOiBy
dW5XaWR0aDxVQ2hhcj4oc2VnbWVudC50ZXh0LCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwg
eFBvc2l0aW9uKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CkBAIC0x
MzIsNTMgKzExMiw1MyBAQCBzdGF0aWMgdW5zaWduZWQgbmV4dEJyZWFrYWJsZVBvc2l0aW9uKExh
enlMaW5lQnJlYWtJdGVyYXRvciYgbGluZUJyZWFrSXRlcmF0b3IsCiAgICAgY29uc3QgYXV0byog
Y2hhcmFjdGVycyA9IHNlZ21lbnQudGV4dC5jaGFyYWN0ZXJzPENoYXJhY3RlclR5cGU+KCk7CiAg
ICAgdW5zaWduZWQgc2VnbWVudExlbmd0aCA9IHNlZ21lbnQuZW5kIC0gc2VnbWVudC5zdGFydDsK
ICAgICB1bnNpZ25lZCBzZWdtZW50UG9zaXRpb24gPSBwb3NpdGlvbiAtIHNlZ21lbnQuc3RhcnQ7
Ci0gICAgcmV0dXJuIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8Q2hhcmFjdGVyVHlw
ZSwgTkJTUEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsaW5lQnJlYWtJdGVyYXRvciwgY2hhcmFjdGVy
cywgc2VnbWVudExlbmd0aCwgc2VnbWVudFBvc2l0aW9uKTsKKyAgICByZXR1cm4gc2VnbWVudC5z
dGFydCArIG5leHRCcmVha2FibGVQb3NpdGlvbk5vbkxvb3NlbHk8Q2hhcmFjdGVyVHlwZSwgTkJT
UEJlaGF2aW9yOjpJZ25vcmVOQlNQPihsaW5lQnJlYWtJdGVyYXRvciwgY2hhcmFjdGVycywgc2Vn
bWVudExlbmd0aCwgc2VnbWVudFBvc2l0aW9uKTsKIH0KIAotdW5zaWduZWQgRmxvd0NvbnRlbnRz
SXRlcmF0b3I6OmZpbmROZXh0QnJlYWthYmxlUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24pIGNv
bnN0Cit1bnNpZ25lZCBGbG93Q29udGVudHNJdGVyYXRvcjo6bmV4dE5vbldoaXRlc3BhY2VQb3Np
dGlvbih1bnNpZ25lZCBzdGFydFBvc2l0aW9uKSBjb25zdAogewotICAgIHdoaWxlICghaXNFbmQo
cG9zaXRpb24pKSB7Ci0gICAgICAgIGF1dG8mIHNlZ21lbnQgPSBtX2Zsb3dDb250ZW50cy5zZWdt
ZW50Rm9yUG9zaXRpb24ocG9zaXRpb24pOwotICAgICAgICBpZiAoc2VnbWVudC50ZXh0LmltcGwo
KSAhPSBtX2xpbmVCcmVha0l0ZXJhdG9yLnN0cmluZygpLmltcGwoKSkgewotICAgICAgICAgICAg
VUNoYXIgbGFzdENoYXJhY3RlciA9IHNlZ21lbnQuc3RhcnQgPiAwID8gY2hhcmFjdGVyQXQoc2Vn
bWVudC5zdGFydCAtIDEpIDogMDsKLSAgICAgICAgICAgIFVDaGFyIHNlY29uZFRvTGFzdENoYXJh
Y3RlciA9IHNlZ21lbnQuc3RhcnQgPiAxID8gY2hhcmFjdGVyQXQoc2VnbWVudC5zdGFydCAtIDIp
IDogMDsKLSAgICAgICAgICAgIG1fbGluZUJyZWFrSXRlcmF0b3Iuc2V0UHJpb3JDb250ZXh0KGxh
c3RDaGFyYWN0ZXIsIHNlY29uZFRvTGFzdENoYXJhY3Rlcik7Ci0gICAgICAgICAgICBtX2xpbmVC
cmVha0l0ZXJhdG9yLnJlc2V0U3RyaW5nQW5kUmVsZWFzZUl0ZXJhdG9yKHNlZ21lbnQudGV4dCwg
bV9zdHlsZS5sb2NhbGUsIExpbmVCcmVha0l0ZXJhdG9yTW9kZVVBWDE0KTsKLSAgICAgICAgfQot
Ci0gICAgICAgIHVuc2lnbmVkIGJyZWFrYWJsZSA9IHNlZ21lbnQudGV4dC5pczhCaXQoKSA/IG5l
eHRCcmVha2FibGVQb3NpdGlvbjxMQ2hhcj4obV9saW5lQnJlYWtJdGVyYXRvciwgc2VnbWVudCwg
cG9zaXRpb24pIDogbmV4dEJyZWFrYWJsZVBvc2l0aW9uPFVDaGFyPihtX2xpbmVCcmVha0l0ZXJh
dG9yLCBzZWdtZW50LCBwb3NpdGlvbik7Ci0gICAgICAgIHBvc2l0aW9uID0gc2VnbWVudC5zdGFy
dCArIGJyZWFrYWJsZTsKLSAgICAgICAgaWYgKHBvc2l0aW9uIDwgc2VnbWVudC5lbmQpCi0gICAg
ICAgICAgICBicmVhazsKKyAgICBpZiAoaXNFbmQoc3RhcnRQb3NpdGlvbikpCisgICAgICAgIHJl
dHVybiBzdGFydFBvc2l0aW9uOworCisgICAgY29uc3QgYXV0byYgc2VnbWVudCA9ICooRmxvd0Nv
bnRlbnRzOjpJdGVyYXRvcihtX2Zsb3dDb250ZW50cywgbV9mbG93Q29udGVudHMuc2VnbWVudElu
ZGV4Rm9yUG9zaXRpb24oc3RhcnRQb3NpdGlvbikpKTsKKyAgICBpZiAoc2VnbWVudC50ZXh0Lmlt
cGwoKSAhPSBtX2xpbmVCcmVha0l0ZXJhdG9yLnN0cmluZygpLmltcGwoKSkgeworICAgICAgICBV
Q2hhciBsYXN0Q2hhcmFjdGVyID0gc2VnbWVudC5zdGFydCA+IDAgPyBjaGFyYWN0ZXJBdChzZWdt
ZW50LnN0YXJ0IC0gMSkgOiAwOworICAgICAgICBVQ2hhciBzZWNvbmRUb0xhc3RDaGFyYWN0ZXIg
PSBzZWdtZW50LnN0YXJ0ID4gMSA/IGNoYXJhY3RlckF0KHNlZ21lbnQuc3RhcnQgLSAyKSA6IDA7
CisgICAgICAgIG1fbGluZUJyZWFrSXRlcmF0b3Iuc2V0UHJpb3JDb250ZXh0KGxhc3RDaGFyYWN0
ZXIsIHNlY29uZFRvTGFzdENoYXJhY3Rlcik7CisgICAgICAgIG1fbGluZUJyZWFrSXRlcmF0b3Iu
cmVzZXRTdHJpbmdBbmRSZWxlYXNlSXRlcmF0b3Ioc2VnbWVudC50ZXh0LCBtX3N0eWxlLmxvY2Fs
ZSwgTGluZUJyZWFrSXRlcmF0b3JNb2RlVUFYMTQpOwogICAgIH0KLSAgICByZXR1cm4gcG9zaXRp
b247CisgICAgcmV0dXJuIHNlZ21lbnQudGV4dC5pczhCaXQoKSA/IG5leHRCcmVha2FibGVQb3Np
dGlvbjxMQ2hhcj4obV9saW5lQnJlYWtJdGVyYXRvciwgc2VnbWVudCwgc3RhcnRQb3NpdGlvbikg
OiBuZXh0QnJlYWthYmxlUG9zaXRpb248VUNoYXI+KG1fbGluZUJyZWFrSXRlcmF0b3IsIHNlZ21l
bnQsIHN0YXJ0UG9zaXRpb24pOworfQordGVtcGxhdGUgPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
Citib29sIGlzV2hpdGVzcGFjZShDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlciwgY29uc3QgRmxvd0Nv
bnRlbnRzSXRlcmF0b3I6OlN0eWxlJiBzdHlsZSkKK3sKKyAgICByZXR1cm4gY2hhcmFjdGVyID09
ICcgJyB8fCBjaGFyYWN0ZXIgPT0gJ1x0JyB8fCAoIXN0eWxlLnByZXNlcnZlTmV3bGluZSAmJiBj
aGFyYWN0ZXIgPT0gJ1xuJyk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgotc3RhdGljIGJvb2wgZmluZE5leHROb25XaGl0ZXNwYWNlKGNvbnN0IEZsb3dDb250ZW50czo6
U2VnbWVudCYgc2VnbWVudCwgY29uc3QgRmxvd0NvbnRlbnRzSXRlcmF0b3I6OlN0eWxlJiBzdHls
ZSwgdW5zaWduZWQmIHBvc2l0aW9uLCB1bnNpZ25lZCYgc3BhY2VDb3VudCkKK3N0YXRpYyB1bnNp
Z25lZCBmaW5kTmV4dE5vbldoaXRlc3BhY2UoY29uc3QgRmxvd0NvbnRlbnRzOjpTZWdtZW50JiBz
ZWdtZW50LCB1bnNpZ25lZCBzdGFydFBvc2l0aW9uLCBjb25zdCBGbG93Q29udGVudHNJdGVyYXRv
cjo6U3R5bGUmIHN0eWxlLCB1bnNpZ25lZCYgc3BhY2VDb3VudCkKIHsKICAgICBjb25zdCBhdXRv
KiB0ZXh0ID0gc2VnbWVudC50ZXh0LmNoYXJhY3RlcnM8Q2hhcmFjdGVyVHlwZT4oKTsKKyAgICB1
bnNpZ25lZCBwb3NpdGlvbiA9IHN0YXJ0UG9zaXRpb247CiAgICAgZm9yICg7IHBvc2l0aW9uIDwg
c2VnbWVudC5lbmQ7ICsrcG9zaXRpb24pIHsKICAgICAgICAgYXV0byBjaGFyYWN0ZXIgPSB0ZXh0
W3Bvc2l0aW9uIC0gc2VnbWVudC5zdGFydF07Ci0gICAgICAgIGJvb2wgaXNTcGFjZSA9IGNoYXJh
Y3RlciA9PSAnICc7Ci0gICAgICAgIGJvb2wgaXNXaGl0ZXNwYWNlID0gaXNTcGFjZSB8fCBjaGFy
YWN0ZXIgPT0gJ1x0JyB8fCAoIXN0eWxlLnByZXNlcnZlTmV3bGluZSAmJiBjaGFyYWN0ZXIgPT0g
J1xuJyk7Ci0gICAgICAgIGlmICghaXNXaGl0ZXNwYWNlKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgIGlmIChpc1NwYWNlKQorICAgICAgICBpZiAoIWlzV2hpdGVzcGFjZShjaGFy
YWN0ZXIsIHN0eWxlKSkKKyAgICAgICAgICAgIHJldHVybiBwb3NpdGlvbjsKKyAgICAgICAgaWYg
KGNoYXJhY3RlciA9PSAnICcpCiAgICAgICAgICAgICArK3NwYWNlQ291bnQ7CiAgICAgfQotICAg
IHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gcG9zaXRpb247CiB9CiAKLXVuc2lnbmVkIEZsb3dD
b250ZW50c0l0ZXJhdG9yOjpmaW5kTmV4dE5vbldoaXRlc3BhY2VQb3NpdGlvbih1bnNpZ25lZCBw
b3NpdGlvbiwgdW5zaWduZWQmIHNwYWNlQ291bnQpIGNvbnN0Cit1bnNpZ25lZCBGbG93Q29udGVu
dHNJdGVyYXRvcjo6bmV4dFdoaXRlc3BhY2VQb3NpdGlvbih1bnNpZ25lZCBzdGFydFBvc2l0aW9u
LCB1bnNpZ25lZCYgc3BhY2VDb3VudCkgY29uc3QKIHsKLSAgICBGbG93Q29udGVudHM6Okl0ZXJh
dG9yIGl0KG1fZmxvd0NvbnRlbnRzLCBtX2Zsb3dDb250ZW50cy5zZWdtZW50SW5kZXhGb3JQb3Np
dGlvbihwb3NpdGlvbikpOwotICAgIGZvciAoYXV0byBlbmQgPSBtX2Zsb3dDb250ZW50cy5lbmQo
KTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgIGJvb2wgZm91bmROb25XaGl0ZXNwYWNlID0g
KCppdCkudGV4dC5pczhCaXQoKSA/IGZpbmROZXh0Tm9uV2hpdGVzcGFjZTxMQ2hhcj4oKml0LCBt
X3N0eWxlLCBwb3NpdGlvbiwgc3BhY2VDb3VudCkgOiBmaW5kTmV4dE5vbldoaXRlc3BhY2U8VUNo
YXI+KCppdCwgbV9zdHlsZSwgcG9zaXRpb24sIHNwYWNlQ291bnQpOwotICAgICAgICBpZiAoZm91
bmROb25XaGl0ZXNwYWNlKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBw
b3NpdGlvbjsKKyAgICBpZiAoaXNFbmQoc3RhcnRQb3NpdGlvbikpCisgICAgICAgIHJldHVybiBz
dGFydFBvc2l0aW9uOworICAgIC8vIE5vIHdoaXRlc3BhY2UgYXQgYWxsLgorICAgIGlmICghaXNX
aGl0ZXNwYWNlKGNoYXJhY3RlckF0KHN0YXJ0UG9zaXRpb24pLCBtX3N0eWxlKSkKKyAgICAgICAg
cmV0dXJuIHN0YXJ0UG9zaXRpb247CisgICAgY29uc3QgYXV0byYgc2VnbWVudCA9ICooRmxvd0Nv
bnRlbnRzOjpJdGVyYXRvcihtX2Zsb3dDb250ZW50cywgbV9mbG93Q29udGVudHMuc2VnbWVudElu
ZGV4Rm9yUG9zaXRpb24oc3RhcnRQb3NpdGlvbikpKTsKKyAgICByZXR1cm4gc2VnbWVudC50ZXh0
LmlzOEJpdCgpID8gZmluZE5leHROb25XaGl0ZXNwYWNlPExDaGFyPihzZWdtZW50LCBzdGFydFBv
c2l0aW9uLCBtX3N0eWxlLCBzcGFjZUNvdW50KSA6IGZpbmROZXh0Tm9uV2hpdGVzcGFjZTxVQ2hh
cj4oc2VnbWVudCwgc3RhcnRQb3NpdGlvbiwgbV9zdHlsZSwgc3BhY2VDb3VudCk7CiB9CiAKIHRl
bXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRvci5oIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NpbXBsZUxpbmVMYXlvdXRGbG93Q29udGVudHNJdGVyYXRv
ci5oCmluZGV4IDgzZDRjODUuLjk5OWU1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TaW1wbGVMaW5lTGF5b3V0Rmxvd0NvbnRlbnRzSXRlcmF0b3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU2ltcGxlTGluZUxheW91dEZsb3dDb250ZW50c0l0ZXJhdG9y
LmgKQEAgLTQwLDI5ICs0MCwzNiBAQCBjbGFzcyBGbG93Q29udGVudHNJdGVyYXRvciAgewogcHVi
bGljOgogICAgIEZsb3dDb250ZW50c0l0ZXJhdG9yKGNvbnN0IFJlbmRlckJsb2NrRmxvdyYpOwog
Ci0gICAgc3RydWN0IFRleHRGcmFnbWVudCB7CisgICAgY2xhc3MgVGV4dEZyYWdtZW50IHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIGVudW0gVHlwZSB7IExpbmVCcmVhaywgTGluZUVuZCwgV2hpdGVz
cGFjZSwgTm9uV2hpdGVzcGFjZSB9OworCiAgICAgICAgIFRleHRGcmFnbWVudCgpID0gZGVmYXVs
dDsKLSAgICAgICAgVGV4dEZyYWdtZW50KHVuc2lnbmVkIHRleHRTdGFydCwgdW5zaWduZWQgdGV4
dEVuZCwgZmxvYXQgdGV4dFdpZHRoLCBib29sIGlzV2hpdGVzcGFjZU9ubHkpCi0gICAgICAgICAg
ICA6IHN0YXJ0KHRleHRTdGFydCkKLSAgICAgICAgICAgICwgZW5kKHRleHRFbmQpCi0gICAgICAg
ICAgICAsIHR5cGUoaXNXaGl0ZXNwYWNlT25seSA/IFdoaXRlc3BhY2UgOiBOb25XaGl0ZXNwYWNl
KQotICAgICAgICAgICAgLCB3aWR0aCh0ZXh0V2lkdGgpCisgICAgICAgIFRleHRGcmFnbWVudCh1
bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kLCBmbG9hdCB3aWR0aCwgVHlwZSB0eXBlLCBib29s
IGlzQnJlYWthYmxlID0gZmFsc2UpCisgICAgICAgICAgICA6IG1fc3RhcnQoc3RhcnQpCisgICAg
ICAgICAgICAsIG1fZW5kKGVuZCkKKyAgICAgICAgICAgICwgbV93aWR0aCh3aWR0aCkKKyAgICAg
ICAgICAgICwgbV90eXBlKHR5cGUpCisgICAgICAgICAgICAsIG1faXNCcmVha2FibGUoaXNCcmVh
a2FibGUpCiAgICAgICAgIHsKICAgICAgICAgfQogCi0gICAgICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBzdGFydCA9PSBlbmQ7Ci0gICAgICAg
IH0KKyAgICAgICAgdW5zaWduZWQgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9Cisg
ICAgICAgIHVuc2lnbmVkIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9CisgICAgICAgIGZs
b2F0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQorICAgICAgICBUeXBlIHR5cGUo
KSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICAgICAgYm9vbCBpc0JyZWFrYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNCcmVha2FibGU7IH0KIAotICAgICAgICBlbnVtIFR5cGUgeyBMaW5l
QnJlYWssIFdoaXRlc3BhY2UsIE5vbldoaXRlc3BhY2UgfTsKLSAgICAgICAgdW5zaWduZWQgc3Rh
cnQgeyAwIH07Ci0gICAgICAgIHVuc2lnbmVkIGVuZCAgezAgfTsKLSAgICAgICAgVHlwZSB0eXBl
IHsgTm9uV2hpdGVzcGFjZSB9OwotICAgICAgICBib29sIGlzQ29sbGFwc2VkIHsgZmFsc2UgfTsK
LSAgICAgICAgYm9vbCBpc0JyZWFrYWJsZSB7IGZhbHNlIH07Ci0gICAgICAgIGZsb2F0IHdpZHRo
IHsgMCB9OworICAgICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBzdGFydCgpID09
IGVuZCgpOyB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB1bnNpZ25lZCBtX3N0YXJ0IHsgMCB9
OworICAgICAgICB1bnNpZ25lZCBtX2VuZCB7IDAgfTsKKyAgICAgICAgZmxvYXQgbV93aWR0aCB7
IDAgfTsKKyAgICAgICAgVHlwZSBtX3R5cGUgeyBMaW5lRW5kIH07CisgICAgICAgIGJvb2wgbV9p
c0JyZWFrYWJsZSB7IGZhbHNlIH07CiAgICAgfTsKKwogICAgIFRleHRGcmFnbWVudCBuZXh0VGV4
dEZyYWdtZW50KGZsb2F0IHhQb3NpdGlvbiA9IDApOwogICAgIGZsb2F0IHRleHRXaWR0aCh1bnNp
Z25lZCBmcm9tLCB1bnNpZ25lZCB0bywgZmxvYXQgeFBvc2l0aW9uKSBjb25zdDsKIApAQCAtODQs
OCArOTEsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgRmxvd0NvbnRlbnRzOjpTZWdtZW50JiBzZWdt
ZW50Rm9yUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24pIGNvbnN0IHsgcmV0dXJuIG1fZmxvd0Nv
bnRlbnRzLnNlZ21lbnRGb3JQb3NpdGlvbihwb3NpdGlvbik7IH07CiAKIHByaXZhdGU6Ci0gICAg
dW5zaWduZWQgZmluZE5leHROb25XaGl0ZXNwYWNlUG9zaXRpb24odW5zaWduZWQgcG9zaXRpb24s
IHVuc2lnbmVkJiBzcGFjZUNvdW50KSBjb25zdDsKLSAgICB1bnNpZ25lZCBmaW5kTmV4dEJyZWFr
YWJsZVBvc2l0aW9uKHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdDsKKyAgICB1bnNpZ25lZCBuZXh0
Tm9uV2hpdGVzcGFjZVBvc2l0aW9uKHVuc2lnbmVkIHN0YXJ0UG9zaXRpb24pIGNvbnN0OworICAg
IHVuc2lnbmVkIG5leHRXaGl0ZXNwYWNlUG9zaXRpb24odW5zaWduZWQgc3RhcnRQb3NpdGlvbiwg
dW5zaWduZWQmIHNwYWNlQ291bnQpIGNvbnN0OwogICAgIFVDaGFyIGNoYXJhY3RlckF0KHVuc2ln
bmVkIHBvc2l0aW9uKSBjb25zdDsKICAgICBib29sIGlzTGluZUJyZWFrKHVuc2lnbmVkIHBvc2l0
aW9uKSBjb25zdDsKICAgICBib29sIGlzRW5kKHVuc2lnbmVkIHBvc2l0aW9uKSBjb25zdDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>