<?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>72223</bug_id>
          
          <creation_ts>2011-11-12 18:13:34 -0800</creation_ts>
          <short_desc>[Chromium] Texture updater that uses PBOs</short_desc>
          <delta_ts>2012-08-28 21:34:51 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>71872</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Reveman">reveman</reporter>
          <assigned_to name="David Reveman">reveman</assigned_to>
          <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>nduca</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>501486</commentid>
    <comment_count>0</comment_count>
      <attachid>114849</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-12 18:13:34 -0800</bug_when>
    <thetext>Created attachment 114849
Patch

Only for testing purposes.

Requires this cl on the chromium side: http://codereview.chromium.org/8546008/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>503169</commentid>
    <comment_count>1</comment_count>
      <attachid>115223</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-15 12:43:41 -0800</bug_when>
    <thetext>Created attachment 115223
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>506622</commentid>
    <comment_count>2</comment_count>
      <attachid>116012</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-20 17:07:14 -0800</bug_when>
    <thetext>Created attachment 116012
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>507871</commentid>
    <comment_count>3</comment_count>
      <attachid>116295</attachid>
    <who name="David Reveman">reveman</who>
    <bug_when>2011-11-22 16:54:37 -0800</bug_when>
    <thetext>Created attachment 116295
Patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114849</attachid>
            <date>2011-11-12 18:13:34 -0800</date>
            <delta_ts>2011-11-15 12:43:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pbo.diff</filename>
            <type>text/plain</type>
            <size>27538</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IDQ1NDUwZGQyNzJjNGZmMWNlZTliMDY1M2M4ZjBkZDBiYzA5NjhiOTIKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBTYXQgTm92IDEyIDE0
OjMxOjIxIDIwMTEgLTA4MDAKCiAgICBbQ2hyb21pdW1dIFBpeGVsIGJ1ZmZlciB0ZXh0dXJlIHVw
ZGF0ZXIuCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGJkMDg1NWYuLjUxNTczYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKQEAgLTM1MDcsNiArMzUwNyw4IEBACiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0LmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01lZGlhUGxheWVyUHJpdmF0
ZUNocm9taXVtLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Bp
eGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ2FudmFzLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1BsYXRmb3JtQ29sb3IuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5
ZXJDaHJvbWl1bS5jcHAKaW5kZXggZDBiNTA2Yy4uZGY5NzgxYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRl
bnRMYXllckNocm9taXVtLmNwcApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIkJpdG1hcENh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKICNpbmNsdWRlICJCaXRtYXBTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hy
b21pdW0uaCIKICNpbmNsdWRlICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJQ
bGF0Zm9ybVN1cHBvcnQuaCIKQEAgLTE0Myw2ICsxNDQsMTEgQEAgdm9pZCBDb250ZW50TGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlVGV4dHVyZVVwZGF0ZXIoY29uc3QgQ0NMYXllclRyZWVIb3N0KiBob3N0
KQogICAgIH0KIAogICAgIGlmIChob3N0LT5zZXR0aW5ncygpLnBlclRpbGVQYWludGluZykgewor
ICAgICAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5waXhlbEJ1ZmZlclBhaW50aW5nKSB7CisgICAg
ICAgICAgICBtX3RleHR1cmVVcGRhdGVyID0gUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyOjpjcmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVs
ZWdhdGUpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAgICAgIG1fdGV4
dHVyZVVwZGF0ZXIgPSBCaXRtYXBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpj
cmVhdGUoQ29udGVudExheWVyUGFpbnRlcjo6Y3JlYXRlKG1fZGVsZWdhdGUpLCBob3N0LT5sYXll
clJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgKaW5kZXggODZlYmNiZS4uNDk1ZWU0
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
RXh0ZW5zaW9uczNEQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCkBAIC01OSw2ICs1OSwxMiBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0VHJhbnNsYXRlZFNoYWRlclNvdXJjZUFOR0xF
KFBsYXRmb3JtM0RPYmplY3QpOwogCiAgICAgZW51bSB7CisgICAgICAgIC8vIEdMX0NIUk9NSVVN
X3BpeGVsX2J1ZmZlcl9vYmplY3QgKGVudW1zIGluaGVyaXRlZCBmcm9tIEdMX0FSQl9waXhlbF9i
dWZmZXJfb2JqZWN0KQorICAgICAgICBQSVhFTF9VTlBBQ0tfQlVGRkVSID0gMHg4OEVDLAorICAg
ICAgICBQSVhFTF9VTlBBQ0tfQlVGRkVSX0JJTkRJTkcgPSAweDg4RUYKKyAgICB9OworCisgICAg
ZW51bSB7CiAgICAgICAgIC8vIEdMX0NIUk9NSVVNX21hcF9zdWIgKGVudW1zIGluaGVyaXRlZCBm
cm9tIEdMX0FSQl92ZXJ0ZXhfYnVmZmVyX29iamVjdCkKICAgICAgICAgUkVBRF9PTkxZID0gMHg4
OEI4LAogICAgICAgICBXUklURV9PTkxZID0gMHg4OEI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAK
aW5kZXggNWJiZmY2YS4uMDlkOTQ1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogCiAjaW5jbHVkZSAiTWFuYWdlZFRleHR1cmUuaCIKIAorI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0M0QuaCIKICNp
bmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCkBAIC0zOCw2ICszOSw3IEBAIE1hbmFnZWRUZXh0
dXJlOjpNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciogbWFuYWdlcikKICAgICAsIG1fdG9r
ZW4oMCkKICAgICAsIG1fZm9ybWF0KDApCiAgICAgLCBtX3RleHR1cmVJZCgwKQorICAgICwgbV9i
dWZmZXJJZCgwKQogewogfQogCkBAIC02Miw2ICs2NCw3IEBAIGJvb2wgTWFuYWdlZFRleHR1cmU6
OnJlc2VydmUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgdW5zaWduZWQgZm9ybWF0KQogICAgICAgICBt
X3RleHR1cmVNYW5hZ2VyLT5wcm90ZWN0VGV4dHVyZShtX3Rva2VuKTsKICAgICBlbHNlIHsKICAg
ICAgICAgbV90ZXh0dXJlSWQgPSAwOworICAgICAgICBtX2J1ZmZlcklkID0gMDsKICAgICAgICAg
cmVzZXJ2ZWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5yZXF1ZXN0VGV4dHVyZShtX3Rva2VuLCBzaXpl
LCBmb3JtYXQpOwogICAgICAgICBpZiAocmVzZXJ2ZWQpIHsKICAgICAgICAgICAgIG1fc2l6ZSA9
IHNpemU7CkBAIC05Niw2ICs5OSwxNCBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZl
clRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbAogICAgIGNv
bnRleHQtPmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZF
UiwgR3JhcGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQz
RDo6VEVYVFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOwogfQogCit2b2lkIE1hbmFnZWRUZXh0dXJl
OjpiaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0dXJlQWxsb2NhdG9y
KiBhbGxvY2F0b3IpCit7CisgICAgaWYgKCFtX2J1ZmZlcklkKQorICAgICAgICBtX2J1ZmZlcklk
ID0gbV90ZXh0dXJlTWFuYWdlci0+YWxsb2NhdGVCdWZmZXIoYWxsb2NhdG9yLCBtX3Rva2VuKTsK
KworICAgIGNvbnRleHQtPmJpbmRCdWZmZXIoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VO
UEFDS19CVUZGRVIsIG1fYnVmZmVySWQpOworfQorCiB9CiAKICNlbmRpZiAvLyBVU0UoQUNDRUxF
UkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaAppbmRleCA0ZDQzODA5Li42Y2Ux
NGVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9NYW5hZ2VkVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKQEAgLTU3LDEwICs1NywxMiBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRv
ciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJUZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqLCBU
ZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9pZCBiaW5kQnVmZmVyKEdyYXBoaWNzQ29udGV4dDNE
KiwgVGV4dHVyZUFsbG9jYXRvciopOwogCiAgICAgSW50U2l6ZSBzaXplKCkgY29uc3QgeyByZXR1
cm4gbV9zaXplOyB9CiAgICAgdW5zaWduZWQgZm9ybWF0KCkgY29uc3QgeyByZXR1cm4gbV9mb3Jt
YXQ7IH0KICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQoKSBjb25zdCB7IHJldHVybiBtX3RleHR1cmVJ
ZDsgfQorICAgIHVuc2lnbmVkIGJ1ZmZlcklkKCkgY29uc3QgeyByZXR1cm4gbV9idWZmZXJJZDsg
fQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IE1hbmFnZWRUZXh0dXJlKFRleHR1cmVNYW5hZ2Vy
Kik7CkBAIC03MCw2ICs3Miw3IEBAIHByaXZhdGU6CiAgICAgSW50U2l6ZSBtX3NpemU7CiAgICAg
dW5zaWduZWQgbV9mb3JtYXQ7CiAgICAgdW5zaWduZWQgbV90ZXh0dXJlSWQ7CisgICAgdW5zaWdu
ZWQgbV9idWZmZXJJZDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YTlhNjcKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwCkBAIC0wLDAgKzEsMTEzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElN
UExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQK
KyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9T
SVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNsdWRlICJQaXhlbEJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIKKworI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9t
aXVtLmgiCisjaW5jbHVkZSAiTGF5ZXJQYWludGVyQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJTa0Nh
bnZhcy5oIgorI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6VGV4dHVyZShQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4
dHVyZVVwZGF0ZXIqIHRleHR1cmVVcGRhdGVyLCBQYXNzT3duUHRyPE1hbmFnZWRUZXh0dXJlPiB0
ZXh0dXJlKQorICAgIDogTGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSh0ZXh0dXJlKQorICAg
ICwgbV9tYXBwZWRCdWZmZXIoMCkKKyAgICAsIG1fdGV4dHVyZVVwZGF0ZXIodGV4dHVyZVVwZGF0
ZXIpCit7Cit9CisKK3ZvaWQgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyOjpUZXh0dXJlOjpwcmVwYXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwg
VGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgp
ID09IHRleHR1cmUoKS0+c2l6ZSgpLndpZHRoKCkgJiYgc291cmNlUmVjdC5oZWlnaHQoKSA9PSB0
ZXh0dXJlKCktPnNpemUoKS5oZWlnaHQoKSk7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0
dXJlTWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXModGV4dHVyZSgpLT5zaXplKCksIHRleHR1cmUoKS0+
Zm9ybWF0KCkpOworICAgIEFTU0VSVCghbV9tYXBwZWRCdWZmZXIpOworICAgIEV4dGVuc2lvbnMz
RENocm9taXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0q
Pihjb250ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIG1fbWFwcGVkQnVmZmVyID0gc3RhdGlj
X2Nhc3Q8dWludDhfdCo+KGV4dGVuc2lvbnMtPm1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlVTShFeHRl
bnNpb25zM0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgMCwgYnVmZmVyU2l6ZSwgRXh0
ZW5zaW9uczNEQ2hyb21pdW06OldSSVRFX09OTFkpKTsKKyAgICBBU1NFUlQobV9tYXBwZWRCdWZm
ZXIpOworfQorCit2b2lkIFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6cGFpbnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVj
dCkKK3sKKyAgICBBU1NFUlQobV9tYXBwZWRCdWZmZXIpOworICAgIE93blB0cjxTa0NhbnZhcz4g
Y2FudmFzID0gYWRvcHRQdHIobmV3IHNraWE6OlBsYXRmb3JtQ2FudmFzKHNvdXJjZVJlY3Qud2lk
dGgoKSwgc291cmNlUmVjdC5oZWlnaHQoKSwgZmFsc2UsIG1fbWFwcGVkQnVmZmVyKSk7CisgICAg
dGV4dHVyZVVwZGF0ZXIoKS0+cGFpbnRDb250ZW50c1JlY3QoY2FudmFzLmdldCgpLCBzb3VyY2VS
ZWN0KTsKK30KKwordm9pZCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXI6OlRleHR1cmU6OnVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgdGV4dHVyZSgpLT5iaW5kVGV4dHVyZShjb250
ZXh0LCBhbGxvY2F0b3IpOworICAgIHRleHR1cmUoKS0+YmluZEJ1ZmZlcihjb250ZXh0LCBhbGxv
Y2F0b3IpOworICAgIEFTU0VSVChtX21hcHBlZEJ1ZmZlcik7CisgICAgRXh0ZW5zaW9uczNEQ2hy
b21pdW0qIGV4dGVuc2lvbnMgPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25zM0RDaHJvbWl1bSo+KGNv
bnRleHQtPmdldEV4dGVuc2lvbnMoKSk7CisgICAgZXh0ZW5zaW9ucy0+dW5tYXBCdWZmZXJTdWJE
YXRhQ0hST01JVU0obV9tYXBwZWRCdWZmZXIpOworICAgIG1fbWFwcGVkQnVmZmVyID0gTlVMTDsK
KyAgICBjb250ZXh0LT50ZXhJbWFnZTJEUmVzb3VyY2VTYWZlKEdyYXBoaWNzQ29udGV4dDNEOjpU
RVhUVVJFXzJELCAwLCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBkZXN0UmVjdC53aWR0aCgpLCBkZXN0
UmVjdC5oZWlnaHQoKSwgMCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgR3JhcGhpY3NDb250ZXh0M0Q6
OlVOU0lHTkVEX0JZVEUpOworICAgIGNvbnRleHQtPmJpbmRCdWZmZXIoRXh0ZW5zaW9uczNEQ2hy
b21pdW06OlBJWEVMX1VOUEFDS19CVUZGRVIsIDApOworfQorCitQYXNzUmVmUHRyPFBpeGVsQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcj4gUGl4ZWxCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4gcGFpbnRlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFBpeGVsQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihwYWludGVyKSk7Cit9CisKK1Bp
eGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6UGl4ZWxCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIpCisgICAgOiBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKHBhaW50ZXIpCit7Cit9CisKK1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6flBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cigpCit7Cit9CisKK1Bhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gUGl4
ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpjcmVhdGVUZXh0dXJl
KFRleHR1cmVNYW5hZ2VyKiBtYW5hZ2VyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgVGV4
dHVyZSh0aGlzLCBNYW5hZ2VkVGV4dHVyZTo6Y3JlYXRlKG1hbmFnZXIpKSk7Cit9CisKK0xheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNh
bnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnNhbXBsZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0
dXJlRm9ybWF0KQoreworICAgIC8vIFRoZSBjb21wb25lbnQgb3JkZXIgbWF5IGJlIGJncmEgaWYg
d2UgdXBsb2FkZWQgYmdyYSBwaXhlbHMgdG8gcmdiYSB0ZXh0dXJlcy4KKyAgICByZXR1cm4gUGxh
dGZvcm1Db2xvcjo6c2FtZUNvbXBvbmVudE9yZGVyKHRleHR1cmVGb3JtYXQpID8KKyAgICAgICAg
ICAgIExheWVyVGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdFJHQkEgOiBMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRCR1JBOworfQorCit2b2lkIFBpeGVsQnVm
ZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6cGFpbnRDb250ZW50c1JlY3Qo
U2tDYW52YXMqIGNhbnZhcywgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCkKK3sKKyAgICAvLyBU
cmFuc2xhdGUgdGhlIG9yaWdpbiBvZiBjb250ZW50UmVjdCB0byB0aGF0IG9mIHNvdXJjZVJlY3Qu
CisgICAgY2FudmFzLT50cmFuc2xhdGUoY29udGVudFJlY3QoKS54KCkgLSBzb3VyY2VSZWN0Lngo
KSwKKyAgICAgICAgICAgICAgICAgICAgICBjb250ZW50UmVjdCgpLnkoKSAtIHNvdXJjZVJlY3Qu
eSgpKTsKKyAgICBkcmF3UGljdHVyZShjYW52YXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NPTVBP
U0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi4yMjBkZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKworI2lmbmRlZiBQaXhlbEJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorI2RlZmluZSBQaXhlbEJ1
ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXJfaAorCisjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQorI2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiUGxhdGZvcm1D
b2xvci5oIgorI2luY2x1ZGUgIlNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCIK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZh
c0xheWVyVGV4dHVyZVVwZGF0ZXIgOiBwdWJsaWMgU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlciB7CitwdWJsaWM6CisgICAgY2xhc3MgVGV4dHVyZSA6IHB1YmxpYyBMYXllclRleHR1
cmVVcGRhdGVyOjpUZXh0dXJlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFRleHR1cmUoUGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiwgUGFzc093blB0cjxNYW5h
Z2VkVGV4dHVyZT4pOworCisgICAgICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlUmVjdChHcmFwaGlj
c0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0
LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBwYWludENv
bnRlbnRzUmVjdChjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKKyAgICAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAg
cHJpdmF0ZToKKyAgICAgICAgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsgcmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KKwor
ICAgICAgICB1aW50OF90KiBtX21hcHBlZEJ1ZmZlcjsKKyAgICAgICAgUGl4ZWxCdWZmZXJTa1Bp
Y3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgIH07
CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7
CisgICAgdmlydHVhbCB+UGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKCk7CisKKyAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4
dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOworICAgIHZpcnR1YWwgT3JpZW50
YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVybiBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21V
cE9yaWVudGF0aW9uOyB9CisgICAgdmlydHVhbCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRl
eGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVGb3JtYXQpOworICAgIHZvaWQgcGFpbnRDb250ZW50
c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KTsKKworcHJpdmF0ZToK
KyAgICBleHBsaWNpdCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1bT4pOworfTsKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURf
Q09NUE9TSVRJTkcpCisjZW5kaWYgLy8gUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcAppbmRleCBjNjAwZDllLi43OGVh
ZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCkBAIC0xNjMsNiArMTYzLDEyIEBAIHZvaWQg
VGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKiBh
bGxvY2F0b3IpCiAjZW5kaWYKICAgICAgICAgICAgICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1
cmUobV9ldmljdGVkVGV4dHVyZXNbaV0udGV4dHVyZUlkLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5z
aXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5mb3JtYXQpOwogICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVzW2ldLmJ1ZmZlcklkKSB7CisjaWZuZGVmIE5ERUJV
RworICAgICAgICAgICAgICAgIEFTU0VSVChtX2V2aWN0ZWRUZXh0dXJlc1tpXS5hbGxvY2F0b3Ig
PT0gYWxsb2NhdG9yKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGFsbG9jYXRvci0+ZGVsZXRl
QnVmZmVyKG1fZXZpY3RlZFRleHR1cmVzW2ldLmJ1ZmZlcklkLCBtX2V2aWN0ZWRUZXh0dXJlc1tp
XS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5mb3JtYXQpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogICAgIG1fZXZpY3RlZFRleHR1cmVzLmNsZWFyKCk7CkBAIC0xODUsNiAr
MTkxLDcgQEAgdm9pZCBUZXh0dXJlTWFuYWdlcjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4g
dG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiAgICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tl
bik7CiAgICAgRXZpY3Rpb25FbnRyeSBlbnRyeTsKICAgICBlbnRyeS50ZXh0dXJlSWQgPSBpbmZv
LnRleHR1cmVJZDsKKyAgICBlbnRyeS5idWZmZXJJZCA9IGluZm8uYnVmZmVySWQ7CiAgICAgZW50
cnkuc2l6ZSA9IGluZm8uc2l6ZTsKICAgICBlbnRyeS5mb3JtYXQgPSBpbmZvLmZvcm1hdDsKICNp
Zm5kZWYgTkRFQlVHCkBAIC0yMDgsNiArMjE1LDIxIEBAIHVuc2lnbmVkIFRleHR1cmVNYW5hZ2Vy
OjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlVG9r
CiAgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0KIAordW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OmFs
bG9jYXRlQnVmZmVyKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRv
a2VuKQoreworICAgIFRleHR1cmVNYXA6Oml0ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRv
a2VuKTsKKyAgICBBU1NFUlQoaXQgIT0gbV90ZXh0dXJlcy5lbmQoKSk7CisgICAgVGV4dHVyZUlu
Zm8qIGluZm8gPSAmaXQuZ2V0KCktPnNlY29uZDsKKyAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0
ZWQpOworCisgICAgdW5zaWduZWQgYnVmZmVySWQgPSBhbGxvY2F0b3ItPmNyZWF0ZUJ1ZmZlcihp
bmZvLT5zaXplLCBpbmZvLT5mb3JtYXQpOworICAgIGluZm8tPmJ1ZmZlcklkID0gYnVmZmVySWQ7
CisjaWZuZGVmIE5ERUJVRworICAgIGluZm8tPmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKKyNlbmRp
ZgorICAgIHJldHVybiBidWZmZXJJZDsKK30KKwogYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVz
dFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGZvcm1h
dCkKIHsKICAgICBpZiAoc2l6ZS53aWR0aCgpID4gbV9tYXhUZXh0dXJlU2l6ZSB8fCBzaXplLmhl
aWdodCgpID4gbV9tYXhUZXh0dXJlU2l6ZSkKQEAgLTIzMSw2ICsyNTMsNyBAQCBib29sIFRleHR1
cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6
ZSwgdW5zaWduZWQgZgogICAgIGluZm8uc2l6ZSA9IHNpemU7CiAgICAgaW5mby5mb3JtYXQgPSBm
b3JtYXQ7CiAgICAgaW5mby50ZXh0dXJlSWQgPSAwOworICAgIGluZm8uYnVmZmVySWQgPSAwOwog
ICAgIGluZm8uaXNQcm90ZWN0ZWQgPSB0cnVlOwogI2lmbmRlZiBOREVCVUcKICAgICBpbmZvLmFs
bG9jYXRvciA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaAppbmRleCBmMzI3YjRjLi43NjgwN2NlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0
dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1RleHR1cmVNYW5hZ2VyLmgKQEAgLTQyLDYgKzQyLDkgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwg
Y29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSA9IDA7CiAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNy
ZWF0ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSA9IDA7CisgICAgdmly
dHVhbCB2b2lkIGRlbGV0ZUJ1ZmZlcih1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0pID0gMDsKKwogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0
b3IoKSB7IH0KIH07CkBAIC03Nyw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJvdGVj
dGVkKFRleHR1cmVUb2tlbik7CiAKICAgICB1bnNpZ25lZCBhbGxvY2F0ZVRleHR1cmUoVGV4dHVy
ZUFsbG9jYXRvciosIFRleHR1cmVUb2tlbik7CisgICAgdW5zaWduZWQgYWxsb2NhdGVCdWZmZXIo
VGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVUb2tlbik7CiAgICAgdm9pZCBkZWxldGVFdmljdGVk
VGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciopOwogCiAgICAgdm9pZCBldmljdEFuZERlbGV0ZUFs
bFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqKTsKQEAgLTkxLDYgKzk1LDcgQEAgcHJpdmF0ZToK
ICAgICAgICAgSW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CiAgICAgICAg
IHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICAgICAgdW5zaWduZWQgYnVmZmVySWQ7CiAgICAgICAg
IGJvb2wgaXNQcm90ZWN0ZWQ7CiAjaWZuZGVmIE5ERUJVRwogICAgICAgICBUZXh0dXJlQWxsb2Nh
dG9yKiBhbGxvY2F0b3I7CkBAIC0xMTEsNiArMTE2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVj
dCBFdmljdGlvbkVudHJ5IHsKICAgICAgICAgdW5zaWduZWQgdGV4dHVyZUlkOworICAgICAgICB1
bnNpZ25lZCBidWZmZXJJZDsKICAgICAgICAgSW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51
bSBmb3JtYXQ7CiAjaWZuZGVmIE5ERUJVRwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAK
aW5kZXggZGMyMjk5MS4uZTQ4ZDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3Bw
CkBAIC0yNzYsNyArMjc2LDggQEAgdm9pZCBUaWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVS
ZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRSZWN0KQogICAgICAgICAgICAgaWYgKCF0aWxlKQog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgSW50UmVjdCBib3VuZCA9IG1f
dGlsZXItPnRpbGVMYXllclJlY3QodGlsZSk7Ci0gICAgICAgICAgICBib3VuZC5pbnRlcnNlY3Qo
bGF5ZXJSZWN0KTsKKyAgICAgICAgICAgIC8vIFRPRE8ocmV2ZW1hbik6IFBpeGVsIGJ1ZmZlciB0
ZXh0dXJlIHVwZGF0ZXIgcmVxdWlyZXMgZnVsbCB0aWxlIHVwZGF0ZXMuCisgICAgICAgICAgICAv
LyBib3VuZC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlM
YXllclJlY3QudW5pdGUoYm91bmQpOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxs
b2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1Ry
YWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKaW5kZXggMmIwNWRlZi4uOGIxMGM1ZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdU
ZXh0dXJlQWxsb2NhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBA
CiAKICNpbmNsdWRlICJUcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuaCIKIAorI2luY2x1ZGUgIkV4
dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxh
eWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBGb3IgdGhlIEdMQygpIG1hY3JvCiAKQEAgLTY1LDUg
KzY2LDIwIEBAIHZvaWQgVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVu
c2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYKICAgICBHTEMobV9jb250ZXh0LmdldCgp
LCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUodGV4dHVyZUlkKSk7CiB9CiAKK3Vuc2lnbmVkIFRy
YWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3JlYXRlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUs
IEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICBzaXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5h
Z2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBmb3JtYXQpOworICAgIHVuc2lnbmVkIGJ1ZmZlcklk
ID0gMDsKKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBidWZmZXJJZCA9IG1fY29udGV4dC0+Y3Jl
YXRlQnVmZmVyKCkpOworICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEJ1
ZmZlcihFeHRlbnNpb25zM0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVySWQp
KTsKKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoRXh0ZW5z
aW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFDS19CVUZGRVIsIGJ1ZmZlclNpemUsIEdyYXBoaWNz
Q29udGV4dDNEOjpTVFJFQU1fRFJBVykpOworICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29u
dGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZF
UiwgMCkpOworICAgIHJldHVybiBidWZmZXJJZDsKIH0KIAordm9pZCBUcmFja2luZ1RleHR1cmVB
bGxvY2F0b3I6OmRlbGV0ZUJ1ZmZlcih1bnNpZ25lZCBidWZmZXJJZCwgY29uc3QgSW50U2l6ZSYg
Lyogc2l6ZSAqLywgR0MzRGVudW0gLyogZm9ybWF0ICovKQoreworICAgIEdMQyhtX2NvbnRleHQu
Z2V0KCksIG1fY29udGV4dC0+ZGVsZXRlQnVmZmVyKGJ1ZmZlcklkKSk7Cit9CisKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5n
VGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKaW5kZXggZTUwNGVlYS4uY2YwNDg5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJh
Y2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKQEAgLTQzLDYgKzQzLDkg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0gZm9ybWF0KTsKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1
bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIAorICAg
IHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlQnVmZmVyKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBm
b3JtYXQpOworICAgIHZpcnR1YWwgdm9pZCBkZWxldGVCdWZmZXIodW5zaWduZWQgYnVmZmVyLCBj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKKwogICAgIHNpemVfdCBjdXJyZW50TWVt
b3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVybiBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsgfQog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA4MGJjM2Ni
Li44NTA3NmM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTg0LDYgKzg0
LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogCiAgICAgLy8gVXBkYXRl
IG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sgZnJvbSB0
aGUgcmVuZGVyZXIuCiAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBtX3Byb3h5
LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50aW5nOwor
ICAgIG1fc2V0dGluZ3MucGl4ZWxCdWZmZXJQYWludGluZyA9IG1fc2V0dGluZ3MucGVyVGlsZVBh
aW50aW5nID0gdHJ1ZTsKKyAgICBtX3NldHRpbmdzLnBpeGVsQnVmZmVyUGFpbnRpbmcgPSBtX3By
b3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIgPyBtX3NldHRpbmdz
LnBpeGVsQnVmZmVyUGFpbnRpbmcgOiBmYWxzZTsKIAogICAgIG1fY29udGVudHNUZXh0dXJlTWFu
YWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hMaW1pdEJ5
dGVzKCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6
ZSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGIx
Nzk3Y2YuLmUzNjUwMTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC03Myw3ICs3
Myw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgZW5hYmxlQ29tcG9zaXRv
clRocmVhZChmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2UpCiAgICAg
ICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKLSAgICAgICAgICAgICwgcGVy
VGlsZVBhaW50aW5nKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZh
bHNlKQorICAgICAgICAgICAgLCBwaXhlbEJ1ZmZlclBhaW50aW5nKGZhbHNlKSB7IH0KIAogICAg
IGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2NyZWVuOwpA
QCAtODEsNiArODIsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgYm9vbCBzaG93RlBTQ291
bnRlcjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIHBlclRpbGVQ
YWludGluZzsKKyAgICBib29sIHBpeGVsQnVmZmVyUGFpbnRpbmc7CiB9OwogCiAvLyBQcm92aWRl
cyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBiYWNrIHRv
IHRoZSBDQ0xheWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCA4YzljOGQ3Li40ZDlhMGUyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC00NiwxMiAr
NDYsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmcoZmFsc2Up
CiAgICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKICAgICAgICAgICAgICwg
ZW5hYmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkKLSAgICAgICAgICAgICwgcGVyVGlsZVBhaW50
aW5nKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKQorICAg
ICAgICAgICAgLCBwaXhlbEJ1ZmZlclBhaW50aW5nKGZhbHNlKSB7IH0KIAogICAgICAgICBib29s
IGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3JlZW47CiAg
ICAgICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKICAgICAgICAgYm9vbCBwZXJUaWxl
UGFpbnRpbmc7CisgICAgICAgIGJvb2wgcGl4ZWxCdWZmZXJQYWludGluZzsKICNpZiBXRUJLSVRf
SU1QTEVNRU5UQVRJT04KICAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5ncygpIGNv
bnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aAppbmRleCAyZWQ1YTg4Li40NjhhMWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBw
ZXJUaWxlUGFpbnRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBpeGVsQnVm
ZmVyUGFpbnRpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwaXhlbEJ1ZmZlclBhaW50
aW5nKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkgeyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVWaWV3LmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCmluZGV4
IDBmOGVjZDEuLmMxMWQ2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YkxheWVyVHJlZVZpZXcuY3BwCkBAIC00MCw2ICs0MCw3IEBAIFdlYkxheWVyVHJlZVZpZXc6OlNl
dHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBzZXR0aW5ncy5jb21wb3Np
dGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47CiAgICAgc2V0dGluZ3MuZW5hYmxlQ29t
cG9zaXRvclRocmVhZCA9IGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CiAgICAgc2V0dGluZ3MucGVy
VGlsZVBhaW50aW5nID0gcGVyVGlsZVBhaW50aW5nOworICAgIHNldHRpbmdzLnBpeGVsQnVmZmVy
UGFpbnRpbmcgPSBwaXhlbEJ1ZmZlclBhaW50aW5nOwogCiAgICAgLy8gRklYTUU6IHNob3dGUFND
b3VudGVyIC8gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBwb3J0ZWQgY3VycmVudGx5
LgogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCA1ZmQxZjc3Li5iZTNhNzNj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAK
QEAgLTUxLDYgKzUxLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwoU2V0dGlu
Z3MqIHNldHRpbmdzKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAsIG1fc2hv
d1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICwgbV9wZXJUaWxlUGFpbnRpbmcoZmFsc2Up
CisgICAgLCBtX3BpeGVsQnVmZmVyUGFpbnRpbmcoZmFsc2UpCiAgICAgLCBtX3VzZVRocmVhZGVk
Q29tcG9zaXRvcihmYWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwpAQCAtNDc2LDQgKzQ3
Nyw5IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCBlbmFi
bGVkKQogICAgIG1fcGVyVGlsZVBhaW50aW5nID0gZW5hYmxlZDsKIH0KIAordm9pZCBXZWJTZXR0
aW5nc0ltcGw6OnNldFBpeGVsQnVmZmVyUGFpbnRpbmcoYm9vbCBlbmFibGVkKQoreworICAgIG1f
cGl4ZWxCdWZmZXJQYWludGluZyA9IGVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktp
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCA5
MWI0YjYxLi5mNDBmYWFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaApAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
UGVyVGlsZVBhaW50aW5nKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRpbmco
KSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQorICAgIHZpcnR1YWwgdm9pZCBz
ZXRQaXhlbEJ1ZmZlclBhaW50aW5nKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBwaXhlbEJ1ZmZl
clBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlclBhaW50aW5nOyB9CiAKIHBy
aXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkBAIC0xMzQsNiArMTM2
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9vbCBtX3No
b3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nOworICAgIGJv
b2wgbV9waXhlbEJ1ZmZlclBhaW50aW5nOwogICAgIGJvb2wgbV91c2VUaHJlYWRlZENvbXBvc2l0
b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5k
ZXggZDQ1NzczMy4uM2YzOTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZp
ZXdJbXBsLmNwcApAQCAtMjY3Nyw2ICsyNjc3LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6c2V0SXNB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBjY1NldHRp
bmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsKICAgICAg
ICAgY2NTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5zaG93UGxh
dGZvcm1MYXllclRyZWUoKTsKICAgICAgICAgY2NTZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSBz
ZXR0aW5ncygpLT5wZXJUaWxlUGFpbnRpbmcoKTsKKyAgICAgICAgY2NTZXR0aW5ncy5waXhlbEJ1
ZmZlclBhaW50aW5nID0gc2V0dGluZ3MoKS0+cGl4ZWxCdWZmZXJQYWludGluZygpOwogCiAgICAg
ICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0
OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsKICAgICAg
ICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywgY2NTZXR0
aW5ncyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>115223</attachid>
            <date>2011-11-15 12:43:41 -0800</date>
            <delta_ts>2011-11-20 17:07:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pbo.diff</filename>
            <type>text/plain</type>
            <size>27544</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">Y29tbWl0IDczMjBmYjYxNzU0ZDYyZjE3NTFkODJhMjZiM2Y2NDNkNjYxNWNiMDIKQXV0aG9yOiBE
YXZpZCBSZXZlbWFuIDxyZXZlbWFuQGNocm9taXVtLm9yZz4KRGF0ZTogICBUdWUgTm92IDE1IDEy
OjIzOjAyIDIwMTEgLTA4MDAKCiAgICBHTF9DSFJPTUlVTV9waXhlbF9idWZmZXJfb2JqZWN0LgoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCBlZTJhOTYxLi42YTdiMjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNTEyLDYgKzM1MTIsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NZWRpYVBsYXllclByaXZhdGVDaHJvbWl1
bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGxhdGZvcm1DYW52YXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGM2NGVmMWEuLjkzNTc0MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dXBwb3J0LmgiCkBAIC0xNTMsNiArMTU0LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICB9
CiAKICAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpIHsKKyAgICAgICAg
aWYgKGhvc3QtPnNldHRpbmdzKCkucGl4ZWxCdWZmZXJQYWludGluZykgeworICAgICAgICAgICAg
bV90ZXh0dXJlVXBkYXRlciA9IFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENv
bnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVu
c2lvbnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDk2YzdmMTAuLmM3YTU0ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtNjAsNiArNjAsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bTNET2JqZWN0KTsKIAogICAgIGVudW0geworICAgICAgICAvLyBHTF9DSFJPTUlVTV9waXhlbF9i
dWZmZXJfb2JqZWN0IChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9BUkJfcGl4ZWxfYnVmZmVyX29i
amVjdCkKKyAgICAgICAgUElYRUxfVU5QQUNLX0JVRkZFUiA9IDB4ODhFQywKKyAgICAgICAgUElY
RUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HID0gMHg4OEVGCisgICAgfTsKKworICAgIGVudW0gewog
ICAgICAgICAvLyBHTF9DSFJPTUlVTV9tYXBfc3ViIChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9B
UkJfdmVydGV4X2J1ZmZlcl9vYmplY3QpCiAgICAgICAgIFJFQURfT05MWSA9IDB4ODhCOCwKICAg
ICAgICAgV1JJVEVfT05MWSA9IDB4ODhCOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmluZGV4IDVi
YmZmNmEuLjA5ZDk0NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hbmFnZXIuaCIKIApAQCAtMzgsNiArMzksNyBAQCBNYW5hZ2VkVGV4dHVyZTo6TWFu
YWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCiAgICAgLCBtX3Rva2VuKDApCiAg
ICAgLCBtX2Zvcm1hdCgwKQogICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fYnVmZmVySWQo
MCkKIHsKIH0KIApAQCAtNjIsNiArNjQsNyBAQCBib29sIE1hbmFnZWRUZXh0dXJlOjpyZXNlcnZl
KGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZvcm1hdCkKICAgICAgICAgbV90ZXh0dXJl
TWFuYWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tlbik7CiAgICAgZWxzZSB7CiAgICAgICAgIG1f
dGV4dHVyZUlkID0gMDsKKyAgICAgICAgbV9idWZmZXJJZCA9IDA7CiAgICAgICAgIHJlc2VydmVk
ID0gbV90ZXh0dXJlTWFuYWdlci0+cmVxdWVzdFRleHR1cmUobV90b2tlbiwgc2l6ZSwgZm9ybWF0
KTsKICAgICAgICAgaWYgKHJlc2VydmVkKSB7CiAgICAgICAgICAgICBtX3NpemUgPSBzaXplOwpA
QCAtOTYsNiArOTksMTQgQEAgdm9pZCBNYW5hZ2VkVGV4dHVyZTo6ZnJhbWVidWZmZXJUZXh0dXJl
MkQoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRleHR1cmVBbGwKICAgICBjb250ZXh0LT5m
cmFtZWJ1ZmZlclRleHR1cmUyRChHcmFwaGljc0NvbnRleHQzRDo6RlJBTUVCVUZGRVIsIEdyYXBo
aWNzQ29udGV4dDNEOjpDT0xPUl9BVFRBQ0hNRU5UMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRV
UkVfMkQsIG1fdGV4dHVyZUlkLCAwKTsKIH0KIAordm9pZCBNYW5hZ2VkVGV4dHVyZTo6YmluZEJ1
ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxsb2Nh
dG9yKQoreworICAgIGlmICghbV9idWZmZXJJZCkKKyAgICAgICAgbV9idWZmZXJJZCA9IG1fdGV4
dHVyZU1hbmFnZXItPmFsbG9jYXRlQnVmZmVyKGFsbG9jYXRvciwgbV90b2tlbik7CisKKyAgICBj
b250ZXh0LT5iaW5kQnVmZmVyKEV4dGVuc2lvbnMzRENocm9taXVtOjpQSVhFTF9VTlBBQ0tfQlVG
RkVSLCBtX2J1ZmZlcklkKTsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKEFDQ0VMRVJBVEVEX0NP
TVBPU0lUSU5HKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKaW5kZXggNGQ0MzgwOS4uNmNlMTRlYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdl
ZFRleHR1cmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9NYW5hZ2VkVGV4dHVyZS5oCkBAIC01NywxMCArNTcsMTIgQEAgcHVibGljOgogCiAgICAgdm9p
ZCBiaW5kVGV4dHVyZShHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAg
ICB2b2lkIGZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFs
bG9jYXRvciopOworICAgIHZvaWQgYmluZEJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1
cmVBbGxvY2F0b3IqKTsKIAogICAgIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2l6
ZTsgfQogICAgIHVuc2lnbmVkIGZvcm1hdCgpIGNvbnN0IHsgcmV0dXJuIG1fZm9ybWF0OyB9CiAg
ICAgdW5zaWduZWQgdGV4dHVyZUlkKCkgY29uc3QgeyByZXR1cm4gbV90ZXh0dXJlSWQ7IH0KKyAg
ICB1bnNpZ25lZCBidWZmZXJJZCgpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVySWQ7IH0KIAogcHJp
dmF0ZToKICAgICBleHBsaWNpdCBNYW5hZ2VkVGV4dHVyZShUZXh0dXJlTWFuYWdlciopOwpAQCAt
NzAsNiArNzIsNyBAQCBwcml2YXRlOgogICAgIEludFNpemUgbV9zaXplOwogICAgIHVuc2lnbmVk
IG1fZm9ybWF0OwogICAgIHVuc2lnbmVkIG1fdGV4dHVyZUlkOworICAgIHVuc2lnbmVkIG1fYnVm
ZmVySWQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWI5MDk5Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGl4ZWxCdWZmZXJTa1BpY3R1cmVD
YW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcApAQCAtMCwwICsxLDExMyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQor
I2lmIFVTRShTS0lBKQorCisjaW5jbHVkZSAiUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgiCisKKyNpbmNsdWRlICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgor
I2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgiCisjaW5jbHVkZSAiU2tDYW52YXMuaCIK
KyNpbmNsdWRlICJza2lhL2V4dC9wbGF0Zm9ybV9jYW52YXMuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRl
eHR1cmU6OlRleHR1cmUoUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiB0ZXh0dXJlVXBkYXRlciwgUGFzc093blB0cjxNYW5hZ2VkVGV4dHVyZT4gdGV4dHVyZSkK
KyAgICA6IENhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUodGV4dHVyZSkKKyAgICAs
IG1fbWFwcGVkQnVmZmVyKDApCisgICAgLCBtX3RleHR1cmVVcGRhdGVyKHRleHR1cmVVcGRhdGVy
KQoreworfQorCit2b2lkIFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlcjo6VGV4dHVyZTo6cHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQsIFRl
eHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpCit7CisgICAgQVNTRVJUKHNvdXJjZVJlY3Qud2lkdGgoKSA9
PSB0ZXh0dXJlKCktPnNpemUoKS53aWR0aCgpICYmIHNvdXJjZVJlY3QuaGVpZ2h0KCkgPT0gdGV4
dHVyZSgpLT5zaXplKCkuaGVpZ2h0KCkpOworICAgIHNpemVfdCBidWZmZXJTaXplID0gVGV4dHVy
ZU1hbmFnZXI6Om1lbW9yeVVzZUJ5dGVzKHRleHR1cmUoKS0+c2l6ZSgpLCB0ZXh0dXJlKCktPmZv
cm1hdCgpKTsKKyAgICBBU1NFUlQoIW1fbWFwcGVkQnVmZmVyKTsKKyAgICBFeHRlbnNpb25zM0RD
aHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4o
Y29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBtX21hcHBlZEJ1ZmZlciA9IHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihleHRlbnNpb25zLT5tYXBCdWZmZXJTdWJEYXRhQ0hST01JVU0oRXh0ZW5z
aW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFDS19CVUZGRVIsIDAsIGJ1ZmZlclNpemUsIEV4dGVu
c2lvbnMzRENocm9taXVtOjpXUklURV9PTkxZKSk7CisgICAgQVNTRVJUKG1fbWFwcGVkQnVmZmVy
KTsKK30KKwordm9pZCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qp
Cit7CisgICAgQVNTRVJUKG1fbWFwcGVkQnVmZmVyKTsKKyAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VSZWN0LndpZHRo
KCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBtX21hcHBlZEJ1ZmZlcikpOworICAgIHRl
eHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KGNhbnZhcy5nZXQoKSwgc291cmNlUmVj
dCk7Cit9CisKK3ZvaWQgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBUZXh0
dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0
IEludFJlY3QmIGRlc3RSZWN0KQoreworICAgIHRleHR1cmUoKS0+YmluZFRleHR1cmUoY29udGV4
dCwgYWxsb2NhdG9yKTsKKyAgICB0ZXh0dXJlKCktPmJpbmRCdWZmZXIoY29udGV4dCwgYWxsb2Nh
dG9yKTsKKyAgICBBU1NFUlQobV9tYXBwZWRCdWZmZXIpOworICAgIEV4dGVuc2lvbnMzRENocm9t
aXVtKiBleHRlbnNpb25zID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250
ZXh0LT5nZXRFeHRlbnNpb25zKCkpOworICAgIGV4dGVuc2lvbnMtPnVubWFwQnVmZmVyU3ViRGF0
YUNIUk9NSVVNKG1fbWFwcGVkQnVmZmVyKTsKKyAgICBtX21hcHBlZEJ1ZmZlciA9IE5VTEw7Cisg
ICAgY29udGV4dC0+dGV4SW1hZ2UyRFJlc291cmNlU2FmZShHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgMCwgdGV4dHVyZSgpLT5mb3JtYXQoKSwgZGVzdFJlY3Qud2lkdGgoKSwgZGVzdFJl
Y3QuaGVpZ2h0KCksIDAsIHRleHR1cmUoKS0+Zm9ybWF0KCksIEdyYXBoaWNzQ29udGV4dDNEOjpV
TlNJR05FRF9CWVRFKTsKKyAgICBjb250ZXh0LT5iaW5kQnVmZmVyKEV4dGVuc2lvbnMzRENocm9t
aXVtOjpQSVhFTF9VTlBBQ0tfQlVGRkVSLCAwKTsKK30KKworUGFzc1JlZlB0cjxQaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IFBpeGVsQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKFBhc3NPd25QdHI8TGF5ZXJQYWludGVy
Q2hyb21pdW0+IHBhaW50ZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBQaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIocGFpbnRlcikpOworfQorCitQaXhl
bEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlBpeGVsQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcihQYXNzT3duUHRyPExheWVyUGFpbnRlckNo
cm9taXVtPiBwYWludGVyKQorICAgIDogU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRl
cihwYWludGVyKQoreworfQorCitQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXI6On5QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIo
KQoreworfQorCitQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmU+IFBpeGVs
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlVGV4dHVyZShU
ZXh0dXJlTWFuYWdlciogbWFuYWdlcikKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHR1
cmUodGhpcywgTWFuYWdlZFRleHR1cmU6OmNyZWF0ZShtYW5hZ2VyKSkpOworfQorCitMYXllclRl
eHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXQgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpzYW1wbGVkVGV4ZWxGb3JtYXQoR0MzRGVudW0gdGV4dHVy
ZUZvcm1hdCkKK3sKKyAgICAvLyBUaGUgY29tcG9uZW50IG9yZGVyIG1heSBiZSBiZ3JhIGlmIHdl
IHVwbG9hZGVkIGJncmEgcGl4ZWxzIHRvIHJnYmEgdGV4dHVyZXMuCisgICAgcmV0dXJuIFBsYXRm
b3JtQ29sb3I6OnNhbWVDb21wb25lbnRPcmRlcih0ZXh0dXJlRm9ybWF0KSA/CisgICAgICAgICAg
ICBMYXllclRleHR1cmVVcGRhdGVyOjpTYW1wbGVkVGV4ZWxGb3JtYXRSR0JBIDogTGF5ZXJUZXh0
dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0QkdSQTsKK30KKwordm9pZCBQaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OnBhaW50Q29udGVudHNSZWN0KFNr
Q2FudmFzKiBjYW52YXMsIGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QpCit7CisgICAgLy8gVHJh
bnNsYXRlIHRoZSBvcmlnaW4gb2YgY29udGVudFJlY3QgdG8gdGhhdCBvZiBzb3VyY2VSZWN0Lgor
ICAgIGNhbnZhcy0+dHJhbnNsYXRlKGNvbnRlbnRSZWN0KCkueCgpIC0gc291cmNlUmVjdC54KCks
CisgICAgICAgICAgICAgICAgICAgICAgY29udGVudFJlY3QoKS55KCkgLSBzb3VyY2VSZWN0Lnko
KSk7CisgICAgZHJhd1BpY3R1cmUoY2FudmFzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorI2VuZGlmIC8vIFVTRShTS0lBKQorI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vUGl4ZWxCdWZmZXJTa1BpY3R1
cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uYzE2NWFkNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlci5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpZm5kZWYgUGl4ZWxCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKKyNkZWZpbmUgUGl4ZWxCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKKworI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJQSkKKworI2luY2x1ZGUgIlBsYXRmb3JtQ29s
b3IuaCIKKyNpbmNsdWRlICJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyIDogcHVibGljIFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIgeworcHVibGljOgorICAgIGNsYXNzIFRleHR1cmUgOiBwdWJsaWMgQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlcjo6VGV4dHVyZSB7CisgICAgcHVibGljOgorICAgICAgICBUZXh0dXJlKFBp
eGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciosIFBhc3NPd25QdHI8
TWFuYWdlZFRleHR1cmU+KTsKKworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3Jh
cGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNl
UmVjdCwgY29uc3QgSW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFp
bnRDb250ZW50c1JlY3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvcios
IGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEludFJlY3QmIGRlc3RSZWN0KTsKKwor
ICAgIHByaXZhdGU6CisgICAgICAgIFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0
dXJlVXBkYXRlciogdGV4dHVyZVVwZGF0ZXIoKSB7IHJldHVybiBtX3RleHR1cmVVcGRhdGVyOyB9
CisKKyAgICAgICAgdWludDhfdCogbV9tYXBwZWRCdWZmZXI7CisgICAgICAgIFBpeGVsQnVmZmVy
U2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogbV90ZXh0dXJlVXBkYXRlcjsKKyAg
ICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNM
YXllclRleHR1cmVVcGRhdGVyPiBjcmVhdGUoUGFzc093blB0cjxMYXllclBhaW50ZXJDaHJvbWl1
bT4pOworICAgIHZpcnR1YWwgflBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcigpOworCisgICAgdmlydHVhbCBQYXNzUmVmUHRyPExheWVyVGV4dHVyZVVwZGF0ZXI6
OlRleHR1cmU+IGNyZWF0ZVRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKKyAgICB2aXJ0dWFsIE9y
aWVudGF0aW9uIG9yaWVudGF0aW9uKCkgeyByZXR1cm4gTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Qm90
dG9tVXBPcmllbnRhdGlvbjsgfQorICAgIHZpcnR1YWwgU2FtcGxlZFRleGVsRm9ybWF0IHNhbXBs
ZWRUZXhlbEZvcm1hdChHQzNEZW51bSB0ZXh0dXJlRm9ybWF0KTsKKyAgICB2b2lkIHBhaW50Q29u
dGVudHNSZWN0KFNrQ2FudmFzKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisKK3ByaXZh
dGU6CisgICAgZXhwbGljaXQgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVV
cGRhdGVyKFBhc3NPd25QdHI8TGF5ZXJQYWludGVyQ2hyb21pdW0+KTsKK307Cit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisjZW5kaWYgLy8gVVNFKFNLSUEpCisjZW5kaWYgLy8gVVNFKEFDQ0VMRVJB
VEVEX0NPTVBPU0lUSU5HKQorI2VuZGlmIC8vIFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKaW5kZXggYzYwMGQ5ZS4u
NzhlYWY2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGV4dHVyZU1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtMTYzLDYgKzE2MywxMiBAQCB2
b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRv
ciogYWxsb2NhdG9yKQogI2VuZGlmCiAgICAgICAgICAgICAgICAgYWxsb2NhdG9yLT5kZWxldGVU
ZXh0dXJlKG1fZXZpY3RlZFRleHR1cmVzW2ldLnRleHR1cmVJZCwgbV9ldmljdGVkVGV4dHVyZXNb
aV0uc2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsKICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGlmIChtX2V2aWN0ZWRUZXh0dXJlc1tpXS5idWZmZXJJZCkgeworI2lmbmRlZiBO
REVCVUcKKyAgICAgICAgICAgICAgICBBU1NFUlQobV9ldmljdGVkVGV4dHVyZXNbaV0uYWxsb2Nh
dG9yID09IGFsbG9jYXRvcik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBhbGxvY2F0b3ItPmRl
bGV0ZUJ1ZmZlcihtX2V2aWN0ZWRUZXh0dXJlc1tpXS5idWZmZXJJZCwgbV9ldmljdGVkVGV4dHVy
ZXNbaV0uc2l6ZSwgbV9ldmljdGVkVGV4dHVyZXNbaV0uZm9ybWF0KTsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KICAgICBtX2V2aWN0ZWRUZXh0dXJlcy5jbGVhcigpOwpAQCAtMTg1
LDYgKzE5MSw3IEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OnJlbW92ZVRleHR1cmUoVGV4dHVyZVRv
a2VuIHRva2VuLCBUZXh0dXJlSW5mbyBpbmZvKQogICAgIG1fdGV4dHVyZUxSVVNldC5yZW1vdmUo
dG9rZW4pOwogICAgIEV2aWN0aW9uRW50cnkgZW50cnk7CiAgICAgZW50cnkudGV4dHVyZUlkID0g
aW5mby50ZXh0dXJlSWQ7CisgICAgZW50cnkuYnVmZmVySWQgPSBpbmZvLmJ1ZmZlcklkOwogICAg
IGVudHJ5LnNpemUgPSBpbmZvLnNpemU7CiAgICAgZW50cnkuZm9ybWF0ID0gaW5mby5mb3JtYXQ7
CiAjaWZuZGVmIE5ERUJVRwpAQCAtMjA4LDYgKzIxNSwyMSBAQCB1bnNpZ25lZCBUZXh0dXJlTWFu
YWdlcjo6YWxsb2NhdGVUZXh0dXJlKFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvciwgVGV4dHVy
ZVRvawogICAgIHJldHVybiB0ZXh0dXJlSWQ7CiB9CiAKK3Vuc2lnbmVkIFRleHR1cmVNYW5hZ2Vy
OjphbGxvY2F0ZUJ1ZmZlcihUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IsIFRleHR1cmVUb2tl
biB0b2tlbikKK3sKKyAgICBUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IG1fdGV4dHVyZXMuZmlu
ZCh0b2tlbik7CisgICAgQVNTRVJUKGl0ICE9IG1fdGV4dHVyZXMuZW5kKCkpOworICAgIFRleHR1
cmVJbmZvKiBpbmZvID0gJml0LmdldCgpLT5zZWNvbmQ7CisgICAgQVNTRVJUKGluZm8tPmlzUHJv
dGVjdGVkKTsKKworICAgIHVuc2lnbmVkIGJ1ZmZlcklkID0gYWxsb2NhdG9yLT5jcmVhdGVCdWZm
ZXIoaW5mby0+c2l6ZSwgaW5mby0+Zm9ybWF0KTsKKyAgICBpbmZvLT5idWZmZXJJZCA9IGJ1ZmZl
cklkOworI2lmbmRlZiBOREVCVUcKKyAgICBpbmZvLT5hbGxvY2F0b3IgPSBhbGxvY2F0b3I7Cisj
ZW5kaWYKKyAgICByZXR1cm4gYnVmZmVySWQ7Cit9CisKIGJvb2wgVGV4dHVyZU1hbmFnZXI6OnJl
cXVlc3RUZXh0dXJlKFRleHR1cmVUb2tlbiB0b2tlbiwgSW50U2l6ZSBzaXplLCB1bnNpZ25lZCBm
b3JtYXQpCiB7CiAgICAgaWYgKHNpemUud2lkdGgoKSA+IG1fbWF4VGV4dHVyZVNpemUgfHwgc2l6
ZS5oZWlnaHQoKSA+IG1fbWF4VGV4dHVyZVNpemUpCkBAIC0yMzEsNiArMjUzLDcgQEAgYm9vbCBU
ZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2VuLCBJbnRTaXpl
IHNpemUsIHVuc2lnbmVkIGYKICAgICBpbmZvLnNpemUgPSBzaXplOwogICAgIGluZm8uZm9ybWF0
ID0gZm9ybWF0OwogICAgIGluZm8udGV4dHVyZUlkID0gMDsKKyAgICBpbmZvLmJ1ZmZlcklkID0g
MDsKICAgICBpbmZvLmlzUHJvdGVjdGVkID0gdHJ1ZTsKICNpZm5kZWYgTkRFQlVHCiAgICAgaW5m
by5hbGxvY2F0b3IgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKaW5kZXggZjMyN2I0Yy4uNzY4MDdj
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
VGV4dHVyZU1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCkBAIC00Miw2ICs0Miw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZv
cm1hdCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1
cmUsIGNvbnN0IEludFNpemUmLCBHQzNEZW51bSkgPSAwOwogCisgICAgdmlydHVhbCB1bnNpZ25l
ZCBjcmVhdGVCdWZmZXIoY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCkgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBkZWxldGVCdWZmZXIodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6
ZSYsIEdDM0RlbnVtKSA9IDA7CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5UZXh0dXJlQWxs
b2NhdG9yKCkgeyB9CiB9OwpAQCAtNzcsNiArODAsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1By
b3RlY3RlZChUZXh0dXJlVG9rZW4pOwogCiAgICAgdW5zaWduZWQgYWxsb2NhdGVUZXh0dXJlKFRl
eHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlVG9rZW4pOworICAgIHVuc2lnbmVkIGFsbG9jYXRlQnVm
ZmVyKFRleHR1cmVBbGxvY2F0b3IqLCBUZXh0dXJlVG9rZW4pOwogICAgIHZvaWQgZGVsZXRlRXZp
Y3RlZFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3IqKTsKIAogICAgIHZvaWQgZXZpY3RBbmREZWxl
dGVBbGxUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKik7CkBAIC05MSw2ICs5NSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIEludFNpemUgc2l6ZTsKICAgICAgICAgR0MzRGVudW0gZm9ybWF0OwogICAg
ICAgICB1bnNpZ25lZCB0ZXh0dXJlSWQ7CisgICAgICAgIHVuc2lnbmVkIGJ1ZmZlcklkOwogICAg
ICAgICBib29sIGlzUHJvdGVjdGVkOwogI2lmbmRlZiBOREVCVUcKICAgICAgICAgVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yOwpAQCAtMTExLDYgKzExNiw3IEBAIHByaXZhdGU6CiAKICAgICBz
dHJ1Y3QgRXZpY3Rpb25FbnRyeSB7CiAgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICAg
ICAgdW5zaWduZWQgYnVmZmVySWQ7CiAgICAgICAgIEludFNpemUgc2l6ZTsKICAgICAgICAgR0Mz
RGVudW0gZm9ybWF0OwogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0u
Y3BwCmluZGV4IDU2OGVmNTUuLjIzNGQyMDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcApAQCAtMjczLDcgKzI3Myw4IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjppbnZhbGlk
YXRlUmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCkKICAgICAgICAgICAgIGlmICghdGls
ZSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIEludFJlY3QgYm91bmQg
PSBtX3RpbGVyLT50aWxlTGF5ZXJSZWN0KHRpbGUpOwotICAgICAgICAgICAgYm91bmQuaW50ZXJz
ZWN0KGxheWVyUmVjdCk7CisgICAgICAgICAgICAvLyBUT0RPKHJldmVtYW4pOiBQaXhlbCBidWZm
ZXIgdGV4dHVyZSB1cGRhdGVyIHJlcXVpcmVzIGZ1bGwgdGlsZSB1cGRhdGVzLgorICAgICAgICAg
ICAgLy8gYm91bmQuaW50ZXJzZWN0KGxheWVyUmVjdCk7CiAgICAgICAgICAgICB0aWxlLT5tX2Rp
cnR5TGF5ZXJSZWN0LnVuaXRlKGJvdW5kKTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVy
ZUFsbG9jYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9UcmFja2luZ1RleHR1cmVBbGxvY2F0b3IuY3BwCmluZGV4IDJiMDVkZWYuLjhiMTBjNWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNr
aW5nVGV4dHVyZUFsbG9jYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcApAQCAtMjYsNiArMjYs
NyBAQAogCiAjaW5jbHVkZSAiVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgiCiAKKyNpbmNsdWRl
ICJFeHRlbnNpb25zM0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRl
ICJMYXllclJlbmRlcmVyQ2hyb21pdW0uaCIgLy8gRm9yIHRoZSBHTEMoKSBtYWNybwogCkBAIC02
NSw1ICs2NiwyMCBAQCB2b2lkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6ZGVsZXRlVGV4dHVy
ZSh1bnNpZ25lZCB0ZXh0dXJlSWQsIGNvbnN0IEludFNpemUmCiAgICAgR0xDKG1fY29udGV4dC5n
ZXQoKSwgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKHRleHR1cmVJZCkpOwogfQogCit1bnNpZ25l
ZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmNyZWF0ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiBz
aXplLCBHQzNEZW51bSBmb3JtYXQpCit7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJl
TWFuYWdlcjo6bWVtb3J5VXNlQnl0ZXMoc2l6ZSwgZm9ybWF0KTsKKyAgICB1bnNpZ25lZCBidWZm
ZXJJZCA9IDA7CisgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgYnVmZmVySWQgPSBtX2NvbnRleHQt
PmNyZWF0ZUJ1ZmZlcigpKTsKKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmJp
bmRCdWZmZXIoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFDS19CVUZGRVIsIGJ1ZmZl
cklkKSk7CisgICAgR0xDKG1fY29udGV4dC5nZXQoKSwgbV9jb250ZXh0LT5idWZmZXJEYXRhKEV4
dGVuc2lvbnMzRENocm9taXVtOjpQSVhFTF9VTlBBQ0tfQlVGRkVSLCBidWZmZXJTaXplLCBHcmFw
aGljc0NvbnRleHQzRDo6U1RSRUFNX0RSQVcpKTsKKyAgICBHTEMobV9jb250ZXh0LmdldCgpLCBt
X2NvbnRleHQtPmJpbmRCdWZmZXIoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFDS19C
VUZGRVIsIDApKTsKKyAgICByZXR1cm4gYnVmZmVySWQ7CiB9CiAKK3ZvaWQgVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yOjpkZWxldGVCdWZmZXIodW5zaWduZWQgYnVmZmVySWQsIGNvbnN0IEludFNp
emUmIC8qIHNpemUgKi8sIEdDM0RlbnVtIC8qIGZvcm1hdCAqLykKK3sKKyAgICBHTEMobV9jb250
ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihidWZmZXJJZCkpOworfQorCit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFj
a2luZ1RleHR1cmVBbGxvY2F0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCmluZGV4IGU1MDRlZWEuLmNmMDQ4
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oCkBAIC00Myw2ICs0
Myw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZVRleHR1cmUoY29uc3Qg
SW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAgICAgdmlydHVhbCB2b2lkIGRlbGV0ZVRleHR1
cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CiAK
KyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwgR0MzRGVu
dW0gZm9ybWF0KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlQnVmZmVyKHVuc2lnbmVkIGJ1ZmZl
ciwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtIGZvcm1hdCk7CisKICAgICBzaXplX3QgY3VycmVu
dE1lbW9yeVVzZUJ5dGVzKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50TWVtb3J5VXNlQnl0ZXM7
IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKaW5kZXggYTIy
YWYxNS4uYWU5YzY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCkBAIC0xMTUs
NiArMTE1LDggQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3Q6OmluaXRpYWxpemUoKQogCiAgICAgLy8g
VXBkYXRlIG1fc2V0dGluZ3MgYmFzZWQgb24gY2FwYWJpbGl0aWVzIHRoYXQgd2UgZ290IGJhY2sg
ZnJvbSB0aGUgcmVuZGVyZXIuCiAgICAgbV9zZXR0aW5ncy5hY2NlbGVyYXRlUGFpbnRpbmcgPSBt
X3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdBY2NlbGVyYXRlZFBhaW50
aW5nOworICAgIG1fc2V0dGluZ3MucGl4ZWxCdWZmZXJQYWludGluZyA9IG1fc2V0dGluZ3MucGVy
VGlsZVBhaW50aW5nID0gdHJ1ZTsKKyAgICBtX3NldHRpbmdzLnBpeGVsQnVmZmVyUGFpbnRpbmcg
PSBtX3Byb3h5LT5sYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzKCkudXNpbmdNYXBTdWIgPyBtX3Nl
dHRpbmdzLnBpeGVsQnVmZmVyUGFpbnRpbmcgOiBmYWxzZTsKIAogICAgIG1fY29udGVudHNUZXh0
dXJlTWFuYWdlciA9IFRleHR1cmVNYW5hZ2VyOjpjcmVhdGUoVGV4dHVyZU1hbmFnZXI6OmhpZ2hM
aW1pdEJ5dGVzKCksIG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0
dXJlU2l6ZSk7CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmlu
ZGV4IGQ3MGQ1MmYuLmY4Y2U3YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC03
Myw3ICs3Myw4IEBAIHN0cnVjdCBDQ1NldHRpbmdzIHsKICAgICAgICAgICAgICwgZW5hYmxlQ29t
cG9zaXRvclRocmVhZChmYWxzZSkKICAgICAgICAgICAgICwgc2hvd0ZQU0NvdW50ZXIoZmFsc2Up
CiAgICAgICAgICAgICAsIHNob3dQbGF0Zm9ybUxheWVyVHJlZShmYWxzZSkKLSAgICAgICAgICAg
ICwgcGVyVGlsZVBhaW50aW5nKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgcGVyVGlsZVBhaW50
aW5nKGZhbHNlKQorICAgICAgICAgICAgLCBwaXhlbEJ1ZmZlclBhaW50aW5nKGZhbHNlKSB7IH0K
IAogICAgIGJvb2wgYWNjZWxlcmF0ZVBhaW50aW5nOwogICAgIGJvb2wgY29tcG9zaXRlT2Zmc2Ny
ZWVuOwpAQCAtODEsNiArODIsNyBAQCBzdHJ1Y3QgQ0NTZXR0aW5ncyB7CiAgICAgYm9vbCBzaG93
RlBTQ291bnRlcjsKICAgICBib29sIHNob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIHBl
clRpbGVQYWludGluZzsKKyAgICBib29sIHBpeGVsQnVmZmVyUGFpbnRpbmc7CiB9OwogCiAvLyBQ
cm92aWRlcyBpbmZvcm1hdGlvbiBvbiBhbiBJbXBsJ3MgcmVuZGVyaW5nIGNhcGFiaWxpdGllcyBi
YWNrIHRvIHRoZSBDQ0xheWVyVHJlZUhvc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkxheWVyVHJlZVZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYkxheWVyVHJlZVZpZXcuaAppbmRleCBmZDFkZmE1Li40MjNlMmM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllclRyZWVWaWV3LmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXJUcmVlVmlldy5oCkBAIC00
NywxMiArNDcsMTQgQEAgcHVibGljOgogICAgICAgICAgICAgOiBhY2NlbGVyYXRlUGFpbnRpbmco
ZmFsc2UpCiAgICAgICAgICAgICAsIGNvbXBvc2l0ZU9mZnNjcmVlbihmYWxzZSkKICAgICAgICAg
ICAgICwgZW5hYmxlQ29tcG9zaXRvclRocmVhZChmYWxzZSkKLSAgICAgICAgICAgICwgcGVyVGls
ZVBhaW50aW5nKGZhbHNlKSB7IH0KKyAgICAgICAgICAgICwgcGVyVGlsZVBhaW50aW5nKGZhbHNl
KQorICAgICAgICAgICAgLCBwaXhlbEJ1ZmZlclBhaW50aW5nKGZhbHNlKSB7IH0KIAogICAgICAg
ICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICAgICAgYm9vbCBjb21wb3NpdGVPZmZzY3Jl
ZW47CiAgICAgICAgIGJvb2wgZW5hYmxlQ29tcG9zaXRvclRocmVhZDsKICAgICAgICAgYm9vbCBw
ZXJUaWxlUGFpbnRpbmc7CisgICAgICAgIGJvb2wgcGl4ZWxCdWZmZXJQYWludGluZzsKICNpZiBX
RUJLSVRfSU1QTEVNRU5UQVRJT04KICAgICAgICAgb3BlcmF0b3IgV2ViQ29yZTo6Q0NTZXR0aW5n
cygpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0
dGluZ3MuaAppbmRleCA1ZGM1ZjUxLi41ZWRkMGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNSw2ICsxMzUsOCBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldFZpc3VhbFdvcmRNb3ZlbWVudEVuYWJsZWQoYm9vbCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRQZXJUaWxlUGFpbnRpbmcoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
Ym9vbCBwZXJUaWxlUGFpbnRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFBp
eGVsQnVmZmVyUGFpbnRpbmcoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwaXhlbEJ1ZmZl
clBhaW50aW5nKCkgY29uc3QgPSAwOwogCiBwcm90ZWN0ZWQ6CiAgICAgfldlYlNldHRpbmdzKCkg
eyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllclRyZWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3Bw
CmluZGV4IGE0NTFjMjQuLjFmYTQ5ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYkxheWVyVHJlZVZpZXcuY3BwCkBAIC00MSw2ICs0MSw3IEBAIFdlYkxheWVyVHJlZVZp
ZXc6OlNldHRpbmdzOjpvcGVyYXRvciBDQ1NldHRpbmdzKCkgY29uc3QKICAgICBzZXR0aW5ncy5j
b21wb3NpdGVPZmZzY3JlZW4gPSBjb21wb3NpdGVPZmZzY3JlZW47CiAgICAgc2V0dGluZ3MuZW5h
YmxlQ29tcG9zaXRvclRocmVhZCA9IGVuYWJsZUNvbXBvc2l0b3JUaHJlYWQ7CiAgICAgc2V0dGlu
Z3MucGVyVGlsZVBhaW50aW5nID0gcGVyVGlsZVBhaW50aW5nOworICAgIHNldHRpbmdzLnBpeGVs
QnVmZmVyUGFpbnRpbmcgPSBwaXhlbEJ1ZmZlclBhaW50aW5nOwogCiAgICAgLy8gRklYTUU6IHNo
b3dGUFNDb3VudGVyIC8gc2hvd1BsYXRmb3JtTGF5ZXJUcmVlIGFyZW4ndCBzdXBwb3J0ZWQgY3Vy
cmVudGx5LgogICAgIHNldHRpbmdzLnNob3dGUFNDb3VudGVyID0gZmFsc2U7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCBmOWUxZDgzLi43
NTZhMTAwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5n
c0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAKQEAgLTUxLDYgKzUxLDcgQEAgV2ViU2V0dGluZ3NJbXBsOjpXZWJTZXR0aW5nc0ltcGwo
U2V0dGluZ3MqIHNldHRpbmdzKQogICAgICwgbV9zaG93RlBTQ291bnRlcihmYWxzZSkKICAgICAs
IG1fc2hvd1BsYXRmb3JtTGF5ZXJUcmVlKGZhbHNlKQogICAgICwgbV9wZXJUaWxlUGFpbnRpbmco
ZmFsc2UpCisgICAgLCBtX3BpeGVsQnVmZmVyUGFpbnRpbmcoZmFsc2UpCiAgICAgLCBtX3VzZVRo
cmVhZGVkQ29tcG9zaXRvcihmYWxzZSkKIHsKICAgICBBU1NFUlQoc2V0dGluZ3MpOwpAQCAtNDc2
LDQgKzQ3Nyw5IEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRQZXJUaWxlUGFpbnRpbmcoYm9v
bCBlbmFibGVkKQogICAgIG1fcGVyVGlsZVBhaW50aW5nID0gZW5hYmxlZDsKIH0KIAordm9pZCBX
ZWJTZXR0aW5nc0ltcGw6OnNldFBpeGVsQnVmZmVyUGFpbnRpbmcoYm9vbCBlbmFibGVkKQorewor
ICAgIG1fcGl4ZWxCdWZmZXJQYWludGluZyA9IGVuYWJsZWQ7Cit9CisKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApp
bmRleCBmZjk3ODI4Li41Mzg5YTgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuaApAQCAtMTI3LDYgKzEyNyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgc2V0VmlzdWFsV29yZE1vdmVtZW50RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOwogICAgIHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFp
bnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQYWludGluZzsgfQorICAgIHZpcnR1YWwg
dm9pZCBzZXRQaXhlbEJ1ZmZlclBhaW50aW5nKGJvb2wpOworICAgIHZpcnR1YWwgYm9vbCBwaXhl
bEJ1ZmZlclBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4gbV9waXhlbEJ1ZmZlclBhaW50aW5nOyB9
CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIG1fc2V0dGluZ3M7CkBAIC0xMzQs
NiArMTM2LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvd0ZQU0NvdW50ZXI7CiAgICAgYm9v
bCBtX3Nob3dQbGF0Zm9ybUxheWVyVHJlZTsKICAgICBib29sIG1fcGVyVGlsZVBhaW50aW5nOwor
ICAgIGJvb2wgbV9waXhlbEJ1ZmZlclBhaW50aW5nOwogICAgIGJvb2wgbV91c2VUaHJlYWRlZENv
bXBvc2l0b3I7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggNDg4MTQxNi4uMzM5ZDkyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcApAQCAtMjczNSw2ICsyNzM1LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6
c2V0SXNBY2NlbGVyYXRlZENvbXBvc2l0aW5nQWN0aXZlKGJvb2wgYWN0aXZlKQogICAgICAgICBj
Y1NldHRpbmdzLnNob3dGUFNDb3VudGVyID0gc2V0dGluZ3MoKS0+c2hvd0ZQU0NvdW50ZXIoKTsK
ICAgICAgICAgY2NTZXR0aW5ncy5zaG93UGxhdGZvcm1MYXllclRyZWUgPSBzZXR0aW5ncygpLT5z
aG93UGxhdGZvcm1MYXllclRyZWUoKTsKICAgICAgICAgY2NTZXR0aW5ncy5wZXJUaWxlUGFpbnRp
bmcgPSBzZXR0aW5ncygpLT5wZXJUaWxlUGFpbnRpbmcoKTsKKyAgICAgICAgY2NTZXR0aW5ncy5w
aXhlbEJ1ZmZlclBhaW50aW5nID0gc2V0dGluZ3MoKS0+cGl4ZWxCdWZmZXJQYWludGluZygpOwog
CiAgICAgICAgIG1fbm9uQ29tcG9zaXRlZENvbnRlbnRIb3N0ID0gTm9uQ29tcG9zaXRlZENvbnRl
bnRIb3N0OjpjcmVhdGUoV2ViVmlld0ltcGxDb250ZW50UGFpbnRlcjo6Y3JlYXRlKHRoaXMpKTsK
ICAgICAgICAgbV9sYXllclRyZWVIb3N0ID0gQ0NMYXllclRyZWVIb3N0OjpjcmVhdGUodGhpcywg
Y2NTZXR0aW5ncyk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116012</attachid>
            <date>2011-11-20 17:07:14 -0800</date>
            <delta_ts>2011-11-22 16:54:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pbo.diff</filename>
            <type>text/plain</type>
            <size>26466</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCA2MmVmNWJhLi5iY2RkMWE1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNTE2LDYgKzM1MTYsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NZWRpYVBsYXllclByaXZhdGVDaHJvbWl1
bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGxhdGZvcm1DYW52YXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IGMyNjVlZDYuLmZjYTg4MWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dXBwb3J0LmgiCkBAIC0xNDcsNiArMTQ4LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICB9
CiAKICAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpIHsKKyAgICAgICAg
aWYgKGhvc3QtPnNldHRpbmdzKCkucGl4ZWxCdWZmZXJQYWludGluZykgeworICAgICAgICAgICAg
bV90ZXh0dXJlVXBkYXRlciA9IFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENv
bnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVu
c2lvbnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDk2YzdmMTAuLmM3YTU0ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtNjAsNiArNjAsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bTNET2JqZWN0KTsKIAogICAgIGVudW0geworICAgICAgICAvLyBHTF9DSFJPTUlVTV9waXhlbF9i
dWZmZXJfb2JqZWN0IChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9BUkJfcGl4ZWxfYnVmZmVyX29i
amVjdCkKKyAgICAgICAgUElYRUxfVU5QQUNLX0JVRkZFUiA9IDB4ODhFQywKKyAgICAgICAgUElY
RUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HID0gMHg4OEVGCisgICAgfTsKKworICAgIGVudW0gewog
ICAgICAgICAvLyBHTF9DSFJPTUlVTV9tYXBfc3ViIChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9B
UkJfdmVydGV4X2J1ZmZlcl9vYmplY3QpCiAgICAgICAgIFJFQURfT05MWSA9IDB4ODhCOCwKICAg
ICAgICAgV1JJVEVfT05MWSA9IDB4ODhCOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmluZGV4IGM3
NGM5N2MuLmRhNjE4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hbmFnZXIuaCIKIApAQCAtMzgsNiArMzksNyBAQCBNYW5hZ2VkVGV4dHVyZTo6TWFu
YWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCiAgICAgLCBtX3Rva2VuKDApCiAg
ICAgLCBtX2Zvcm1hdCgwKQogICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fYnVmZmVySWQo
MCkKIHsKIH0KIApAQCAtNjIsNiArNjQsNyBAQCBib29sIE1hbmFnZWRUZXh0dXJlOjpyZXNlcnZl
KGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZvcm1hdCkKICAgICAgICAgbV90ZXh0dXJl
TWFuYWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tlbik7CiAgICAgZWxzZSB7CiAgICAgICAgIG1f
dGV4dHVyZUlkID0gMDsKKyAgICAgICAgbV9idWZmZXJJZCA9IDA7CiAgICAgICAgIHJlc2VydmVk
ID0gbV90ZXh0dXJlTWFuYWdlci0+cmVxdWVzdFRleHR1cmUobV90b2tlbiwgc2l6ZSwgZm9ybWF0
KTsKICAgICAgICAgaWYgKHJlc2VydmVkKSB7CiAgICAgICAgICAgICBtX3NpemUgPSBzaXplOwpA
QCAtMTAxLDYgKzEwNCwyMCBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbAogICAgIGNvbnRleHQt
PmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOwogfQogCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxv
Y2F0ZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQoreworICAgIGlmICghbV9idWZmZXJJZCkKKyAgICAgICAgbV9idWZmZXJJZCA9
IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlQnVmZmVyKGFsbG9jYXRvciwgbV90b2tlbik7Cit9
CisKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBpZiAoIW1fYnVmZmVy
SWQpCisgICAgICAgIG1fYnVmZmVySWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZUJ1ZmZl
cihhbGxvY2F0b3IsIG1fdG9rZW4pOworCisgICAgY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNp
b25zM0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgbV9idWZmZXJJZCk7Cit9CisKIH0K
IAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVy
ZS5oCmluZGV4IGQ3M2M4NzQuLjVhY2ViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtNTgs
MTAgKzU4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9p
ZCBhbGxvY2F0ZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsK
KyAgICB2b2lkIGJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
Kik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICB1
bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIHVuc2lnbmVk
IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisgICAgdW5zaWduZWQg
YnVmZmVySWQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcklkOyB9CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKQEAgLTcxLDYgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICB1bnNpZ25lZCBtX2Zvcm1hdDsK
ICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICB1bnNpZ25lZCBtX2J1ZmZlcklkOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNDZkYzJiMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJ
QSkKKworI2luY2x1ZGUgIlBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJM
YXllclBhaW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlNrQ2FudmFzLmgiCisjaW5jbHVkZSAi
c2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGl4
ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVy
ZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgOiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1
ZmZlcigwKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKK3sKK30KKwor
Ym9vbCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6Om5lZWRQcmVwYXJlUmVjdCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUGl4
ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVw
YXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKK3sKKyAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID09IHRleHR1cmUoKS0+c2l6ZSgp
LndpZHRoKCkgJiYgc291cmNlUmVjdC5oZWlnaHQoKSA9PSB0ZXh0dXJlKCktPnNpemUoKS5oZWln
aHQoKSk7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNl
Qnl0ZXModGV4dHVyZSgpLT5zaXplKCksIHRleHR1cmUoKS0+Zm9ybWF0KCkpOworICAgIEFTU0VS
VCghbV9tYXBwZWRCdWZmZXIpOworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkpOworICAgIG1fbWFwcGVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVu
c2lvbnMtPm1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlVTShFeHRlbnNpb25zM0RDaHJvbWl1bTo6UElY
RUxfVU5QQUNLX0JVRkZFUiwgMCwgYnVmZmVyU2l6ZSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldS
SVRFX09OTFkpKTsKKyAgICB0ZXh0dXJlKCktPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxv
Y2F0b3IpOworICAgIHRleHR1cmUoKS0+YWxsb2NhdGVCdWZmZXIoY29udGV4dCwgYWxsb2NhdG9y
KTsKK30KKwordm9pZCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qp
Cit7CisgICAgQVNTRVJUKG1fbWFwcGVkQnVmZmVyKTsKKyAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VSZWN0LndpZHRo
KCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBtX21hcHBlZEJ1ZmZlcikpOworICAgIHRl
eHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KGNhbnZhcy5nZXQoKSwgc291cmNlUmVj
dCk7Cit9CisKK3ZvaWQgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBB
U1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwor
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPmJ1ZmZlcklkKCkpOworICAgIGNvbnRleHQtPmJpbmRCdWZm
ZXIoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFDS19CVUZGRVIsIHRleHR1cmUoKS0+
YnVmZmVySWQoKSk7CisgICAgQVNTRVJUKG1fbWFwcGVkQnVmZmVyKTsKKyAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBleHRlbnNpb25zLT51bm1hcEJ1ZmZl
clN1YkRhdGFDSFJPTUlVTShtX21hcHBlZEJ1ZmZlcik7CisgICAgbV9tYXBwZWRCdWZmZXIgPSAw
OworICAgIGNvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LndpZHRoKCksIGRl
c3RSZWN0LmhlaWdodCgpLCAwLCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSk7CisgICAgY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RD
aHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgMCk7Cit9CisKK1Bhc3NSZWZQdHI8UGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBQaXhlbEJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpKTsKK30KKwor
UGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpQaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4gcGFpbnRlcikKKyAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIocGFpbnRlcikKK3sKK30KKworUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjp+UGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKCkKK3sKK30KKworUGFzc1JlZlB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBQ
aXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1
cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBU
ZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKK30KKworTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IFBpeGVsQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpCit7CisgICAgLy8gVGhlIGNvbXBvbmVudCBvcmRlciBtYXkgYmUgYmdyYSBp
ZiB3ZSB1cGxvYWRlZCBiZ3JhIHBpeGVscyB0byByZ2JhIHRleHR1cmVzLgorICAgIHJldHVybiBQ
bGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIodGV4dHVyZUZvcm1hdCkgPworICAgICAg
ICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7Cit9CisKK3ZvaWQgUGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVj
dChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQoreworICAgIC8v
IFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2Ygc291cmNlUmVj
dC4KKyAgICBjYW52YXMtPnRyYW5zbGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNvdXJjZVJlY3Qu
eCgpLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0KCkueSgpIC0gc291cmNlUmVj
dC55KCkpOworICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjFiOWZhYjcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFBpeGVs
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisjZGVmaW5lIFBpeGVs
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNsdWRlICJQbGF0Zm9y
bUNvbG9yLmgiCisjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dHVy
ZShQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3du
UHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgUGl4ZWxCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsg
cmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KKworICAgICAgICB1aW50OF90KiBtX21hcHBlZEJ1
ZmZlcjsKKyAgICAgICAgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
aXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CisgICAgdmlydHVhbCB+UGl4ZWxCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CisKKyAgICB2aXJ0dWFsIFBhc3NS
ZWZQdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJl
TWFuYWdlciopOworICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVy
biBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CisgICAgdmlydHVh
bCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVG
b3JtYXQpOworICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0KTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQaXhlbEJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4pOworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJ
QSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjZW5kaWYgLy8gUGl4
ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcAppbmRleCBjNjAwZDllLi43OGVhZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
Y3BwCkBAIC0xNjMsNiArMTYzLDEyIEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0
ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAjZW5kaWYKICAgICAgICAg
ICAgICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUobV9ldmljdGVkVGV4dHVyZXNbaV0udGV4
dHVyZUlkLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5m
b3JtYXQpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVz
W2ldLmJ1ZmZlcklkKSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgICAgIEFTU0VSVCht
X2V2aWN0ZWRUZXh0dXJlc1tpXS5hbGxvY2F0b3IgPT0gYWxsb2NhdG9yKTsKKyNlbmRpZgorICAg
ICAgICAgICAgICAgIGFsbG9jYXRvci0+ZGVsZXRlQnVmZmVyKG1fZXZpY3RlZFRleHR1cmVzW2ld
LmJ1ZmZlcklkLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tp
XS5mb3JtYXQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIG1fZXZpY3Rl
ZFRleHR1cmVzLmNsZWFyKCk7CkBAIC0xODUsNiArMTkxLDcgQEAgdm9pZCBUZXh0dXJlTWFuYWdl
cjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiAg
ICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7CiAgICAgRXZpY3Rpb25FbnRyeSBlbnRy
eTsKICAgICBlbnRyeS50ZXh0dXJlSWQgPSBpbmZvLnRleHR1cmVJZDsKKyAgICBlbnRyeS5idWZm
ZXJJZCA9IGluZm8uYnVmZmVySWQ7CiAgICAgZW50cnkuc2l6ZSA9IGluZm8uc2l6ZTsKICAgICBl
bnRyeS5mb3JtYXQgPSBpbmZvLmZvcm1hdDsKICNpZm5kZWYgTkRFQlVHCkBAIC0yMDgsNiArMjE1
LDIxIEBAIHVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlVG9rCiAgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0K
IAordW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OmFsbG9jYXRlQnVmZmVyKFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRva2VuKQoreworICAgIFRleHR1cmVNYXA6Oml0
ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKKyAgICBBU1NFUlQoaXQgIT0gbV90
ZXh0dXJlcy5lbmQoKSk7CisgICAgVGV4dHVyZUluZm8qIGluZm8gPSAmaXQuZ2V0KCktPnNlY29u
ZDsKKyAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOworCisgICAgdW5zaWduZWQgYnVmZmVy
SWQgPSBhbGxvY2F0b3ItPmNyZWF0ZUJ1ZmZlcihpbmZvLT5zaXplLCBpbmZvLT5mb3JtYXQpOwor
ICAgIGluZm8tPmJ1ZmZlcklkID0gYnVmZmVySWQ7CisjaWZuZGVmIE5ERUJVRworICAgIGluZm8t
PmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKKyNlbmRpZgorICAgIHJldHVybiBidWZmZXJJZDsKK30K
KwogYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2Vu
LCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGZvcm1hdCkKIHsKICAgICBpZiAoc2l6ZS53aWR0aCgp
ID4gbV9tYXhUZXh0dXJlU2l6ZSB8fCBzaXplLmhlaWdodCgpID4gbV9tYXhUZXh0dXJlU2l6ZSkK
QEAgLTIzMSw2ICsyNTMsNyBAQCBib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShU
ZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZgogICAgIGluZm8uc2l6
ZSA9IHNpemU7CiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgaW5mby50ZXh0dXJlSWQg
PSAwOworICAgIGluZm8uYnVmZmVySWQgPSAwOwogICAgIGluZm8uaXNQcm90ZWN0ZWQgPSB0cnVl
OwogI2lmbmRlZiBOREVCVUcKICAgICBpbmZvLmFsbG9jYXRvciA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuaAppbmRleCBmMzI3YjRjLi43NjgwN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKQEAgLTQy
LDYgKzQyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSA9
IDA7CiAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0gZm9ybWF0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJ1ZmZlcih1bnNp
Z25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0KIH07CkBAIC03Nyw2ICs4MCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbik7CiAKICAgICB1
bnNpZ25lZCBhbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVUb2tlbik7
CisgICAgdW5zaWduZWQgYWxsb2NhdGVCdWZmZXIoVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVU
b2tlbik7CiAgICAgdm9pZCBkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciop
OwogCiAgICAgdm9pZCBldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3Iq
KTsKQEAgLTkxLDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW50U2l6ZSBzaXplOwogICAg
ICAgICBHQzNEZW51bSBmb3JtYXQ7CiAgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICAg
ICAgdW5zaWduZWQgYnVmZmVySWQ7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3I7CkBAIC0xMTEsNiAr
MTE2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBFdmljdGlvbkVudHJ5IHsKICAgICAgICAg
dW5zaWduZWQgdGV4dHVyZUlkOworICAgICAgICB1bnNpZ25lZCBidWZmZXJJZDsKICAgICAgICAg
SW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CiAjaWZuZGVmIE5ERUJVRwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMDcwNzgxNC4uZWJhZDkwNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0yODgsNyArMjg4LDggQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KQogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgSW50UmVjdCBib3VuZCA9IG1fdGlsZXItPnRpbGVMYXllclJlY3QodGlsZSk7
Ci0gICAgICAgICAgICBib3VuZC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKKyAgICAgICAgICAgIC8v
IFRPRE8ocmV2ZW1hbik6IFBpeGVsIGJ1ZmZlciB0ZXh0dXJlIHVwZGF0ZXIgcmVxdWlyZXMgZnVs
bCB0aWxlIHVwZGF0ZXMuCisgICAgICAgICAgICAvLyBib3VuZC5pbnRlcnNlY3QobGF5ZXJSZWN0
KTsKICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3QudW5pdGUoYm91bmQpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAK
aW5kZXggMmIwNWRlZi4uOGIxMGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBG
b3IgdGhlIEdMQygpIG1hY3JvCiAKQEAgLTY1LDUgKzY2LDIwIEBAIHZvaWQgVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUo
dGV4dHVyZUlkKSk7CiB9CiAKK3Vuc2lnbmVkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3Jl
YXRlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBm
b3JtYXQpOworICAgIHVuc2lnbmVkIGJ1ZmZlcklkID0gMDsKKyAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBidWZmZXJJZCA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCkpOworICAgIEdMQyhtX2Nv
bnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RDaHJvbWl1bTo6
UElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVySWQpKTsKKyAgICBHTEMobV9jb250ZXh0LmdldCgp
LCBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFD
S19CVUZGRVIsIGJ1ZmZlclNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpTVFJFQU1fRFJBVykpOwor
ICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25z
M0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgMCkpOworICAgIHJldHVybiBidWZmZXJJ
ZDsKIH0KIAordm9pZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZUJ1ZmZlcih1bnNp
Z25lZCBidWZmZXJJZCwgY29uc3QgSW50U2l6ZSYgLyogc2l6ZSAqLywgR0MzRGVudW0gLyogZm9y
bWF0ICovKQoreworICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlQnVm
ZmVyKGJ1ZmZlcklkKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgKaW5kZXggZTUwNGVlYS4uY2YwNDg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmgKQEAgLTQzLDYgKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5z
aWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIAorICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlQnVm
ZmVyKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVCdWZmZXIodW5zaWduZWQgYnVmZmVyLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9y
bWF0KTsKKwogICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAppbmRleCA1ODk5YmY2Li5iNWE5ZjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQCBib29sIENDTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSgpCiAKICAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBvbiBjYXBh
YmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5kZXJlci4KICAgICBtX3NldHRp
bmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7CisgICAgbV9zZXR0aW5ncy5waXhlbEJ1ZmZl
clBhaW50aW5nID0gbV9zZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSB0cnVlOworICAgIG1fc2V0
dGluZ3MucGl4ZWxCdWZmZXJQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS51c2luZ01hcFN1YiA/IG1fc2V0dGluZ3MucGl4ZWxCdWZmZXJQYWludGluZyA6IGZh
bHNlOwogCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoKSwgbV9wcm94eS0+bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZDU0NTQyNS4uZjk4NjFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTc1LDcgKzc1LDggQEAgc3RydWN0IENDU2V0dGluZ3Mg
ewogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAg
ICAsIHJlZnJlc2hSYXRlKDApCiAgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFs
c2UpCi0gICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkgeyB9CisgICAgICAgICAg
ICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkKKyAgICAgICAgICAgICwgcGl4ZWxCdWZmZXJQYWlu
dGluZyhmYWxzZSkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29s
IGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg1LDYgKzg2LDcgQEAgc3RydWN0IENDU2V0dGluZ3Mg
ewogICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXM7
CiAgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CisgICAgYm9vbCBwaXhlbEJ1ZmZlclBhaW50aW5n
OwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBj
YXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCA2N2Q0MDA1Li5iMGY3NzhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNyw2ICsx
MzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZyhib29sKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHBlclRpbGVQYWludGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UGl4ZWxCdWZmZXJQYWludGluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHBpeGVsQnVmZmVyUGFpbnRpbmcoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+
V2ViU2V0dGluZ3MoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCmluZGV4IDkwNDU4MjguLjVjMGU0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNTMsNiArNTMsNyBAQCBXZWJT
ZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBt
X3VzZVRocmVhZGVkQ29tcG9zaXRvcihmYWxzZSkKICAgICAsIG1fZGVsYXlUZXh0dXJlVXBkYXRl
cyhmYWxzZSkKICAgICAsIG1fcGVyVGlsZVBhaW50aW5nKGZhbHNlKQorICAgICwgbV9waXhlbEJ1
ZmZlclBhaW50aW5nKGZhbHNlKQogCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKQEAgLTQ3OSw0
ICs0ODAsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nKGJvb2wg
ZW5hYmxlZCkKICAgICBtX3BlclRpbGVQYWludGluZyA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRQaXhlbEJ1ZmZlclBhaW50aW5nKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBtX3BpeGVsQnVmZmVyUGFpbnRpbmcgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZjM2ZGNhNC4uODA3OGJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKQEAgLTEyOSw2ICsxMjksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVw
ZGF0ZXM7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOwogICAg
IHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQ
YWludGluZzsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQaXhlbEJ1ZmZlclBhaW50aW5nKGJvb2wp
OworICAgIHZpcnR1YWwgYm9vbCBwaXhlbEJ1ZmZlclBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4g
bV9waXhlbEJ1ZmZlclBhaW50aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGlu
Z3MqIG1fc2V0dGluZ3M7CkBAIC0xMzgsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
dXNlVGhyZWFkZWRDb21wb3NpdG9yOwogICAgIGJvb2wgbV9kZWxheVRleHR1cmVVcGRhdGVzOwog
ICAgIGJvb2wgbV9wZXJUaWxlUGFpbnRpbmc7CisgICAgYm9vbCBtX3BpeGVsQnVmZmVyUGFpbnRp
bmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBhN2Q3NmJlLi40ZTBhZDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yODQ4LDYgKzI4NDgsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAKICAgICAgICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGlu
Z3MoKS0+ZGVsYXlUZXh0dXJlVXBkYXRlcygpOwogICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQ
YWludGluZyA9IHNldHRpbmdzKCktPnBlclRpbGVQYWludGluZygpOworICAgICAgICBjY1NldHRp
bmdzLnBpeGVsQnVmZmVyUGFpbnRpbmcgPSBzZXR0aW5ncygpLT5waXhlbEJ1ZmZlclBhaW50aW5n
KCk7CiAKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhp
cykpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0
aGlzLCBjY1NldHRpbmdzKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>116295</attachid>
            <date>2011-11-22 16:54:37 -0800</date>
            <delta_ts>2011-11-22 16:54:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>pbo.diff</filename>
            <type>text/plain</type>
            <size>26466</size>
            <attacher name="David Reveman">reveman</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQppbmRleCAyMTZmNjBjLi42ZWQ2N2RlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBA
IC0zNTE2LDYgKzM1MTYsOCBAQAogICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL05vbkNvbXBvc2l0ZWRDb250ZW50SG9zdC5oJywKICAgICAgICAg
ICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NZWRpYVBsYXllclByaXZhdGVDaHJvbWl1
bS5oJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuY3BwJywKKyAgICAgICAgICAgICdw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGxhdGZvcm1DYW52YXMuY3BwJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QbGF0Zm9ybUNhbnZhcy5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9QbGF0Zm9ybUNvbG9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21pdW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQ29udGVudExheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDZjN2RmMmQuLmExMzc2YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0NvbnRlbnRMYXllckNocm9taXVtLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Db250ZW50TGF5ZXJD
aHJvbWl1bS5jcHAKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJCaXRtYXBDYW52YXNMYXll
clRleHR1cmVVcGRhdGVyLmgiCiAjaW5jbHVkZSAiQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkZyYW1lQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5
ZXJUZXh0dXJlVXBkYXRlci5oIgorI2luY2x1ZGUgIlBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFz
TGF5ZXJUZXh0dXJlVXBkYXRlci5oIgogI2luY2x1ZGUgIkxheWVyUGFpbnRlckNocm9taXVtLmgi
CiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9taXVtLmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1T
dXBwb3J0LmgiCkBAIC0xNDcsNiArMTQ4LDExIEBAIHZvaWQgQ29udGVudExheWVyQ2hyb21pdW06
OmNyZWF0ZVRleHR1cmVVcGRhdGVyKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCogaG9zdCkKICAgICB9
CiAKICAgICBpZiAoaG9zdC0+c2V0dGluZ3MoKS5wZXJUaWxlUGFpbnRpbmcpIHsKKyAgICAgICAg
aWYgKGhvc3QtPnNldHRpbmdzKCkucGl4ZWxCdWZmZXJQYWludGluZykgeworICAgICAgICAgICAg
bV90ZXh0dXJlVXBkYXRlciA9IFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJl
VXBkYXRlcjo6Y3JlYXRlKENvbnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBtX3RleHR1cmVVcGRh
dGVyID0gQml0bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6Y3JlYXRlKENv
bnRlbnRMYXllclBhaW50ZXI6OmNyZWF0ZShtX2RlbGVnYXRlKSwgaG9zdC0+bGF5ZXJSZW5kZXJl
ckNhcGFiaWxpdGllcygpLnVzaW5nTWFwU3ViKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVu
c2lvbnMzRENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDk2YzdmMTAuLmM3YTU0ZDggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lv
bnMzRENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtNjAsNiArNjAsMTIgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bTNET2JqZWN0KTsKIAogICAgIGVudW0geworICAgICAgICAvLyBHTF9DSFJPTUlVTV9waXhlbF9i
dWZmZXJfb2JqZWN0IChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9BUkJfcGl4ZWxfYnVmZmVyX29i
amVjdCkKKyAgICAgICAgUElYRUxfVU5QQUNLX0JVRkZFUiA9IDB4ODhFQywKKyAgICAgICAgUElY
RUxfVU5QQUNLX0JVRkZFUl9CSU5ESU5HID0gMHg4OEVGCisgICAgfTsKKworICAgIGVudW0gewog
ICAgICAgICAvLyBHTF9DSFJPTUlVTV9tYXBfc3ViIChlbnVtcyBpbmhlcml0ZWQgZnJvbSBHTF9B
UkJfdmVydGV4X2J1ZmZlcl9vYmplY3QpCiAgICAgICAgIFJFQURfT05MWSA9IDB4ODhCOCwKICAg
ICAgICAgV1JJVEVfT05MWSA9IDB4ODhCOQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuY3BwCmluZGV4IGM3
NGM5N2MuLmRhNjE4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVyZS5jcHAKQEAgLTI4LDYgKzI4LDcg
QEAKIAogI2luY2x1ZGUgIk1hbmFnZWRUZXh0dXJlLmgiCiAKKyNpbmNsdWRlICJFeHRlbnNpb25z
M0RDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCiAjaW5jbHVkZSAi
VGV4dHVyZU1hbmFnZXIuaCIKIApAQCAtMzgsNiArMzksNyBAQCBNYW5hZ2VkVGV4dHVyZTo6TWFu
YWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCiAgICAgLCBtX3Rva2VuKDApCiAg
ICAgLCBtX2Zvcm1hdCgwKQogICAgICwgbV90ZXh0dXJlSWQoMCkKKyAgICAsIG1fYnVmZmVySWQo
MCkKIHsKIH0KIApAQCAtNjIsNiArNjQsNyBAQCBib29sIE1hbmFnZWRUZXh0dXJlOjpyZXNlcnZl
KGNvbnN0IEludFNpemUmIHNpemUsIHVuc2lnbmVkIGZvcm1hdCkKICAgICAgICAgbV90ZXh0dXJl
TWFuYWdlci0+cHJvdGVjdFRleHR1cmUobV90b2tlbik7CiAgICAgZWxzZSB7CiAgICAgICAgIG1f
dGV4dHVyZUlkID0gMDsKKyAgICAgICAgbV9idWZmZXJJZCA9IDA7CiAgICAgICAgIHJlc2VydmVk
ID0gbV90ZXh0dXJlTWFuYWdlci0+cmVxdWVzdFRleHR1cmUobV90b2tlbiwgc2l6ZSwgZm9ybWF0
KTsKICAgICAgICAgaWYgKHJlc2VydmVkKSB7CiAgICAgICAgICAgICBtX3NpemUgPSBzaXplOwpA
QCAtMTAxLDYgKzEwNCwyMCBAQCB2b2lkIE1hbmFnZWRUZXh0dXJlOjpmcmFtZWJ1ZmZlclRleHR1
cmUyRChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbAogICAgIGNvbnRleHQt
PmZyYW1lYnVmZmVyVGV4dHVyZTJEKEdyYXBoaWNzQ29udGV4dDNEOjpGUkFNRUJVRkZFUiwgR3Jh
cGhpY3NDb250ZXh0M0Q6OkNPTE9SX0FUVEFDSE1FTlQwLCBHcmFwaGljc0NvbnRleHQzRDo6VEVY
VFVSRV8yRCwgbV90ZXh0dXJlSWQsIDApOwogfQogCit2b2lkIE1hbmFnZWRUZXh0dXJlOjphbGxv
Y2F0ZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciog
YWxsb2NhdG9yKQoreworICAgIGlmICghbV9idWZmZXJJZCkKKyAgICAgICAgbV9idWZmZXJJZCA9
IG1fdGV4dHVyZU1hbmFnZXItPmFsbG9jYXRlQnVmZmVyKGFsbG9jYXRvciwgbV90b2tlbik7Cit9
CisKK3ZvaWQgTWFuYWdlZFRleHR1cmU6OmJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqIGNv
bnRleHQsIFRleHR1cmVBbGxvY2F0b3IqIGFsbG9jYXRvcikKK3sKKyAgICBpZiAoIW1fYnVmZmVy
SWQpCisgICAgICAgIG1fYnVmZmVySWQgPSBtX3RleHR1cmVNYW5hZ2VyLT5hbGxvY2F0ZUJ1ZmZl
cihhbGxvY2F0b3IsIG1fdG9rZW4pOworCisgICAgY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNp
b25zM0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgbV9idWZmZXJJZCk7Cit9CisKIH0K
IAogI2VuZGlmIC8vIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9NYW5hZ2VkVGV4dHVy
ZS5oCmluZGV4IGQ3M2M4NzQuLjVhY2ViOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL01hbmFnZWRUZXh0dXJlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTWFuYWdlZFRleHR1cmUuaApAQCAtNTgs
MTAgKzU4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGFsbG9jYXRlVGV4dHVyZShHcmFwaGljc0Nv
bnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsKICAgICB2b2lkIGJpbmRUZXh0dXJlKEdyYXBo
aWNzQ29udGV4dDNEKiwgVGV4dHVyZUFsbG9jYXRvciopOwogICAgIHZvaWQgZnJhbWVidWZmZXJU
ZXh0dXJlMkQoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9yKik7CisgICAgdm9p
ZCBhbGxvY2F0ZUJ1ZmZlcihHcmFwaGljc0NvbnRleHQzRCosIFRleHR1cmVBbGxvY2F0b3IqKTsK
KyAgICB2b2lkIGJpbmRCdWZmZXIoR3JhcGhpY3NDb250ZXh0M0QqLCBUZXh0dXJlQWxsb2NhdG9y
Kik7CiAKICAgICBJbnRTaXplIHNpemUoKSBjb25zdCB7IHJldHVybiBtX3NpemU7IH0KICAgICB1
bnNpZ25lZCBmb3JtYXQoKSBjb25zdCB7IHJldHVybiBtX2Zvcm1hdDsgfQogICAgIHVuc2lnbmVk
IHRleHR1cmVJZCgpIGNvbnN0IHsgcmV0dXJuIG1fdGV4dHVyZUlkOyB9CisgICAgdW5zaWduZWQg
YnVmZmVySWQoKSBjb25zdCB7IHJldHVybiBtX2J1ZmZlcklkOyB9CiAKIHByaXZhdGU6CiAgICAg
ZXhwbGljaXQgTWFuYWdlZFRleHR1cmUoVGV4dHVyZU1hbmFnZXIqKTsKQEAgLTcxLDYgKzc0LDcg
QEAgcHJpdmF0ZToKICAgICBJbnRTaXplIG1fc2l6ZTsKICAgICB1bnNpZ25lZCBtX2Zvcm1hdDsK
ICAgICB1bnNpZ25lZCBtX3RleHR1cmVJZDsKKyAgICB1bnNpZ25lZCBtX2J1ZmZlcklkOwogfTsK
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQaWN0
dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uNjQ4NjdmNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJU
ZXh0dXJlVXBkYXRlci5jcHAKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKKyNpZiBVU0UoU0tJ
QSkKKworI2luY2x1ZGUgIlBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBk
YXRlci5oIgorCisjaW5jbHVkZSAiRXh0ZW5zaW9uczNEQ2hyb21pdW0uaCIKKyNpbmNsdWRlICJM
YXllclBhaW50ZXJDaHJvbWl1bS5oIgorI2luY2x1ZGUgIlNrQ2FudmFzLmgiCisjaW5jbHVkZSAi
c2tpYS9leHQvcGxhdGZvcm1fY2FudmFzLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUGl4
ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpUZXh0
dXJlKFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlciogdGV4dHVy
ZVVwZGF0ZXIsIFBhc3NPd25QdHI8TWFuYWdlZFRleHR1cmU+IHRleHR1cmUpCisgICAgOiBDYW52
YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlKHRleHR1cmUpCisgICAgLCBtX21hcHBlZEJ1
ZmZlcigwKQorICAgICwgbV90ZXh0dXJlVXBkYXRlcih0ZXh0dXJlVXBkYXRlcikKK3sKK30KKwor
Ym9vbCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1
cmU6Om5lZWRQcmVwYXJlUmVjdCgpCit7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgUGl4
ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlOjpwcmVw
YXJlUmVjdChHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCwgVGV4dHVyZUFsbG9jYXRvciogYWxs
b2NhdG9yLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVj
dCkKK3sKKyAgICBBU1NFUlQoc291cmNlUmVjdC53aWR0aCgpID09IHRleHR1cmUoKS0+c2l6ZSgp
LndpZHRoKCkgJiYgc291cmNlUmVjdC5oZWlnaHQoKSA9PSB0ZXh0dXJlKCktPnNpemUoKS5oZWln
aHQoKSk7CisgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBUZXh0dXJlTWFuYWdlcjo6bWVtb3J5VXNl
Qnl0ZXModGV4dHVyZSgpLT5zaXplKCksIHRleHR1cmUoKS0+Zm9ybWF0KCkpOworICAgIEFTU0VS
VCghbV9tYXBwZWRCdWZmZXIpOworICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25z
ID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihjb250ZXh0LT5nZXRFeHRlbnNp
b25zKCkpOworICAgIG1fbWFwcGVkQnVmZmVyID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+KGV4dGVu
c2lvbnMtPm1hcEJ1ZmZlclN1YkRhdGFDSFJPTUlVTShFeHRlbnNpb25zM0RDaHJvbWl1bTo6UElY
RUxfVU5QQUNLX0JVRkZFUiwgMCwgYnVmZmVyU2l6ZSwgRXh0ZW5zaW9uczNEQ2hyb21pdW06OldS
SVRFX09OTFkpKTsKKyAgICB0ZXh0dXJlKCktPmFsbG9jYXRlVGV4dHVyZShjb250ZXh0LCBhbGxv
Y2F0b3IpOworICAgIHRleHR1cmUoKS0+YWxsb2NhdGVCdWZmZXIoY29udGV4dCwgYWxsb2NhdG9y
KTsKK30KKwordm9pZCBQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0
ZXI6OlRleHR1cmU6OnBhaW50Q29udGVudHNSZWN0KGNvbnN0IEludFJlY3QmIHNvdXJjZVJlY3Qp
Cit7CisgICAgQVNTRVJUKG1fbWFwcGVkQnVmZmVyKTsKKyAgICBPd25QdHI8U2tDYW52YXM+IGNh
bnZhcyA9IGFkb3B0UHRyKG5ldyBza2lhOjpQbGF0Zm9ybUNhbnZhcyhzb3VyY2VSZWN0LndpZHRo
KCksIHNvdXJjZVJlY3QuaGVpZ2h0KCksIGZhbHNlLCBtX21hcHBlZEJ1ZmZlcikpOworICAgIHRl
eHR1cmVVcGRhdGVyKCktPnBhaW50Q29udGVudHNSZWN0KGNhbnZhcy5nZXQoKSwgc291cmNlUmVj
dCk7Cit9CisKK3ZvaWQgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyOjpUZXh0dXJlOjp1cGRhdGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0LCBjb25z
dCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBkZXN0UmVjdCkKK3sKKyAgICBB
U1NFUlQodGV4dHVyZSgpLT50ZXh0dXJlSWQoKSk7CisgICAgY29udGV4dC0+YmluZFRleHR1cmUo
R3JhcGhpY3NDb250ZXh0M0Q6OlRFWFRVUkVfMkQsIHRleHR1cmUoKS0+dGV4dHVyZUlkKCkpOwor
ICAgIEFTU0VSVCh0ZXh0dXJlKCktPmJ1ZmZlcklkKCkpOworICAgIGNvbnRleHQtPmJpbmRCdWZm
ZXIoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFDS19CVUZGRVIsIHRleHR1cmUoKS0+
YnVmZmVySWQoKSk7CisgICAgQVNTRVJUKG1fbWFwcGVkQnVmZmVyKTsKKyAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9ucyA9IHN0YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVt
Kj4oY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKKyAgICBleHRlbnNpb25zLT51bm1hcEJ1ZmZl
clN1YkRhdGFDSFJPTUlVTShtX21hcHBlZEJ1ZmZlcik7CisgICAgbV9tYXBwZWRCdWZmZXIgPSAw
OworICAgIGNvbnRleHQtPnRleEltYWdlMkRSZXNvdXJjZVNhZmUoR3JhcGhpY3NDb250ZXh0M0Q6
OlRFWFRVUkVfMkQsIDAsIHRleHR1cmUoKS0+Zm9ybWF0KCksIGRlc3RSZWN0LndpZHRoKCksIGRl
c3RSZWN0LmhlaWdodCgpLCAwLCB0ZXh0dXJlKCktPmZvcm1hdCgpLCBHcmFwaGljc0NvbnRleHQz
RDo6VU5TSUdORURfQllURSk7CisgICAgY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RD
aHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgMCk7Cit9CisKK1Bhc3NSZWZQdHI8UGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyPiBQaXhlbEJ1ZmZlclNrUGlj
dHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZShQYXNzT3duUHRyPExheWVyUGFp
bnRlckNocm9taXVtPiBwYWludGVyKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgUGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKHBhaW50ZXIpKTsKK30KKwor
UGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpQaXhlbEJ1ZmZl
clNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50
ZXJDaHJvbWl1bT4gcGFpbnRlcikKKyAgICA6IFNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVw
ZGF0ZXIocGFpbnRlcikKK3sKK30KKworUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRl
eHR1cmVVcGRhdGVyOjp+UGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKCkKK3sKK30KKworUGFzc093blB0cjxMYXllclRleHR1cmVVcGRhdGVyOjpUZXh0dXJlPiBQ
aXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI6OmNyZWF0ZVRleHR1
cmUoVGV4dHVyZU1hbmFnZXIqIG1hbmFnZXIpCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBU
ZXh0dXJlKHRoaXMsIE1hbmFnZWRUZXh0dXJlOjpjcmVhdGUobWFuYWdlcikpKTsKK30KKworTGF5
ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0IFBpeGVsQnVmZmVyU2tQaWN0dXJl
Q2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcjo6c2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRl
eHR1cmVGb3JtYXQpCit7CisgICAgLy8gVGhlIGNvbXBvbmVudCBvcmRlciBtYXkgYmUgYmdyYSBp
ZiB3ZSB1cGxvYWRlZCBiZ3JhIHBpeGVscyB0byByZ2JhIHRleHR1cmVzLgorICAgIHJldHVybiBQ
bGF0Zm9ybUNvbG9yOjpzYW1lQ29tcG9uZW50T3JkZXIodGV4dHVyZUZvcm1hdCkgPworICAgICAg
ICAgICAgTGF5ZXJUZXh0dXJlVXBkYXRlcjo6U2FtcGxlZFRleGVsRm9ybWF0UkdCQSA6IExheWVy
VGV4dHVyZVVwZGF0ZXI6OlNhbXBsZWRUZXhlbEZvcm1hdEJHUkE7Cit9CisKK3ZvaWQgUGl4ZWxC
dWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyOjpwYWludENvbnRlbnRzUmVj
dChTa0NhbnZhcyogY2FudmFzLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0KQoreworICAgIC8v
IFRyYW5zbGF0ZSB0aGUgb3JpZ2luIG9mIGNvbnRlbnRSZWN0IHRvIHRoYXQgb2Ygc291cmNlUmVj
dC4KKyAgICBjYW52YXMtPnRyYW5zbGF0ZShjb250ZW50UmVjdCgpLngoKSAtIHNvdXJjZVJlY3Qu
eCgpLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRSZWN0KCkueSgpIC0gc291cmNlUmVj
dC55KCkpOworICAgIGRyYXdQaWN0dXJlKGNhbnZhcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJQSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1BpeGVsQnVmZmVyU2tQ
aWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLmJhY2YzM2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9QaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVy
VGV4dHVyZVVwZGF0ZXIuaApAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaWZuZGVmIFBpeGVs
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisjZGVmaW5lIFBpeGVs
QnVmZmVyU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlcl9oCisKKyNpZiBVU0UoQUND
RUxFUkFURURfQ09NUE9TSVRJTkcpCisjaWYgVVNFKFNLSUEpCisKKyNpbmNsdWRlICJQbGF0Zm9y
bUNvbG9yLmgiCisjaW5jbHVkZSAiU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFBpeGVsQnVmZmVyU2tQaWN0dXJlQ2Fu
dmFzTGF5ZXJUZXh0dXJlVXBkYXRlciA6IHB1YmxpYyBTa1BpY3R1cmVDYW52YXNMYXllclRleHR1
cmVVcGRhdGVyIHsKK3B1YmxpYzoKKyAgICBjbGFzcyBUZXh0dXJlIDogcHVibGljIENhbnZhc0xh
eWVyVGV4dHVyZVVwZGF0ZXI6OlRleHR1cmUgeworICAgIHB1YmxpYzoKKyAgICAgICAgVGV4dHVy
ZShQaXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIqLCBQYXNzT3du
UHRyPE1hbmFnZWRUZXh0dXJlPik7CisKKyAgICAgICAgdmlydHVhbCBib29sIG5lZWRQcmVwYXJl
UmVjdCgpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcHJlcGFyZVJlY3QoR3JhcGhpY3NDb250ZXh0
M0QqLCBUZXh0dXJlQWxsb2NhdG9yKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3Qg
SW50UmVjdCYgZGVzdFJlY3QpOworICAgICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50c1Jl
Y3QoY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVSZWN0KEdyYXBoaWNzQ29udGV4dDNEKiwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgZGVzdFJlY3QpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgUGl4ZWxCdWZm
ZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKiB0ZXh0dXJlVXBkYXRlcigpIHsg
cmV0dXJuIG1fdGV4dHVyZVVwZGF0ZXI7IH0KKworICAgICAgICB1aW50OF90KiBtX21hcHBlZEJ1
ZmZlcjsKKyAgICAgICAgUGl4ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRh
dGVyKiBtX3RleHR1cmVVcGRhdGVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQ
aXhlbEJ1ZmZlclNrUGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXI+IGNyZWF0ZShQYXNz
T3duUHRyPExheWVyUGFpbnRlckNocm9taXVtPik7CisgICAgdmlydHVhbCB+UGl4ZWxCdWZmZXJT
a1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyKCk7CisKKyAgICB2aXJ0dWFsIFBhc3NP
d25QdHI8TGF5ZXJUZXh0dXJlVXBkYXRlcjo6VGV4dHVyZT4gY3JlYXRlVGV4dHVyZShUZXh0dXJl
TWFuYWdlciopOworICAgIHZpcnR1YWwgT3JpZW50YXRpb24gb3JpZW50YXRpb24oKSB7IHJldHVy
biBMYXllclRleHR1cmVVcGRhdGVyOjpCb3R0b21VcE9yaWVudGF0aW9uOyB9CisgICAgdmlydHVh
bCBTYW1wbGVkVGV4ZWxGb3JtYXQgc2FtcGxlZFRleGVsRm9ybWF0KEdDM0RlbnVtIHRleHR1cmVG
b3JtYXQpOworICAgIHZvaWQgcGFpbnRDb250ZW50c1JlY3QoU2tDYW52YXMqLCBjb25zdCBJbnRS
ZWN0JiBzb3VyY2VSZWN0KTsKKworcHJpdmF0ZToKKyAgICBleHBsaWNpdCBQaXhlbEJ1ZmZlclNr
UGljdHVyZUNhbnZhc0xheWVyVGV4dHVyZVVwZGF0ZXIoUGFzc093blB0cjxMYXllclBhaW50ZXJD
aHJvbWl1bT4pOworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKyNlbmRpZiAvLyBVU0UoU0tJ
QSkKKyNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCisjZW5kaWYgLy8gUGl4
ZWxCdWZmZXJTa1BpY3R1cmVDYW52YXNMYXllclRleHR1cmVVcGRhdGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVN
YW5hZ2VyLmNwcAppbmRleCBjNjAwZDllLi43OGVhZjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFnZXIu
Y3BwCkBAIC0xNjMsNiArMTYzLDEyIEBAIHZvaWQgVGV4dHVyZU1hbmFnZXI6OmRlbGV0ZUV2aWN0
ZWRUZXh0dXJlcyhUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3IpCiAjZW5kaWYKICAgICAgICAg
ICAgICAgICBhbGxvY2F0b3ItPmRlbGV0ZVRleHR1cmUobV9ldmljdGVkVGV4dHVyZXNbaV0udGV4
dHVyZUlkLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5m
b3JtYXQpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1fZXZpY3RlZFRleHR1cmVz
W2ldLmJ1ZmZlcklkKSB7CisjaWZuZGVmIE5ERUJVRworICAgICAgICAgICAgICAgIEFTU0VSVCht
X2V2aWN0ZWRUZXh0dXJlc1tpXS5hbGxvY2F0b3IgPT0gYWxsb2NhdG9yKTsKKyNlbmRpZgorICAg
ICAgICAgICAgICAgIGFsbG9jYXRvci0+ZGVsZXRlQnVmZmVyKG1fZXZpY3RlZFRleHR1cmVzW2ld
LmJ1ZmZlcklkLCBtX2V2aWN0ZWRUZXh0dXJlc1tpXS5zaXplLCBtX2V2aWN0ZWRUZXh0dXJlc1tp
XS5mb3JtYXQpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIG1fZXZpY3Rl
ZFRleHR1cmVzLmNsZWFyKCk7CkBAIC0xODUsNiArMTkxLDcgQEAgdm9pZCBUZXh0dXJlTWFuYWdl
cjo6cmVtb3ZlVGV4dHVyZShUZXh0dXJlVG9rZW4gdG9rZW4sIFRleHR1cmVJbmZvIGluZm8pCiAg
ICAgbV90ZXh0dXJlTFJVU2V0LnJlbW92ZSh0b2tlbik7CiAgICAgRXZpY3Rpb25FbnRyeSBlbnRy
eTsKICAgICBlbnRyeS50ZXh0dXJlSWQgPSBpbmZvLnRleHR1cmVJZDsKKyAgICBlbnRyeS5idWZm
ZXJJZCA9IGluZm8uYnVmZmVySWQ7CiAgICAgZW50cnkuc2l6ZSA9IGluZm8uc2l6ZTsKICAgICBl
bnRyeS5mb3JtYXQgPSBpbmZvLmZvcm1hdDsKICNpZm5kZWYgTkRFQlVHCkBAIC0yMDgsNiArMjE1
LDIxIEBAIHVuc2lnbmVkIFRleHR1cmVNYW5hZ2VyOjphbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFs
bG9jYXRvciogYWxsb2NhdG9yLCBUZXh0dXJlVG9rCiAgICAgcmV0dXJuIHRleHR1cmVJZDsKIH0K
IAordW5zaWduZWQgVGV4dHVyZU1hbmFnZXI6OmFsbG9jYXRlQnVmZmVyKFRleHR1cmVBbGxvY2F0
b3IqIGFsbG9jYXRvciwgVGV4dHVyZVRva2VuIHRva2VuKQoreworICAgIFRleHR1cmVNYXA6Oml0
ZXJhdG9yIGl0ID0gbV90ZXh0dXJlcy5maW5kKHRva2VuKTsKKyAgICBBU1NFUlQoaXQgIT0gbV90
ZXh0dXJlcy5lbmQoKSk7CisgICAgVGV4dHVyZUluZm8qIGluZm8gPSAmaXQuZ2V0KCktPnNlY29u
ZDsKKyAgICBBU1NFUlQoaW5mby0+aXNQcm90ZWN0ZWQpOworCisgICAgdW5zaWduZWQgYnVmZmVy
SWQgPSBhbGxvY2F0b3ItPmNyZWF0ZUJ1ZmZlcihpbmZvLT5zaXplLCBpbmZvLT5mb3JtYXQpOwor
ICAgIGluZm8tPmJ1ZmZlcklkID0gYnVmZmVySWQ7CisjaWZuZGVmIE5ERUJVRworICAgIGluZm8t
PmFsbG9jYXRvciA9IGFsbG9jYXRvcjsKKyNlbmRpZgorICAgIHJldHVybiBidWZmZXJJZDsKK30K
KwogYm9vbCBUZXh0dXJlTWFuYWdlcjo6cmVxdWVzdFRleHR1cmUoVGV4dHVyZVRva2VuIHRva2Vu
LCBJbnRTaXplIHNpemUsIHVuc2lnbmVkIGZvcm1hdCkKIHsKICAgICBpZiAoc2l6ZS53aWR0aCgp
ID4gbV9tYXhUZXh0dXJlU2l6ZSB8fCBzaXplLmhlaWdodCgpID4gbV9tYXhUZXh0dXJlU2l6ZSkK
QEAgLTIzMSw2ICsyNTMsNyBAQCBib29sIFRleHR1cmVNYW5hZ2VyOjpyZXF1ZXN0VGV4dHVyZShU
ZXh0dXJlVG9rZW4gdG9rZW4sIEludFNpemUgc2l6ZSwgdW5zaWduZWQgZgogICAgIGluZm8uc2l6
ZSA9IHNpemU7CiAgICAgaW5mby5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgaW5mby50ZXh0dXJlSWQg
PSAwOworICAgIGluZm8uYnVmZmVySWQgPSAwOwogICAgIGluZm8uaXNQcm90ZWN0ZWQgPSB0cnVl
OwogI2lmbmRlZiBOREVCVUcKICAgICBpbmZvLmFsbG9jYXRvciA9IDA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGV4dHVyZU1hbmFn
ZXIuaAppbmRleCBmMzI3YjRjLi43NjgwN2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UZXh0dXJlTWFuYWdlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RleHR1cmVNYW5hZ2VyLmgKQEAgLTQy
LDYgKzQyLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlVGV4dHVyZShj
b25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRl
bGV0ZVRleHR1cmUodW5zaWduZWQgdGV4dHVyZSwgY29uc3QgSW50U2l6ZSYsIEdDM0RlbnVtKSA9
IDA7CiAKKyAgICB2aXJ0dWFsIHVuc2lnbmVkIGNyZWF0ZUJ1ZmZlcihjb25zdCBJbnRTaXplJiwg
R0MzRGVudW0gZm9ybWF0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRlbGV0ZUJ1ZmZlcih1bnNp
Z25lZCB0ZXh0dXJlLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0pID0gMDsKKwogcHJvdGVjdGVk
OgogICAgIHZpcnR1YWwgflRleHR1cmVBbGxvY2F0b3IoKSB7IH0KIH07CkBAIC03Nyw2ICs4MCw3
IEBAIHB1YmxpYzoKICAgICBib29sIGlzUHJvdGVjdGVkKFRleHR1cmVUb2tlbik7CiAKICAgICB1
bnNpZ25lZCBhbGxvY2F0ZVRleHR1cmUoVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVUb2tlbik7
CisgICAgdW5zaWduZWQgYWxsb2NhdGVCdWZmZXIoVGV4dHVyZUFsbG9jYXRvciosIFRleHR1cmVU
b2tlbik7CiAgICAgdm9pZCBkZWxldGVFdmljdGVkVGV4dHVyZXMoVGV4dHVyZUFsbG9jYXRvciop
OwogCiAgICAgdm9pZCBldmljdEFuZERlbGV0ZUFsbFRleHR1cmVzKFRleHR1cmVBbGxvY2F0b3Iq
KTsKQEAgLTkxLDYgKzk1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgSW50U2l6ZSBzaXplOwogICAg
ICAgICBHQzNEZW51bSBmb3JtYXQ7CiAgICAgICAgIHVuc2lnbmVkIHRleHR1cmVJZDsKKyAgICAg
ICAgdW5zaWduZWQgYnVmZmVySWQ7CiAgICAgICAgIGJvb2wgaXNQcm90ZWN0ZWQ7CiAjaWZuZGVm
IE5ERUJVRwogICAgICAgICBUZXh0dXJlQWxsb2NhdG9yKiBhbGxvY2F0b3I7CkBAIC0xMTEsNiAr
MTE2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0cnVjdCBFdmljdGlvbkVudHJ5IHsKICAgICAgICAg
dW5zaWduZWQgdGV4dHVyZUlkOworICAgICAgICB1bnNpZ25lZCBidWZmZXJJZDsKICAgICAgICAg
SW50U2l6ZSBzaXplOwogICAgICAgICBHQzNEZW51bSBmb3JtYXQ7CiAjaWZuZGVmIE5ERUJVRwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGls
ZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggNTNiNmZkYi4uODMyOGExNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRM
YXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC0yODgsNyArMjg4LDggQEAgdm9pZCBU
aWxlZExheWVyQ2hyb21pdW06OmludmFsaWRhdGVSZWN0KGNvbnN0IEludFJlY3QmIGNvbnRlbnRS
ZWN0KQogICAgICAgICAgICAgaWYgKCF0aWxlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwog
ICAgICAgICAgICAgSW50UmVjdCBib3VuZCA9IG1fdGlsZXItPnRpbGVMYXllclJlY3QodGlsZSk7
Ci0gICAgICAgICAgICBib3VuZC5pbnRlcnNlY3QobGF5ZXJSZWN0KTsKKyAgICAgICAgICAgIC8v
IFRPRE8ocmV2ZW1hbik6IFBpeGVsIGJ1ZmZlciB0ZXh0dXJlIHVwZGF0ZXIgcmVxdWlyZXMgZnVs
bCB0aWxlIHVwZGF0ZXMuCisgICAgICAgICAgICAvLyBib3VuZC5pbnRlcnNlY3QobGF5ZXJSZWN0
KTsKICAgICAgICAgICAgIHRpbGUtPm1fZGlydHlMYXllclJlY3QudW5pdGUoYm91bmQpOwogICAg
ICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5jcHAK
aW5kZXggMmIwNWRlZi4uOGIxMGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UcmFja2luZ1RleHR1cmVB
bGxvY2F0b3IuY3BwCkBAIC0yNiw2ICsyNiw3IEBACiAKICNpbmNsdWRlICJUcmFja2luZ1RleHR1
cmVBbGxvY2F0b3IuaCIKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRENocm9taXVtLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIiAvLyBG
b3IgdGhlIEdMQygpIG1hY3JvCiAKQEAgLTY1LDUgKzY2LDIwIEBAIHZvaWQgVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yOjpkZWxldGVUZXh0dXJlKHVuc2lnbmVkIHRleHR1cmVJZCwgY29uc3QgSW50
U2l6ZSYKICAgICBHTEMobV9jb250ZXh0LmdldCgpLCBtX2NvbnRleHQtPmRlbGV0ZVRleHR1cmUo
dGV4dHVyZUlkKSk7CiB9CiAKK3Vuc2lnbmVkIFRyYWNraW5nVGV4dHVyZUFsbG9jYXRvcjo6Y3Jl
YXRlQnVmZmVyKGNvbnN0IEludFNpemUmIHNpemUsIEdDM0RlbnVtIGZvcm1hdCkKK3sKKyAgICBz
aXplX3QgYnVmZmVyU2l6ZSA9IFRleHR1cmVNYW5hZ2VyOjptZW1vcnlVc2VCeXRlcyhzaXplLCBm
b3JtYXQpOworICAgIHVuc2lnbmVkIGJ1ZmZlcklkID0gMDsKKyAgICBHTEMobV9jb250ZXh0Lmdl
dCgpLCBidWZmZXJJZCA9IG1fY29udGV4dC0+Y3JlYXRlQnVmZmVyKCkpOworICAgIEdMQyhtX2Nv
bnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25zM0RDaHJvbWl1bTo6
UElYRUxfVU5QQUNLX0JVRkZFUiwgYnVmZmVySWQpKTsKKyAgICBHTEMobV9jb250ZXh0LmdldCgp
LCBtX2NvbnRleHQtPmJ1ZmZlckRhdGEoRXh0ZW5zaW9uczNEQ2hyb21pdW06OlBJWEVMX1VOUEFD
S19CVUZGRVIsIGJ1ZmZlclNpemUsIEdyYXBoaWNzQ29udGV4dDNEOjpTVFJFQU1fRFJBVykpOwor
ICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+YmluZEJ1ZmZlcihFeHRlbnNpb25z
M0RDaHJvbWl1bTo6UElYRUxfVU5QQUNLX0JVRkZFUiwgMCkpOworICAgIHJldHVybiBidWZmZXJJ
ZDsKIH0KIAordm9pZCBUcmFja2luZ1RleHR1cmVBbGxvY2F0b3I6OmRlbGV0ZUJ1ZmZlcih1bnNp
Z25lZCBidWZmZXJJZCwgY29uc3QgSW50U2l6ZSYgLyogc2l6ZSAqLywgR0MzRGVudW0gLyogZm9y
bWF0ICovKQoreworICAgIEdMQyhtX2NvbnRleHQuZ2V0KCksIG1fY29udGV4dC0+ZGVsZXRlQnVm
ZmVyKGJ1ZmZlcklkKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL1RyYWNraW5nVGV4dHVyZUFsbG9jYXRvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2Nh
dG9yLmgKaW5kZXggZTUwNGVlYS4uY2YwNDg5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0dXJlQWxsb2NhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVHJhY2tpbmdUZXh0
dXJlQWxsb2NhdG9yLmgKQEAgLTQzLDYgKzQzLDkgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdW5z
aWduZWQgY3JlYXRlVGV4dHVyZShjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9ybWF0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGVsZXRlVGV4dHVyZSh1bnNpZ25lZCB0ZXh0dXJlLCBjb25zdCBJbnRT
aXplJiwgR0MzRGVudW0gZm9ybWF0KTsKIAorICAgIHZpcnR1YWwgdW5zaWduZWQgY3JlYXRlQnVm
ZmVyKGNvbnN0IEludFNpemUmLCBHQzNEZW51bSBmb3JtYXQpOworICAgIHZpcnR1YWwgdm9pZCBk
ZWxldGVCdWZmZXIodW5zaWduZWQgYnVmZmVyLCBjb25zdCBJbnRTaXplJiwgR0MzRGVudW0gZm9y
bWF0KTsKKwogICAgIHNpemVfdCBjdXJyZW50TWVtb3J5VXNlQnl0ZXMoKSBjb25zdCB7IHJldHVy
biBtX2N1cnJlbnRNZW1vcnlVc2VCeXRlczsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0LmNwcAppbmRleCA1ODk5YmY2Li5iNWE5ZjRlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTEyOSw2ICsxMjksOCBAQCBib29sIENDTGF5ZXJUcmVlSG9z
dDo6aW5pdGlhbGl6ZSgpCiAKICAgICAvLyBVcGRhdGUgbV9zZXR0aW5ncyBiYXNlZCBvbiBjYXBh
YmlsaXRpZXMgdGhhdCB3ZSBnb3QgYmFjayBmcm9tIHRoZSByZW5kZXJlci4KICAgICBtX3NldHRp
bmdzLmFjY2VsZXJhdGVQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmlsaXRp
ZXMoKS51c2luZ0FjY2VsZXJhdGVkUGFpbnRpbmc7CisgICAgbV9zZXR0aW5ncy5waXhlbEJ1ZmZl
clBhaW50aW5nID0gbV9zZXR0aW5ncy5wZXJUaWxlUGFpbnRpbmcgPSB0cnVlOworICAgIG1fc2V0
dGluZ3MucGl4ZWxCdWZmZXJQYWludGluZyA9IG1fcHJveHktPmxheWVyUmVuZGVyZXJDYXBhYmls
aXRpZXMoKS51c2luZ01hcFN1YiA/IG1fc2V0dGluZ3MucGl4ZWxCdWZmZXJQYWludGluZyA6IGZh
bHNlOwogCiAgICAgbV9jb250ZW50c1RleHR1cmVNYW5hZ2VyID0gVGV4dHVyZU1hbmFnZXI6OmNy
ZWF0ZShUZXh0dXJlTWFuYWdlcjo6aGlnaExpbWl0Qnl0ZXMoKSwgbV9wcm94eS0+bGF5ZXJSZW5k
ZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICByZXR1cm4gdHJ1ZTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggZDU0NTQyNS4uZjk4NjFjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTc1LDcgKzc1LDggQEAgc3RydWN0IENDU2V0dGluZ3Mg
ewogICAgICAgICAgICAgLCBzaG93UGxhdGZvcm1MYXllclRyZWUoZmFsc2UpCiAgICAgICAgICAg
ICAsIHJlZnJlc2hSYXRlKDApCiAgICAgICAgICAgICAsIGRlbGF5VGV4dHVyZVVwZGF0ZXMoZmFs
c2UpCi0gICAgICAgICAgICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkgeyB9CisgICAgICAgICAg
ICAsIHBlclRpbGVQYWludGluZyhmYWxzZSkKKyAgICAgICAgICAgICwgcGl4ZWxCdWZmZXJQYWlu
dGluZyhmYWxzZSkgeyB9CiAKICAgICBib29sIGFjY2VsZXJhdGVQYWludGluZzsKICAgICBib29s
IGNvbXBvc2l0ZU9mZnNjcmVlbjsKQEAgLTg1LDYgKzg2LDcgQEAgc3RydWN0IENDU2V0dGluZ3Mg
ewogICAgIGRvdWJsZSByZWZyZXNoUmF0ZTsKICAgICBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXM7
CiAgICAgYm9vbCBwZXJUaWxlUGFpbnRpbmc7CisgICAgYm9vbCBwaXhlbEJ1ZmZlclBhaW50aW5n
OwogfTsKIAogLy8gUHJvdmlkZXMgaW5mb3JtYXRpb24gb24gYW4gSW1wbCdzIHJlbmRlcmluZyBj
YXBhYmlsaXRpZXMgYmFjayB0byB0aGUgQ0NMYXllclRyZWVIb3N0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCA2N2Q0MDA1Li5iMGY3NzhlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEzNyw2ICsx
MzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBj
b25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldFBlclRpbGVQYWludGluZyhib29sKSA9IDA7
CiAgICAgdmlydHVhbCBib29sIHBlclRpbGVQYWludGluZygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0UGl4ZWxCdWZmZXJQYWludGluZyhib29sKSA9IDA7CisgICAgdmlydHVhbCBi
b29sIHBpeGVsQnVmZmVyUGFpbnRpbmcoKSBjb25zdCA9IDA7CiAKIHByb3RlY3RlZDoKICAgICB+
V2ViU2V0dGluZ3MoKSB7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlNldHRpbmdzSW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuY3BwCmluZGV4IDkwNDU4MjguLjVjMGU0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtNTMsNiArNTMsNyBAQCBXZWJT
ZXR0aW5nc0ltcGw6OldlYlNldHRpbmdzSW1wbChTZXR0aW5ncyogc2V0dGluZ3MpCiAgICAgLCBt
X3VzZVRocmVhZGVkQ29tcG9zaXRvcihmYWxzZSkKICAgICAsIG1fZGVsYXlUZXh0dXJlVXBkYXRl
cyhmYWxzZSkKICAgICAsIG1fcGVyVGlsZVBhaW50aW5nKGZhbHNlKQorICAgICwgbV9waXhlbEJ1
ZmZlclBhaW50aW5nKGZhbHNlKQogCiB7CiAgICAgQVNTRVJUKHNldHRpbmdzKTsKQEAgLTQ3OSw0
ICs0ODAsOSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0UGVyVGlsZVBhaW50aW5nKGJvb2wg
ZW5hYmxlZCkKICAgICBtX3BlclRpbGVQYWludGluZyA9IGVuYWJsZWQ7CiB9CiAKK3ZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRQaXhlbEJ1ZmZlclBhaW50aW5nKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBtX3BpeGVsQnVmZmVyUGFpbnRpbmcgPSBlbmFibGVkOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5k
ZXggZjM2ZGNhNC4uODA3OGJjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
U2V0dGluZ3NJbXBsLmgKQEAgLTEyOSw2ICsxMjksOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGRlbGF5VGV4dHVyZVVwZGF0ZXMoKSBjb25zdCB7IHJldHVybiBtX2RlbGF5VGV4dHVyZVVw
ZGF0ZXM7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0UGVyVGlsZVBhaW50aW5nKGJvb2wpOwogICAg
IHZpcnR1YWwgYm9vbCBwZXJUaWxlUGFpbnRpbmcoKSBjb25zdCB7IHJldHVybiBtX3BlclRpbGVQ
YWludGluZzsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRQaXhlbEJ1ZmZlclBhaW50aW5nKGJvb2wp
OworICAgIHZpcnR1YWwgYm9vbCBwaXhlbEJ1ZmZlclBhaW50aW5nKCkgY29uc3QgeyByZXR1cm4g
bV9waXhlbEJ1ZmZlclBhaW50aW5nOyB9CiAKIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6U2V0dGlu
Z3MqIG1fc2V0dGluZ3M7CkBAIC0xMzgsNiArMTQwLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1f
dXNlVGhyZWFkZWRDb21wb3NpdG9yOwogICAgIGJvb2wgbV9kZWxheVRleHR1cmVVcGRhdGVzOwog
ICAgIGJvb2wgbV9wZXJUaWxlUGFpbnRpbmc7CisgICAgYm9vbCBtX3BpeGVsQnVmZmVyUGFpbnRp
bmc7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBhN2Q3NmJlLi40ZTBhZDhiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0yODQ4LDYgKzI4NDgsNyBAQCB2
b2lkIFdlYlZpZXdJbXBsOjpzZXRJc0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdBY3RpdmUoYm9vbCBh
Y3RpdmUpCiAKICAgICAgICAgY2NTZXR0aW5ncy5kZWxheVRleHR1cmVVcGRhdGVzID0gc2V0dGlu
Z3MoKS0+ZGVsYXlUZXh0dXJlVXBkYXRlcygpOwogICAgICAgICBjY1NldHRpbmdzLnBlclRpbGVQ
YWludGluZyA9IHNldHRpbmdzKCktPnBlclRpbGVQYWludGluZygpOworICAgICAgICBjY1NldHRp
bmdzLnBpeGVsQnVmZmVyUGFpbnRpbmcgPSBzZXR0aW5ncygpLT5waXhlbEJ1ZmZlclBhaW50aW5n
KCk7CiAKICAgICAgICAgbV9ub25Db21wb3NpdGVkQ29udGVudEhvc3QgPSBOb25Db21wb3NpdGVk
Q29udGVudEhvc3Q6OmNyZWF0ZShXZWJWaWV3SW1wbENvbnRlbnRQYWludGVyOjpjcmVhdGUodGhp
cykpOwogICAgICAgICBtX2xheWVyVHJlZUhvc3QgPSBDQ0xheWVyVHJlZUhvc3Q6OmNyZWF0ZSh0
aGlzLCBjY1NldHRpbmdzKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>