<?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>30200</bug_id>
          
          <creation_ts>2009-10-08 01:04:33 -0700</creation_ts>
          <short_desc>Move executeScript from FrameLoader to ScriptController</short_desc>
          <delta_ts>2009-10-14 23:08:31 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29947</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>153315</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-08 01:04:33 -0700</bug_when>
    <thetext>executeScript and executeIfJavaScriptURL are really about controlling scripts, not about loading pages.  Therefore, we should move them from FrameLoader to ScriptController!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153316</commentid>
    <comment_count>1</comment_count>
      <attachid>40856</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-08 01:14:33 -0700</bug_when>
    <thetext>Created attachment 40856
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153317</commentid>
    <comment_count>2</comment_count>
      <attachid>40857</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-08 01:16:10 -0700</bug_when>
    <thetext>Created attachment 40857
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153402</commentid>
    <comment_count>3</comment_count>
      <attachid>40857</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-08 09:32:29 -0700</bug_when>
    <thetext>Comment on attachment 40857
Patch v1

Can you first invent a x-platform ScriptController if your&apos;e going to add duplicate code?

ScriptController

And then ScriptControllerJSC and ScriptControllerV8 which inherit from it?

Or heck, you don&apos;t even need them to inherit.  Just add a new ScriptController.cpp at the root level which has these fixes, and makes sure both builds include it, no?

Unless this code is not copy/paste and I&apos;m mising something?

r- for adding copy/paste code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153433</commentid>
    <comment_count>4</comment_count>
      <attachid>40890</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-08 10:26:06 -0700</bug_when>
    <thetext>Created attachment 40890
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153593</commentid>
    <comment_count>5</comment_count>
      <attachid>40890</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-08 19:13:25 -0700</bug_when>
    <thetext>Comment on attachment 40890
Patch v1

ChangeLog is out of date.  ScriptControllerBase being a real class would be better, but this is OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153606</commentid>
    <comment_count>6</comment_count>
      <attachid>40890</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-10-08 21:47:44 -0700</bug_when>
    <thetext>Comment on attachment 40890
Patch v1

Rejecting patch 40890 from commit-queue.

Patch https://bugs.webkit.org/attachment.cgi?id=40890 from bug 30200 failed to download and apply.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153609</commentid>
    <comment_count>7</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-10-08 22:09:03 -0700</bug_when>
    <thetext>Committed r49372: &lt;http://trac.webkit.org/changeset/49372&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>153762</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-10-09 14:33:30 -0700</bug_when>
    <thetext>XCode project simply went out of date.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40856</attachid>
            <date>2009-10-08 01:14:33 -0700</date>
            <delta_ts>2009-10-08 01:16:05 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30200-20091008011432.patch</filename>
            <type>text/plain</type>
            <size>25972</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmNhZDE2MS4uMDIyYTZlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAwOS0xMC0wOCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgZXhlY3V0ZVNjcmlwdCBmcm9tIEZyYW1lTG9hZGVyIHRvIFNjcmlw
dENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMwMjAwCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBoYXZlIHZpcnR1YWxseSBubyBpbnRl
cmFjdGlvbiB3aXRoIEZyYW1lTG9hZGVyLiAgVGhleQorICAgICAgICByZWFsbHkgc2VlbSBsaWtl
IHRoZXkgb3VnaHQgdG8gYmVsb25nIHRvIFNjcmlwdENvbnRyb2xsZXIuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OlNjcmlwdENvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJM
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICog
ZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcyk6CisgICAgICAgICog
ZG9tL1hNTFRva2VuaXplclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6
cGFyc2VFbmRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNoYW5nZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxl
Y3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpyZXBsYWNlRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKIDIwMDktMTAtMDcgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2Vi
Q29yZS5iYXNlLmV4cAppbmRleCAyNGQ4MzU1Li5mOWUxNTZlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC0xNTYs
NyArMTU2LDYgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExY29tcGxldGVVUkxFUktOU182
U3RyaW5nRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExbG9hZEFyY2hpdmVFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfN0FyY2hpdmVFRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXNldEVu
Y29kaW5nRVJLTlNfNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTJzaG91bGRS
ZWxvYWRFUktOU180S1VSTEVTM18KLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxM2V4ZWN1dGVT
Y3JpcHRFUktOU182U3RyaW5nRWIKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFjaENo
aWxkcmVuRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHNjcm9sbFRvQW5jaG9yRVJLTlNf
NEtVUkxFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRzdG9wQWxsTG9hZGVyc0VOU18xNERh
dGFiYXNlUG9saWN5RQpAQCAtMzc2LDYgKzM3NSw3IEBAIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlv
bkFjdGlvbkMxRVJLTlNfNEtVUkxFTlNfMTNGcmFtZUxvYWRUeXBlRWIKIF9fWk43V2ViQ29yZTE2
TmF2aWdhdGlvbkFjdGlvbkMxRVJLTlNfNEtVUkxFTlNfMTROYXZpZ2F0aW9uVHlwZUUKIF9fWk43
V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRXYKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJv
bGxlcjEwaW5pdFNjcmlwdEV2CitfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxM2V4ZWN1
dGVTY3JpcHRFUktOU182U3RyaW5nRWIKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE4
d2luZG93U2NyaXB0T2JqZWN0RXYKIF9fWk43V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbkMxRVBL
TlNfNVJhbmdlRU5TXzlFQWZmaW5pdHlFCiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRVMzXwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwCmluZGV4IDllNjRiY2UuLjkzMTU1ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbklu
Q29udGV4dCh3aW5kb3csIHdpbmRvdy0+c2hlbGwoKSk7CiAgICAgICAgIERvY3VtZW50Ojp1cGRh
dGVTdHlsZUZvckFsbERvY3VtZW50cygpOwogICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPmV4ZWN1dGVTY3JpcHQobV9jb2RlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5l
eGVjdXRlU2NyaXB0KG1fY29kZSk7CiAKICAgICBmcmFtZS0+c2NyaXB0KCktPnNldFByb2Nlc3Np
bmdUaW1lckNhbGxiYWNrKGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IGRmYTE2MDIuLjY0NzM0ZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQCBTY3JpcHRDb250cm9sbGVyOjpT
Y3JpcHRDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAg
LCBtX2hhbmRsZXJMaW5lTnVtYmVyKDApCiAgICAgLCBtX3NvdXJjZVVSTCgwKQorICAgICwgbV9p
bkV4ZWN1dGVTY3JpcHQoZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGZh
bHNlKQogICAgICwgbV9wYXVzZWQoZmFsc2UpCiAgICAgLCBtX2FsbG93UG9wdXBzRnJvbVBsdWdp
bihmYWxzZSkKQEAgLTgwLDExICs4MSw2MiBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29u
dHJvbGxlcigpCiAgICAgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogfQogCitT
Y3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3Jp
cHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUgPyBLVVJMKCkgOiBt
X2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpKTsKK30KKworU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQor
eworICAgIGlmICghaXNFbmFibGVkKCkgfHwgaXNQYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKCk7CisKKyAgICBib29sIHdhc0luRXhlY3V0ZVNjcmlwdCA9IG1faW5FeGVjdXRl
U2NyaXB0OworICAgIG1faW5FeGVjdXRlU2NyaXB0ID0gdHJ1ZTsKKworICAgIFNjcmlwdFZhbHVl
IHJlc3VsdCA9IGV2YWx1YXRlKHNvdXJjZUNvZGUpOworCisgICAgaWYgKCF3YXNJbkV4ZWN1dGVT
Y3JpcHQpIHsKKyAgICAgICAgbV9pbkV4ZWN1dGVTY3JpcHQgPSBmYWxzZTsKKyAgICAgICAgRG9j
dW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0
VVJMKGNvbnN0IEtVUkwmIHVybCwgYm9vbCB1c2VyR2VzdHVyZSwgYm9vbCByZXBsYWNlRG9jdW1l
bnQpCit7CisgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAobV9mcmFtZS0+cGFnZSgpICYmICFtX2ZyYW1lLT5wYWdlKCkt
PmphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNvbnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIp
IC0gMTsKKworICAgIFN0cmluZyBzY3JpcHQgPSB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKGphdmFz
Y3JpcHRTY2hlbWVMZW5ndGgpOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdDsKKyAgICBpZiAoeHNz
QXVkaXRvcigpLT5jYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc2NyaXB0KSkKKyAgICAgICAgcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc2NyaXB0KSwgdXNl
ckdlc3R1cmUpOworCisgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdC5n
ZXRTdHJpbmcoc2NyaXB0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGFsd2F5cyByZXBsYWNlIHRoZSBkb2N1bWVudCwgYnV0IGRvaW5nIHNv
CisgICAgLy8gICAgICAgIHN5bmNocm9ub3VzbHkgY2FuIGNhdXNlIGNyYXNoZXM6CisgICAgLy8g
ICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzgyCisgICAg
aWYgKHJlcGxhY2VEb2N1bWVudCkgCisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5yZXBsYWNl
RG9jdW1lbnQoc2NyaXB0UmVzdWx0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBTY3JpcHRW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKSAKIHsKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBzb3Vy
Y2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNv
ZGUucHJvdmlkZXIoKS0+dXJsKCk7Ci0gICAgCisKICAgICBpZiAoIW1fWFNTQXVkaXRvci0+Y2Fu
RXZhbHVhdGUoc291cmNlQ29kZS5zb3VyY2UoKSkpIHsKICAgICAgICAgLy8gVGhpcyBzY3JpcHQg
aXMgbm90IHNhZmUgdG8gYmUgZXZhbHVhdGVkLgogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCA1NmU4ZjBjLi5iZDRiNjVl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtODAsNiArODAsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93aW5kb3dTaGVsbC0+d2luZG93KCk7CiAgICAg
fQogCisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
Jik7CisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCisgICAgYm9vbCBleGVjdXRlSWZKYXZhU2Ny
aXB0VVJMKGNvbnN0IEtVUkwmLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UsIGJvb2wgcmVwbGFj
ZURvY3VtZW50ID0gdHJ1ZSk7CisKICAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJik7CiAgICAgdm9pZCBldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh1bnNpZ25l
ZCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0U291cmNlQ29kZT4mKTsKIApAQCAtMTU1LDYg
KzE2MSw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1faGFuZGxlckxpbmVOdW1iZXI7CiAgICAgY29u
c3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAorICAgIGJvb2wgbV9pbkV4ZWN1dGVTY3JpcHQ7CisK
ICAgICBib29sIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2s7CiAgICAgYm9vbCBtX3BhdXNlZDsK
ICAgICBib29sIG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggZWZlZmVkMC4uOWIwMjRkNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6Z2NVbnByb3RlY3RKU1dyYXBwZXIodm9pZCogZG9tT2JqZWN0KQogU2NyaXB0
Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1l
KGZyYW1lKQogICAgICwgbV9zb3VyY2VVUkwoMCkKKyAgICAsIG1faW5FeGVjdXRlU2NyaXB0KGZh
bHNlKQogICAgICwgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayhmYWxzZSkKICAgICAsIG1fcGF1
c2VkKGZhbHNlKQogICAgICwgbV9wcm94eShuZXcgVjhQcm94eShmcmFtZSkpCkBAIC0xOTQsNiAr
MTk1LDU3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbk5ld0NvbnRleHQoY29u
c3QgVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+JiBzb3VyCiAgICAgbV9wcm94eS0+ZXZhbHVhdGVJ
bk5ld0NvbnRleHQoc291cmNlcywgZXh0ZW5zaW9uR3JvdXApOwogfQogCitTY3JpcHRWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291
cmNlQ29kZShzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUgPyBLVVJMKCkgOiBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+dXJsKCkpKTsKK30KKworU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQoreworICAgIGlmICgh
aXNFbmFibGVkKCkgfHwgaXNQYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7
CisKKyAgICBib29sIHdhc0luRXhlY3V0ZVNjcmlwdCA9IG1faW5FeGVjdXRlU2NyaXB0OworICAg
IG1faW5FeGVjdXRlU2NyaXB0ID0gdHJ1ZTsKKworICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV2
YWx1YXRlKHNvdXJjZUNvZGUpOworCisgICAgaWYgKCF3YXNJbkV4ZWN1dGVTY3JpcHQpIHsKKyAg
ICAgICAgbV9pbkV4ZWN1dGVTY3JpcHQgPSBmYWxzZTsKKyAgICAgICAgRG9jdW1lbnQ6OnVwZGF0
ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtV
UkwmIHVybCwgYm9vbCB1c2VyR2VzdHVyZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQpCit7CisgICAg
aWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAobV9mcmFtZS0+cGFnZSgpICYmICFtX2ZyYW1lLT5wYWdlKCktPmphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IGludCBq
YXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKKworICAg
IFN0cmluZyBzY3JpcHQgPSB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVM
ZW5ndGgpOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdDsKKyAgICBpZiAoeHNzQXVkaXRvcigpLT5j
YW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc2NyaXB0KSkKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc2NyaXB0KSwgdXNlckdlc3R1cmUpOwor
CisgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdC5nZXRTdHJpbmcoc2Ny
aXB0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGFsd2F5cyByZXBsYWNlIHRoZSBkb2N1bWVudCwgYnV0IGRvaW5nIHNvCisgICAgLy8gICAg
ICAgIHN5bmNocm9ub3VzbHkgY2FuIGNhdXNlIGNyYXNoZXM6CisgICAgLy8gICAgICAgIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzgyCisgICAgaWYgKHJlcGxhY2VE
b2N1bWVudCkgCisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5yZXBsYWNlRG9jdW1lbnQoc2Ny
aXB0UmVzdWx0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiAvLyBFdmFsdWF0ZSBhIHNjcmlw
dCBmaWxlIGluIHRoZSBlbnZpcm9ubWVudCBvZiB0aGlzIHByb3h5LgogU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOTY1OGIwNS4u
Y2QwMDcxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTU5LDYg
KzU5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gb3IgdGhpcyBhY2Nlc3Nv
ciBzaG91bGQgYmUgbWFkZSBKU1Byb3h5KgogICAgICAgICBWOFByb3h5KiBwcm94eSgpIHsgcmV0
dXJuIG1fcHJveHkuZ2V0KCk7IH0KIAorICAgICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNj
cmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2Up
OworCisgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQg
VVJMLgorICAgICAgICBib29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYsIGJv
b2wgdXNlckdlc3R1cmUgPSBmYWxzZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQgPSB0cnVlKTsKKwog
ICAgICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBmaWxlIGluIHRoZSBlbnZpcm9ubWVudCBvZiB0
aGlzIHByb3h5LgogICAgICAgICAvLyBJZiBzdWNjZWVkZWQsICdzdWNjJyBpcyBzZXQgdG8gdHJ1
ZSBhbmQgcmVzdWx0IGlzIHJldHVybmVkCiAgICAgICAgIC8vIGFzIGEgc3RyaW5nLgpAQCAtMTYy
LDYgKzE2OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7
CiAgICAgICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VVUkw7CiAKKyAgICAgICAgYm9vbCBtX2lu
RXhlY3V0ZVNjcmlwdDsKKwogICAgICAgICBib29sIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2s7
CiAgICAgICAgIGJvb2wgbV9wYXVzZWQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTFRv
a2VuaXplci5jcHAgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCmluZGV4IDRkMDYzNDMu
LjYyNWE5ZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAKKysrIGIv
V2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgWE1M
VG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2Up
CiAgICAgaWYgKGVycm9yT2NjdXJyZWQpIAogICAgICAgICBzY3JpcHRFbGVtZW50LT5kaXNwYXRj
aEVycm9yRXZlbnQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5sb2Fk
ZXIoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKKyAgICAgICAgbV92aWV3LT5mcmFtZSgp
LT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKICAgICAgICAgc2NyaXB0RWxl
bWVudC0+ZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGli
eG1sMi5jcHAKaW5kZXggZTRhOThkNS4uMjk0MjI0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
WE1MVG9rZW5pemVyTGlieG1sMi5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGli
eG1sMi5jcHAKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZW5kRWxlbWVu
dE5zKCkKICAgICAgICAgICAgIH0gZWxzZSAKICAgICAgICAgICAgICAgICBtX3NjcmlwdEVsZW1l
bnQgPSAwOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdmlldy0+ZnJhbWUoKS0+bG9h
ZGVyKCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LT5zY3Jp
cHRDb250ZW50KCksIG1fZG9jLT51cmwoKSwgbV9zY3JpcHRTdGFydExpbmUpKTsKKyAgICAgICAg
ICAgIG1fdmlldy0+ZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNl
Q29kZShzY3JpcHRFbGVtZW50LT5zY3JpcHRDb250ZW50KCksIG1fZG9jLT51cmwoKSwgbV9zY3Jp
cHRTdGFydExpbmUpKTsKICAgICB9CiAgICAgbV9yZXF1ZXN0aW5nU2NyaXB0ID0gZmFsc2U7CiAg
ICAgc2V0Q3VycmVudE5vZGUocGFyZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L1hNTFRva2VuaXplclF0LmNwcCBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplclF0LmNwcAppbmRl
eCAwNDQwNWQ2Li5iYmJmMjU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJR
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyUXQuY3BwCkBAIC02MjEsNyArNjIx
LDcgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OnBhcnNlRW5kRWxlbWVudCgpCiAgICAgICAgICAgICB9
IGVsc2UgCiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFbGVtZW50ID0gMDsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBtX3ZpZXctPmZyYW1lKCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC0+c2NyaXB0Q29udGVudCgpLCBtX2RvYy0+
dXJsKCksIG1fc2NyaXB0U3RhcnRMaW5lKSk7CisgICAgICAgICAgICBtX3ZpZXctPmZyYW1lKCkt
PnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC0+
c2NyaXB0Q29udGVudCgpLCBtX2RvYy0+dXJsKCksIG1fc2NyaXB0U3RhcnRMaW5lKSk7CiAgICAg
fQogICAgIG1fcmVxdWVzdGluZ1NjcmlwdCA9IGZhbHNlOwogICAgIHNldEN1cnJlbnROb2RlKHBh
cmVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKaW5kZXggMWEyZDI3Ni4uNjRmMGE2NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MVG9rZW5pemVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIEhUTUxUb2tlbml6ZXI6
OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNjcmlwdEV4ZWN1dGlvbihjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyCiAjZW5kaWYKIAogICAgIG1fc3RhdGUgPSBzdGF0ZTsKLSAgICBtX2RvYy0+ZnJh
bWUoKS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7CisgICAgbV9kb2MtPmZy
YW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOwogICAgIHN0YXRlID0g
bV9zdGF0ZTsKIAogICAgIHN0YXRlLnNldEFsbG93WWllbGQodHJ1ZSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggODNkYTkxZC4uMzdhNTg0MyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MzE1LDcgKzMxNSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IEtV
UkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgYm9vbCBsCiAKICAgICBSZXNvdXJjZVJl
cXVlc3QgcmVxdWVzdCh1cmwsIHJlZmVycmVyLCByZWZyZXNoID8gUmVsb2FkSWdub3JpbmdDYWNo
ZURhdGEgOiBVc2VQcm90b2NvbENhY2hlUG9saWN5KTsKICAgICAKLSAgICBpZiAoZXhlY3V0ZUlm
SmF2YVNjcmlwdFVSTChyZXF1ZXN0LnVybCgpLCB1c2VyR2VzdHVyZSkpCisgICAgaWYgKG1fZnJh
bWUtPnNjcmlwdCgpLT5leGVjdXRlSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3QudXJsKCksIHVzZXJH
ZXN0dXJlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdXJsU2VsZWN0ZWQocmVxdWVzdCwgIl9z
ZWxmIiwgMCwgbG9ja0hpc3RvcnksIGxvY2tCYWNrRm9yd2FyZExpc3QsIHVzZXJHZXN0dXJlKTsK
QEAgLTMyMyw3ICszMjMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihjb25z
dCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbAogCiB2b2lkIEZyYW1l
TG9hZGVyOjp1cmxTZWxlY3RlZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFN0cmluZyYgcGFzc2VkVGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiB0cmlnZ2VyaW5nRXZlbnQs
IGJvb2wgbG9ja0hpc3RvcnksIGJvb2wgbG9ja0JhY2tGb3J3YXJkTGlzdCwgYm9vbCB1c2VyR2Vz
dHVyZSkKIHsKLSAgICBpZiAoZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChyZXF1ZXN0LnVybCgpLCB1
c2VyR2VzdHVyZSwgZmFsc2UpKQorICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZUlm
SmF2YVNjcmlwdFVSTChyZXF1ZXN0LnVybCgpLCB1c2VyR2VzdHVyZSwgZmFsc2UpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBTdHJpbmcgdGFyZ2V0ID0gcGFzc2VkVGFyZ2V0OwpAQCAtMzYwLDcg
KzM2MCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnJlcXVlc3RGcmFtZShIVE1MRnJhbWVPd25lckVs
ZW1lbnQqIG93bmVyRWxlbWVudCwgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGlmICghc2NyaXB0VVJMLmlzRW1wdHkoKSkKLSAgICAgICAgZnJhbWUtPmxvYWRlcigp
LT5leGVjdXRlSWZKYXZhU2NyaXB0VVJMKHNjcmlwdFVSTCk7CisgICAgICAgIGZyYW1lLT5zY3Jp
cHQoKS0+ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChzY3JpcHRVUkwpOwogCiAgICAgcmV0dXJuIHRy
dWU7CiB9CkBAIC00MzIsNyArNDMyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShj
b25zdCBjaGFyKiBhY3Rpb24sIGNvbnN0IFN0cmluZyYgdXJsLCBQYXNzUmVmUHRyPEYKIAogICAg
IGlmIChwcm90b2NvbElzSmF2YVNjcmlwdCh1KSkgewogICAgICAgICBtX2lzRXhlY3V0aW5nSmF2
YVNjcmlwdEZvcm1BY3Rpb24gPSB0cnVlOwotICAgICAgICBleGVjdXRlSWZKYXZhU2NyaXB0VVJM
KHUsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgIG1fZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlSWZK
YXZhU2NyaXB0VVJMKHUsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgIG1faXNFeGVjdXRpbmdKYXZh
U2NyaXB0Rm9ybUFjdGlvbiA9IGZhbHNlOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNjQ3
LDYyICs2NDcsNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRFeHBsaWNpdE9wZW4oKQogICAgICAg
ICBtX1VSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogfQogCi1ib29sIEZyYW1lTG9h
ZGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmIHVybCwgYm9vbCB1c2VyR2Vz
dHVyZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQpCi17Ci0gICAgaWYgKCFwcm90b2NvbElzSmF2YVNj
cmlwdCh1cmwpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobV9mcmFtZS0+cGFn
ZSgpICYmICFtX2ZyYW1lLT5wYWdlKCktPmphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZCgpKQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIGNvbnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3Ro
ID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKLQotICAgIFN0cmluZyBzY3JpcHQgPSB1cmwu
c3RyaW5nKCkuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVMZW5ndGgpOwotICAgIFNjcmlwdFZh
bHVlIHJlc3VsdDsKLSAgICBpZiAobV9mcmFtZS0+c2NyaXB0KCktPnhzc0F1ZGl0b3IoKS0+Y2Fu
RXZhbHVhdGVKYXZhU2NyaXB0VVJMKHNjcmlwdCkpCi0gICAgICAgIHJlc3VsdCA9IGV4ZWN1dGVT
Y3JpcHQoZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHNjcmlwdCksIHVzZXJHZXN0dXJlKTsKLQot
ICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7Ci0gICAgaWYgKCFyZXN1bHQuZ2V0U3RyaW5nKHNjcmlw
dFJlc3VsdCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgU2VjdXJpdHlPcmlnaW4qIGN1
cnJlbnRTZWN1cml0eU9yaWdpbiA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCk7Ci0KLSAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFsd2F5cyByZXBsYWNlIHRoZSBkb2N1bWVu
dCwgYnV0IGRvaW5nIHNvCi0gICAgLy8gICAgICAgIHN5bmNocm9ub3VzbHkgY2FuIGNhdXNlIGNy
YXNoZXM6Ci0gICAgLy8gICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE2NzgyCi0gICAgaWYgKHJlcGxhY2VEb2N1bWVudCkgewotICAgICAgICBzdG9wQWxsTG9h
ZGVycygpOwotICAgICAgICBiZWdpbihtX1VSTCwgdHJ1ZSwgY3VycmVudFNlY3VyaXR5T3JpZ2lu
KTsKLSAgICAgICAgd3JpdGUoc2NyaXB0UmVzdWx0KTsKLSAgICAgICAgZW5kKCk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLVNjcmlwdFZhbHVlIEZyYW1lTG9hZGVyOjpleGVjdXRl
U2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCi17Ci0g
ICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIGZvcmNlVXNl
ckdlc3R1cmUgPyBLVVJMKCkgOiBtX1VSTCkpOwotfQotCi1TY3JpcHRWYWx1ZSBGcmFtZUxvYWRl
cjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQotewot
ICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpIHx8IG1fZnJhbWUtPnNjcmlw
dCgpLT5pc1BhdXNlZCgpKQotICAgICAgICByZXR1cm4gU2NyaXB0VmFsdWUoKTsKLQotICAgIGJv
b2wgd2FzUnVubmluZ1NjcmlwdCA9IG1faXNSdW5uaW5nU2NyaXB0OwotICAgIG1faXNSdW5uaW5n
U2NyaXB0ID0gdHJ1ZTsKLQotICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IG1fZnJhbWUtPnNjcmlw
dCgpLT5ldmFsdWF0ZShzb3VyY2VDb2RlKTsKLQotICAgIGlmICghd2FzUnVubmluZ1NjcmlwdCkg
ewotICAgICAgICBtX2lzUnVubmluZ1NjcmlwdCA9IGZhbHNlOwotICAgICAgICBEb2N1bWVudDo6
dXBkYXRlU3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0
OwotfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVhcigpCiB7CkBAIC03MTUsNiAr
NjU5LDE0IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNhbmNlbEFuZENsZWFyKCkKICAgICBtX2ZyYW1l
LT5zY3JpcHQoKS0+dXBkYXRlUGxhdGZvcm1TY3JpcHRPYmplY3RzKCk7CiB9CiAKK3ZvaWQgRnJh
bWVMb2FkZXI6OnJlcGxhY2VEb2N1bWVudChjb25zdCBTdHJpbmcmIGh0bWwpCit7CisgICAgc3Rv
cEFsbExvYWRlcnMoKTsKKyAgICBiZWdpbihtX1VSTCwgdHJ1ZSwgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgd3JpdGUoaHRtbCk7CisgICAgZW5kKCk7Cit9CisK
IHZvaWQgRnJhbWVMb2FkZXI6OmNsZWFyKGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0aWVzLCBib29s
IGNsZWFyU2NyaXB0T2JqZWN0cywgYm9vbCBjbGVhckZyYW1lVmlldykKIHsKICAgICBtX2ZyYW1l
LT5lZGl0b3IoKS0+Y2xlYXIoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmggYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCmluZGV4IDAyMmQ5MjcuLjhkNWZm
NDcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKKysrIGIvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaApAQCAtMjMxLDYgKzIzMSw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogICAgICAgICBLVVJMIGJhc2VVUkwoKSBjb25zdDsKIAorICAgICAgICB2b2lkIHJl
cGxhY2VEb2N1bWVudChjb25zdCBTdHJpbmcmKTsKKwogICAgICAgICB2b2lkIGJlZ2luKCk7CiAg
ICAgICAgIHZvaWQgYmVnaW4oY29uc3QgS1VSTCYsIGJvb2wgZGlzcGF0Y2hXaW5kb3dPYmplY3RB
dmFpbGFibGUgPSB0cnVlLCBTZWN1cml0eU9yaWdpbiogZm9yY2VkU2VjdXJpdHlPcmlnaW4gPSAw
KTsKIApAQCAtMjQyLDkgKzI0NCw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9p
ZCBzZXRFbmNvZGluZyhjb25zdCBTdHJpbmcmIGVuY29kaW5nLCBib29sIHVzZXJDaG9zZW4pOwog
ICAgICAgICBTdHJpbmcgZW5jb2RpbmcoKSBjb25zdDsKIAotICAgICAgICBTY3JpcHRWYWx1ZSBl
eGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKLSAgICAgICAgU2NyaXB0VmFs
dWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlID0gZmFsc2UpOwotCiAgICAgICAgIHZvaWQgZ290b0FuY2hvcigpOwogCiAgICAgICAgIHZv
aWQgdG9rZW5pemVyUHJvY2Vzc2VkRGF0YSgpOwpAQCAtNDUxLDkgKzQ1MCw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogICAgICAgICBGcmFtZSogbG9hZFN1YmZyYW1lKEhUTUxGcmFtZU93bmVy
RWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
cmVmZXJyZXIpOwogCi0gICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEph
dmFTY3JpcHQgVVJMLgotICAgICAgICBib29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3Qg
S1VSTCYsIGJvb2wgdXNlckdlc3R1cmUgPSBmYWxzZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQgPSB0
cnVlKTsKLQogICAgICAgICBib29sIGdvdG9BbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKTsgLy8g
cmV0dXJucyB0cnVlIGlmIHRoZSBhbmNob3Igd2FzIGZvdW5kCiAgICAgICAgIHZvaWQgc2Nyb2xs
VG9BbmNob3IoY29uc3QgS1VSTCYpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1
Z2luVmlldy5jcHAgYi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTRiMzM3
Yi4uMWYwNzU2NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisr
KyBiL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZv
aWQgUGx1Z2luVmlldzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAg
ICAKICAgICAvLyBFeGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0
byBiZSBkZXN0cm95ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBmcmFt
ZS4KICAgICBSZWZQdHI8RnJhbWU+IHBhcmVudEZyYW1lID0gbV9wYXJlbnRGcmFtZTsKLSAgICBK
U1ZhbHVlIHJlc3VsdCA9IG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KGpz
U3RyaW5nLCByZXF1ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpKS5qc1ZhbHVlKCk7CisgICAgSlNW
YWx1ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChqc1N0
cmluZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSkuanNWYWx1ZSgpOwogCiAgICAgaWYg
KHRhcmdldEZyYW1lTmFtZS5pc051bGwoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0U3RyaW5n
OwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZwppbmRleCAzNzBmYjJiLi41OGUzMmMyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxv
ZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTEwLTA4
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBleGVjdXRlU2NyaXB0IGZyb20gRnJhbWVM
b2FkZXIgdG8gU2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDAKKworICAgICAgICBVcGRhdGUgQVBJIGNhbGwuCisKKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3Zp
ZXdfZXhlY3V0ZV9zY3JpcHQpOgorCiAyMDA5LTEwLTA3ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdh
bGlhLmNvbT4KIAogICAgICAgICBGaXggdGhlIEdUSysgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCmluZGV4IDQ3ZDdkOTguLjNjYjY5MDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCkBAIC0zMTUyLDggKzMxNTIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19l
eGVjdXRlX3NjcmlwdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0
KQogICAgIGdfcmV0dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKICAg
ICBnX3JldHVybl9pZl9mYWlsKHNjcmlwdCk7CiAKLSAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRl
ciA9IGNvcmUod2ViVmlldyktPm1haW5GcmFtZSgpLT5sb2FkZXIoKSkKLSAgICAgICAgbG9hZGVy
LT5leGVjdXRlU2NyaXB0KFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7CisgICAgY29y
ZSh3ZWJWaWV3KS0+bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFN0cmluZzo6
ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2M2M4ODhhLi5jNjBmMmJj
IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDA5LTEwLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgTW92ZSBleGVjdXRlU2NyaXB0IGZyb20gRnJhbWVMb2FkZXIgdG8gU2NyaXB0Q29udHJvbGxl
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDAK
KworICAgICAgICBVcGRhdGUgQVBJIGNhbGwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1l
Lm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZy
b21TdHJpbmc6Zm9yY2VVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcu
bW06CisgICAgICAgICgtW1dlYlZpZXcgYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21T
dHJpbmc6XSk6CisKIDIwMDktMTAtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmUtbGFuZCA0OTI2OS00OTI3MSBzaW5jZSByZXZlcnRpbmcgdGhl
bSBkaWQgbm90IGZpeCB0aGUgdGVzdHMuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViRnJhbWUubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMjdhYWM2
Ny4uZDU5Nzc0YSAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisr
KyBiL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNTk1LDcgKzU5NSw3IEBAIHN0
YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9h
ZGVyKQogewogICAgIEFTU0VSVChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpKTsKICAg
ICAKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLT5l
eGVjdXRlU2NyaXB0KHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSkuanNWYWx1ZSgpOworICAgIEpT
VmFsdWUgcmVzdWx0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3Jp
cHQoc3RyaW5nLCBmb3JjZVVzZXJHZXN0dXJlKS5qc1ZhbHVlKCk7CiAKICAgICBpZiAoIV9wcml2
YXRlLT5jb3JlRnJhbWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBm
cm9tIHRoZSBwYWdlLgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYlZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRl
eCA4M2M3ZTIwLi5iOTFlNDQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmll
dy5tbQorKysgYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDA5NSw3ICs0MDk1
LDcgQEAgc3RhdGljIE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBqc1ZhbHUKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBp
ZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU1Zh
bHVlIHJlc3VsdCA9IGNvcmVGcmFtZS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0
cnVlKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgp
LT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOwogICAgIGlmICghcmVzdWx0
KSAvLyBGSVhNRTogcGFzcyBlcnJvcnMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdl
YmZyYW1lLmNwcCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCAxNzc3Y2M4Li5k
NzEwZGNmIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBRVmFyaWFudCBR
V2ViRnJhbWU6OmV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHRTb3VyY2Up
CiAgICAgU2NyaXB0Q29udHJvbGxlciAqcHJveHkgPSBkLT5mcmFtZS0+c2NyaXB0KCk7CiAgICAg
UVZhcmlhbnQgcmM7CiAgICAgaWYgKHByb3h5KSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSB2ID0g
ZC0+ZnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0
U291cmNlKSkuanNWYWx1ZSgpOworICAgICAgICBKU0M6OkpTVmFsdWUgdiA9IGQtPmZyYW1lLT5z
Y3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdFNvdXJjZSkpLmpz
VmFsdWUoKTsKICAgICAgICAgaW50IGRpc3RhbmNlID0gMDsKICAgICAgICAgcmMgPSBKU0M6OkJp
bmRpbmdzOjpjb252ZXJ0VmFsdWVUb1FWYXJpYW50KHByb3h5LT5nbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRXhlYygpLCB2LCBRTWV0YVR5cGU6OlZvaWQsICZkaXN0YW5jZSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvV2ViS2l0L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOWJj
OGU5NC4uNTE5MmIyOSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJL
aXQvcXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTAtMDggIEFkYW0gQmFydGgg
IDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBNb3ZlIGV4ZWN1dGVTY3JpcHQgZnJvbSBGcmFtZUxvYWRlciB0byBTY3Jp
cHRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMDIwMAorCisgICAgICAgIFVwZGF0ZSBBUEkgY2FsbC4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuY3BwOgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgor
CiAyMDA5LTEwLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxv
ZyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDE0Njg0MmMuLjZmYWEyZTEgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMDktMTAtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGV4
ZWN1dGVTY3JpcHQgZnJvbSBGcmFtZUxvYWRlciB0byBTY3JpcHRDb250cm9sbGVyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDIwMAorCisgICAgICAg
IFVwZGF0ZSBBUEkgY2FsbC4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2Vi
Vmlldzo6c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcpOgorCiAyMDA5LTEw
LTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAppbmRleCBhM2E4NzU3Li4wODdjNWMyIDEwMDY0NAotLS0gYS9X
ZWJLaXQvd2luL1dlYlZpZXcuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTI4
NjUsNyArMjg2NSw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcoCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAKLSAgICBKU0M6OkpTVmFsdWUgc2NyaXB0RXhlY3V0aW9u
UmVzdWx0ID0gY29yZUZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChXZWJDb3JlOjpTdHJp
bmcoc2NyaXB0KSwgdHJ1ZSkuanNWYWx1ZSgpOworICAgIEpTQzo6SlNWYWx1ZSBzY3JpcHRFeGVj
dXRpb25SZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFdlYkNvcmU6
OlN0cmluZyhzY3JpcHQpLCB0cnVlKS5qc1ZhbHVlKCk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRp
b25SZXN1bHQpCiAgICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgZWxzZSBpZiAoc2NyaXB0RXhl
Y3V0aW9uUmVzdWx0LmlzU3RyaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VM
b2cgYi9XZWJLaXQvd3gvQ2hhbmdlTG9nCmluZGV4IDc2ZjQ1MzMuLmZhMWM4NjkgMTAwNjQ0Ci0t
LSBhL1dlYktpdC93eC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE1IEBACisyMDA5LTEwLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBleGVj
dXRlU2NyaXB0IGZyb20gRnJhbWVMb2FkZXIgdG8gU2NyaXB0Q29udHJvbGxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDAKKworICAgICAgICBV
cGRhdGUgQVBJIGNhbGwuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3eFdl
YkZyYW1lOjpSdW5TY3JpcHQpOgorCiAyMDA5LTEwLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQg
YS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwIGIvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAppbmRleCBm
MjA1MTUyLi4zOGIzZTNmIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCisrKyBi
L1dlYktpdC93eC9XZWJGcmFtZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB3eFN0cmluZyB3eFdl
YkZyYW1lOjpSdW5TY3JpcHQoY29uc3Qgd3hTdHJpbmcmIGphdmFzY3JpcHQpCiB7CiAgICAgd3hT
dHJpbmcgcmV0dXJuVmFsdWUgPSB3eEVtcHR5U3RyaW5nOwogICAgIGlmIChtX2ltcGwtPmZyYW1l
KSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5sb2FkZXIo
KS0+ZXhlY3V0ZVNjcmlwdChqYXZhc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7CisgICAgICAgIEpT
Qzo6SlNWYWx1ZSByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlw
dChqYXZhc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAg
ICAgICAgICByZXR1cm5WYWx1ZSA9IHd4U3RyaW5nKHJlc3VsdC50b1N0cmluZyhtX2ltcGwtPmZy
YW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkuVVRGOFN0cmluZygp
LmNfc3RyKCksIHd4Q29udlVURjgpOyAgICAgICAgCiAgICAgfQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40857</attachid>
            <date>2009-10-08 01:16:10 -0700</date>
            <delta_ts>2009-10-08 10:26:00 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30200-20091008011609.patch</filename>
            <type>text/plain</type>
            <size>26530</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmNhZDE2MS4uMDIyYTZlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAwOS0xMC0wOCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgZXhlY3V0ZVNjcmlwdCBmcm9tIEZyYW1lTG9hZGVyIHRvIFNjcmlw
dENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMwMjAwCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBoYXZlIHZpcnR1YWxseSBubyBpbnRl
cmFjdGlvbiB3aXRoIEZyYW1lTG9hZGVyLiAgVGhleQorICAgICAgICByZWFsbHkgc2VlbSBsaWtl
IHRoZXkgb3VnaHQgdG8gYmVsb25nIHRvIFNjcmlwdENvbnRyb2xsZXIuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OlNjcmlwdENvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJM
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICog
ZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcyk6CisgICAgICAgICog
ZG9tL1hNTFRva2VuaXplclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6
cGFyc2VFbmRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNoYW5nZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxl
Y3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpyZXBsYWNlRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKIDIwMDktMTAtMDcgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cCBiL1dlYkNvcmUvV2Vi
Q29yZS5iYXNlLmV4cAppbmRleCAyNGQ4MzU1Li5mOWUxNTZlIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L1dlYkNvcmUuYmFzZS5leHAKKysrIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCkBAIC0xNTYs
NyArMTU2LDYgQEAgX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExY29tcGxldGVVUkxFUktOU182
U3RyaW5nRQogX19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExbG9hZEFyY2hpdmVFTjNXVEYxMFBh
c3NSZWZQdHJJTlNfN0FyY2hpdmVFRUUKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMXNldEVu
Y29kaW5nRVJLTlNfNlN0cmluZ0ViCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTJzaG91bGRS
ZWxvYWRFUktOU180S1VSTEVTM18KLV9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxM2V4ZWN1dGVT
Y3JpcHRFUktOU182U3RyaW5nRWIKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNGRldGFjaENo
aWxkcmVuRXYKIF9fWk43V2ViQ29yZTExRnJhbWVMb2FkZXIxNHNjcm9sbFRvQW5jaG9yRVJLTlNf
NEtVUkxFCiBfX1pON1dlYkNvcmUxMUZyYW1lTG9hZGVyMTRzdG9wQWxsTG9hZGVyc0VOU18xNERh
dGFiYXNlUG9saWN5RQpAQCAtMzc2LDYgKzM3NSw3IEBAIF9fWk43V2ViQ29yZTE2TmF2aWdhdGlv
bkFjdGlvbkMxRVJLTlNfNEtVUkxFTlNfMTNGcmFtZUxvYWRUeXBlRWIKIF9fWk43V2ViQ29yZTE2
TmF2aWdhdGlvbkFjdGlvbkMxRVJLTlNfNEtVUkxFTlNfMTROYXZpZ2F0aW9uVHlwZUUKIF9fWk43
V2ViQ29yZTE2TmF2aWdhdGlvbkFjdGlvbkMxRXYKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJv
bGxlcjEwaW5pdFNjcmlwdEV2CitfX1pON1dlYkNvcmUxNlNjcmlwdENvbnRyb2xsZXIxM2V4ZWN1
dGVTY3JpcHRFUktOU182U3RyaW5nRWIKIF9fWk43V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjE4
d2luZG93U2NyaXB0T2JqZWN0RXYKIF9fWk43V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbkMxRVBL
TlNfNVJhbmdlRU5TXzlFQWZmaW5pdHlFCiBfX1pON1dlYkNvcmUxNlZpc2libGVTZWxlY3Rpb25D
MUVSS05TXzE1VmlzaWJsZVBvc2l0aW9uRVMzXwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRB
Y3Rpb24uY3BwCmluZGV4IDllNjRiY2UuLjkzMTU1ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nj
aGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbklu
Q29udGV4dCh3aW5kb3csIHdpbmRvdy0+c2hlbGwoKSk7CiAgICAgICAgIERvY3VtZW50Ojp1cGRh
dGVTdHlsZUZvckFsbERvY3VtZW50cygpOwogICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+bG9h
ZGVyKCktPmV4ZWN1dGVTY3JpcHQobV9jb2RlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5l
eGVjdXRlU2NyaXB0KG1fY29kZSk7CiAKICAgICBmcmFtZS0+c2NyaXB0KCktPnNldFByb2Nlc3Np
bmdUaW1lckNhbGxiYWNrKGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3Mv
anMvU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuY3BwCmluZGV4IGRmYTE2MDIuLjY0NzM0ZjMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQCBTY3JpcHRDb250cm9sbGVyOjpT
Y3JpcHRDb250cm9sbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAg
LCBtX2hhbmRsZXJMaW5lTnVtYmVyKDApCiAgICAgLCBtX3NvdXJjZVVSTCgwKQorICAgICwgbV9p
bkV4ZWN1dGVTY3JpcHQoZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGZh
bHNlKQogICAgICwgbV9wYXVzZWQoZmFsc2UpCiAgICAgLCBtX2FsbG93UG9wdXBzRnJvbVBsdWdp
bihmYWxzZSkKQEAgLTgwLDExICs4MSw2MiBAQCBTY3JpcHRDb250cm9sbGVyOjp+U2NyaXB0Q29u
dHJvbGxlcigpCiAgICAgZGlzY29ubmVjdFBsYXRmb3JtU2NyaXB0T2JqZWN0cygpOwogfQogCitT
Y3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3Jp
cHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUgPyBLVVJMKCkgOiBt
X2ZyYW1lLT5sb2FkZXIoKS0+dXJsKCkpKTsKK30KKworU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJv
bGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQor
eworICAgIGlmICghaXNFbmFibGVkKCkgfHwgaXNQYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuIFNj
cmlwdFZhbHVlKCk7CisKKyAgICBib29sIHdhc0luRXhlY3V0ZVNjcmlwdCA9IG1faW5FeGVjdXRl
U2NyaXB0OworICAgIG1faW5FeGVjdXRlU2NyaXB0ID0gdHJ1ZTsKKworICAgIFNjcmlwdFZhbHVl
IHJlc3VsdCA9IGV2YWx1YXRlKHNvdXJjZUNvZGUpOworCisgICAgaWYgKCF3YXNJbkV4ZWN1dGVT
Y3JpcHQpIHsKKyAgICAgICAgbV9pbkV4ZWN1dGVTY3JpcHQgPSBmYWxzZTsKKyAgICAgICAgRG9j
dW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7CisgICAgfQorCisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0
VVJMKGNvbnN0IEtVUkwmIHVybCwgYm9vbCB1c2VyR2VzdHVyZSwgYm9vbCByZXBsYWNlRG9jdW1l
bnQpCit7CisgICAgaWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAobV9mcmFtZS0+cGFnZSgpICYmICFtX2ZyYW1lLT5wYWdlKCkt
PmphdmFTY3JpcHRVUkxzQXJlQWxsb3dlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAg
IGNvbnN0IGludCBqYXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIp
IC0gMTsKKworICAgIFN0cmluZyBzY3JpcHQgPSB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKGphdmFz
Y3JpcHRTY2hlbWVMZW5ndGgpOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdDsKKyAgICBpZiAoeHNz
QXVkaXRvcigpLT5jYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc2NyaXB0KSkKKyAgICAgICAgcmVz
dWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc2NyaXB0KSwgdXNl
ckdlc3R1cmUpOworCisgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdC5n
ZXRTdHJpbmcoc2NyaXB0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBG
SVhNRTogV2Ugc2hvdWxkIGFsd2F5cyByZXBsYWNlIHRoZSBkb2N1bWVudCwgYnV0IGRvaW5nIHNv
CisgICAgLy8gICAgICAgIHN5bmNocm9ub3VzbHkgY2FuIGNhdXNlIGNyYXNoZXM6CisgICAgLy8g
ICAgICAgIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzgyCisgICAg
aWYgKHJlcGxhY2VEb2N1bWVudCkgCisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5yZXBsYWNl
RG9jdW1lbnQoc2NyaXB0UmVzdWx0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiBTY3JpcHRW
YWx1ZSBTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBz
b3VyY2VDb2RlKSAKIHsKICAgICBjb25zdCBTb3VyY2VDb2RlJiBqc1NvdXJjZUNvZGUgPSBzb3Vy
Y2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmluZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNv
ZGUucHJvdmlkZXIoKS0+dXJsKCk7Ci0gICAgCisKICAgICBpZiAoIW1fWFNTQXVkaXRvci0+Y2Fu
RXZhbHVhdGUoc291cmNlQ29kZS5zb3VyY2UoKSkpIHsKICAgICAgICAgLy8gVGhpcyBzY3JpcHQg
aXMgbm90IHNhZmUgdG8gYmUgZXZhbHVhdGVkLgogICAgICAgICByZXR1cm4gSlNWYWx1ZSgpOwpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250cm9sbGVyLmggYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAppbmRleCA1NmU4ZjBjLi5iZDRiNjVl
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaAorKysg
Yi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuaApAQCAtODAsNiArODAsMTIg
QEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93aW5kb3dTaGVsbC0+d2luZG93KCk7CiAgICAg
fQogCisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2Rl
Jik7CisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwg
Ym9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOworCisgICAgLy8gUmV0dXJucyB0cnVlIGlm
IGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCisgICAgYm9vbCBleGVjdXRlSWZKYXZhU2Ny
aXB0VVJMKGNvbnN0IEtVUkwmLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UsIGJvb2wgcmVwbGFj
ZURvY3VtZW50ID0gdHJ1ZSk7CisKICAgICBTY3JpcHRWYWx1ZSBldmFsdWF0ZShjb25zdCBTY3Jp
cHRTb3VyY2VDb2RlJik7CiAgICAgdm9pZCBldmFsdWF0ZUluSXNvbGF0ZWRXb3JsZCh1bnNpZ25l
ZCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0U291cmNlQ29kZT4mKTsKIApAQCAtMTU1LDYg
KzE2MSw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1faGFuZGxlckxpbmVOdW1iZXI7CiAgICAgY29u
c3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAorICAgIGJvb2wgbV9pbkV4ZWN1dGVTY3JpcHQ7CisK
ICAgICBib29sIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2s7CiAgICAgYm9vbCBtX3BhdXNlZDsK
ICAgICBib29sIG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2luOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9i
aW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0Q29udHJvbGxlci5jcHAKaW5kZXggZWZlZmVkMC4uOWIwMjRkNCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC04OCw2ICs4OCw3IEBAIHZvaWQgU2NyaXB0
Q29udHJvbGxlcjo6Z2NVbnByb3RlY3RKU1dyYXBwZXIodm9pZCogZG9tT2JqZWN0KQogU2NyaXB0
Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFtZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1l
KGZyYW1lKQogICAgICwgbV9zb3VyY2VVUkwoMCkKKyAgICAsIG1faW5FeGVjdXRlU2NyaXB0KGZh
bHNlKQogICAgICwgbV9wcm9jZXNzaW5nVGltZXJDYWxsYmFjayhmYWxzZSkKICAgICAsIG1fcGF1
c2VkKGZhbHNlKQogICAgICwgbV9wcm94eShuZXcgVjhQcm94eShmcmFtZSkpCkBAIC0xOTQsNiAr
MTk1LDU3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGVJbk5ld0NvbnRleHQoY29u
c3QgVmVjdG9yPFNjcmlwdFNvdXJjZUNvZGU+JiBzb3VyCiAgICAgbV9wcm94eS0+ZXZhbHVhdGVJ
bk5ld0NvbnRleHQoc291cmNlcywgZXh0ZW5zaW9uR3JvdXApOwogfQogCitTY3JpcHRWYWx1ZSBT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29s
IGZvcmNlVXNlckdlc3R1cmUpCit7CisgICAgcmV0dXJuIGV4ZWN1dGVTY3JpcHQoU2NyaXB0U291
cmNlQ29kZShzY3JpcHQsIGZvcmNlVXNlckdlc3R1cmUgPyBLVVJMKCkgOiBtX2ZyYW1lLT5sb2Fk
ZXIoKS0+dXJsKCkpKTsKK30KKworU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQoreworICAgIGlmICgh
aXNFbmFibGVkKCkgfHwgaXNQYXVzZWQoKSkKKyAgICAgICAgcmV0dXJuIFNjcmlwdFZhbHVlKCk7
CisKKyAgICBib29sIHdhc0luRXhlY3V0ZVNjcmlwdCA9IG1faW5FeGVjdXRlU2NyaXB0OworICAg
IG1faW5FeGVjdXRlU2NyaXB0ID0gdHJ1ZTsKKworICAgIFNjcmlwdFZhbHVlIHJlc3VsdCA9IGV2
YWx1YXRlKHNvdXJjZUNvZGUpOworCisgICAgaWYgKCF3YXNJbkV4ZWN1dGVTY3JpcHQpIHsKKyAg
ICAgICAgbV9pbkV4ZWN1dGVTY3JpcHQgPSBmYWxzZTsKKyAgICAgICAgRG9jdW1lbnQ6OnVwZGF0
ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworYm9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtV
UkwmIHVybCwgYm9vbCB1c2VyR2VzdHVyZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQpCit7CisgICAg
aWYgKCFwcm90b2NvbElzSmF2YVNjcmlwdCh1cmwpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBpZiAobV9mcmFtZS0+cGFnZSgpICYmICFtX2ZyYW1lLT5wYWdlKCktPmphdmFTY3JpcHRV
UkxzQXJlQWxsb3dlZCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGNvbnN0IGludCBq
YXZhc2NyaXB0U2NoZW1lTGVuZ3RoID0gc2l6ZW9mKCJqYXZhc2NyaXB0OiIpIC0gMTsKKworICAg
IFN0cmluZyBzY3JpcHQgPSB1cmwuc3RyaW5nKCkuc3Vic3RyaW5nKGphdmFzY3JpcHRTY2hlbWVM
ZW5ndGgpOworICAgIFNjcmlwdFZhbHVlIHJlc3VsdDsKKyAgICBpZiAoeHNzQXVkaXRvcigpLT5j
YW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc2NyaXB0KSkKKyAgICAgICAgcmVzdWx0ID0gZXhlY3V0
ZVNjcmlwdChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc2NyaXB0KSwgdXNlckdlc3R1cmUpOwor
CisgICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKKyAgICBpZiAoIXJlc3VsdC5nZXRTdHJpbmcoc2Ny
aXB0UmVzdWx0KSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBGSVhNRTogV2Ugc2hv
dWxkIGFsd2F5cyByZXBsYWNlIHRoZSBkb2N1bWVudCwgYnV0IGRvaW5nIHNvCisgICAgLy8gICAg
ICAgIHN5bmNocm9ub3VzbHkgY2FuIGNhdXNlIGNyYXNoZXM6CisgICAgLy8gICAgICAgIGh0dHA6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NzgyCisgICAgaWYgKHJlcGxhY2VE
b2N1bWVudCkgCisgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLT5yZXBsYWNlRG9jdW1lbnQoc2Ny
aXB0UmVzdWx0KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiAvLyBFdmFsdWF0ZSBhIHNjcmlw
dCBmaWxlIGluIHRoZSBlbnZpcm9ubWVudCBvZiB0aGlzIHByb3h5LgogU2NyaXB0VmFsdWUgU2Ny
aXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5o
IGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKaW5kZXggOTY1OGIwNS4u
Y2QwMDcxMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmgKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmgKQEAgLTU5LDYg
KzU5LDEyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gb3IgdGhpcyBhY2Nlc3Nv
ciBzaG91bGQgYmUgbWFkZSBKU1Byb3h5KgogICAgICAgICBWOFByb3h5KiBwcm94eSgpIHsgcmV0
dXJuIG1fcHJveHkuZ2V0KCk7IH0KIAorICAgICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0
KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmKTsKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNj
cmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2Up
OworCisgICAgICAgIC8vIFJldHVybnMgdHJ1ZSBpZiBhcmd1bWVudCBpcyBhIEphdmFTY3JpcHQg
VVJMLgorICAgICAgICBib29sIGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3QgS1VSTCYsIGJv
b2wgdXNlckdlc3R1cmUgPSBmYWxzZSwgYm9vbCByZXBsYWNlRG9jdW1lbnQgPSB0cnVlKTsKKwog
ICAgICAgICAvLyBFdmFsdWF0ZSBhIHNjcmlwdCBmaWxlIGluIHRoZSBlbnZpcm9ubWVudCBvZiB0
aGlzIHByb3h5LgogICAgICAgICAvLyBJZiBzdWNjZWVkZWQsICdzdWNjJyBpcyBzZXQgdG8gdHJ1
ZSBhbmQgcmVzdWx0IGlzIHJldHVybmVkCiAgICAgICAgIC8vIGFzIGEgc3RyaW5nLgpAQCAtMTYy
LDYgKzE2OCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7
CiAgICAgICAgIGNvbnN0IFN0cmluZyogbV9zb3VyY2VVUkw7CiAKKyAgICAgICAgYm9vbCBtX2lu
RXhlY3V0ZVNjcmlwdDsKKwogICAgICAgICBib29sIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJhY2s7
CiAgICAgICAgIGJvb2wgbV9wYXVzZWQ7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTFRv
a2VuaXplci5jcHAgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3BwCmluZGV4IDRkMDYzNDMu
LjYyNWE5ZTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAKKysrIGIv
V2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcApAQCAtMjk2LDcgKzI5Niw3IEBAIHZvaWQgWE1M
VG9rZW5pemVyOjpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSogdW51c2VkUmVzb3VyY2Up
CiAgICAgaWYgKGVycm9yT2NjdXJyZWQpIAogICAgICAgICBzY3JpcHRFbGVtZW50LT5kaXNwYXRj
aEVycm9yRXZlbnQoKTsKICAgICBlbHNlIHsKLSAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5sb2Fk
ZXIoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKKyAgICAgICAgbV92aWV3LT5mcmFtZSgp
LT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKICAgICAgICAgc2NyaXB0RWxl
bWVudC0+ZGlzcGF0Y2hMb2FkRXZlbnQoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
ZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGli
eG1sMi5jcHAKaW5kZXggZTRhOThkNS4uMjk0MjI0MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20v
WE1MVG9rZW5pemVyTGlieG1sMi5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyTGli
eG1sMi5jcHAKQEAgLTg2Miw3ICs4NjIsNyBAQCB2b2lkIFhNTFRva2VuaXplcjo6ZW5kRWxlbWVu
dE5zKCkKICAgICAgICAgICAgIH0gZWxzZSAKICAgICAgICAgICAgICAgICBtX3NjcmlwdEVsZW1l
bnQgPSAwOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fdmlldy0+ZnJhbWUoKS0+bG9h
ZGVyKCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRFbGVtZW50LT5zY3Jp
cHRDb250ZW50KCksIG1fZG9jLT51cmwoKSwgbV9zY3JpcHRTdGFydExpbmUpKTsKKyAgICAgICAg
ICAgIG1fdmlldy0+ZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNl
Q29kZShzY3JpcHRFbGVtZW50LT5zY3JpcHRDb250ZW50KCksIG1fZG9jLT51cmwoKSwgbV9zY3Jp
cHRTdGFydExpbmUpKTsKICAgICB9CiAgICAgbV9yZXF1ZXN0aW5nU2NyaXB0ID0gZmFsc2U7CiAg
ICAgc2V0Q3VycmVudE5vZGUocGFyZW50LmdldCgpKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9t
L1hNTFRva2VuaXplclF0LmNwcCBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplclF0LmNwcAppbmRl
eCAwNDQwNWQ2Li5iYmJmMjU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJR
dC5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyUXQuY3BwCkBAIC02MjEsNyArNjIx
LDcgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OnBhcnNlRW5kRWxlbWVudCgpCiAgICAgICAgICAgICB9
IGVsc2UgCiAgICAgICAgICAgICAgICAgbV9zY3JpcHRFbGVtZW50ID0gMDsKICAgICAgICAgfSBl
bHNlCi0gICAgICAgICAgICBtX3ZpZXctPmZyYW1lKCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0
KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC0+c2NyaXB0Q29udGVudCgpLCBtX2RvYy0+
dXJsKCksIG1fc2NyaXB0U3RhcnRMaW5lKSk7CisgICAgICAgICAgICBtX3ZpZXctPmZyYW1lKCkt
PnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC0+
c2NyaXB0Q29udGVudCgpLCBtX2RvYy0+dXJsKCksIG1fc2NyaXB0U3RhcnRMaW5lKSk7CiAgICAg
fQogICAgIG1fcmVxdWVzdGluZ1NjcmlwdCA9IGZhbHNlOwogICAgIHNldEN1cnJlbnROb2RlKHBh
cmVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAg
Yi9XZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKaW5kZXggMWEyZDI3Ni4uNjRmMGE2NCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCisrKyBiL1dlYkNvcmUv
aHRtbC9IVE1MVG9rZW5pemVyLmNwcApAQCAtNTYxLDcgKzU2MSw3IEBAIEhUTUxUb2tlbml6ZXI6
OlN0YXRlIEhUTUxUb2tlbml6ZXI6OnNjcmlwdEV4ZWN1dGlvbihjb25zdCBTY3JpcHRTb3VyY2VD
b2RlJiBzb3VyCiAjZW5kaWYKIAogICAgIG1fc3RhdGUgPSBzdGF0ZTsKLSAgICBtX2RvYy0+ZnJh
bWUoKS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7CisgICAgbV9kb2MtPmZy
YW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOwogICAgIHN0YXRlID0g
bV9zdGF0ZTsKIAogICAgIHN0YXRlLnNldEFsbG93WWllbGQodHJ1ZSk7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5jcHAKaW5kZXggODNkYTkxZC4uMzUyM2M2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAt
MTc1LDcgKzE3NSw2IEBAIEZyYW1lTG9hZGVyOjpGcmFtZUxvYWRlcihGcmFtZSogZnJhbWUsIEZy
YW1lTG9hZGVyQ2xpZW50KiBjbGllbnQpCiAgICAgLCBtX3NlbnRSZWRpcmVjdE5vdGlmaWNhdGlv
bihmYWxzZSkKICAgICAsIG1faW5TdG9wQWxsTG9hZGVycyhmYWxzZSkKICAgICAsIG1faXNFeGVj
dXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbihmYWxzZSkKLSAgICAsIG1faXNSdW5uaW5nU2NyaXB0
KGZhbHNlKQogICAgICwgbV9kaWRDYWxsSW1wbGljaXRDbG9zZShmYWxzZSkKICAgICAsIG1fd2Fz
VW5sb2FkRXZlbnRFbWl0dGVkKGZhbHNlKQogICAgICwgbV91bmxvYWRFdmVudEJlaW5nRGlzcGF0
Y2hlZChmYWxzZSkKQEAgLTMxNSw3ICszMTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VM
b2NhdGlvbihjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJyZXIsIGJvb2wgbAog
CiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QodXJsLCByZWZlcnJlciwgcmVmcmVzaCA/IFJl
bG9hZElnbm9yaW5nQ2FjaGVEYXRhIDogVXNlUHJvdG9jb2xDYWNoZVBvbGljeSk7CiAgICAgCi0g
ICAgaWYgKGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwocmVxdWVzdC51cmwoKSwgdXNlckdlc3R1cmUp
KQorICAgIGlmIChtX2ZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChyZXF1
ZXN0LnVybCgpLCB1c2VyR2VzdHVyZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVybFNlbGVj
dGVkKHJlcXVlc3QsICJfc2VsZiIsIDAsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0
LCB1c2VyR2VzdHVyZSk7CkBAIC0zMjMsNyArMzIyLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hh
bmdlTG9jYXRpb24oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBib29s
IGwKIAogdm9pZCBGcmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXF1ZXN0LCBjb25zdCBTdHJpbmcmIHBhc3NlZFRhcmdldCwgUGFzc1JlZlB0cjxFdmVudD4g
dHJpZ2dlcmluZ0V2ZW50LCBib29sIGxvY2tIaXN0b3J5LCBib29sIGxvY2tCYWNrRm9yd2FyZExp
c3QsIGJvb2wgdXNlckdlc3R1cmUpCiB7Ci0gICAgaWYgKGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwo
cmVxdWVzdC51cmwoKSwgdXNlckdlc3R1cmUsIGZhbHNlKSkKKyAgICBpZiAobV9mcmFtZS0+c2Ny
aXB0KCktPmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwocmVxdWVzdC51cmwoKSwgdXNlckdlc3R1cmUs
IGZhbHNlKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU3RyaW5nIHRhcmdldCA9IHBhc3NlZFRh
cmdldDsKQEAgLTM2MCw3ICszNTksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpyZXF1ZXN0RnJhbWUo
SFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQsIGNvbnN0IFN0cmluZwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIXNjcmlwdFVSTC5pc0VtcHR5KCkpCi0gICAgICAg
IGZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChzY3JpcHRVUkwpOworICAg
ICAgICBmcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoc2NyaXB0VVJMKTsK
IAogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDMyLDcgKzQzMSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OnN1Ym1pdEZvcm0oY29uc3QgY2hhciogYWN0aW9uLCBjb25zdCBTdHJpbmcmIHVybCwgUGFz
c1JlZlB0cjxGCiAKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQodSkpIHsKICAgICAgICAg
bV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgZXhlY3V0
ZUlmSmF2YVNjcmlwdFVSTCh1LCBmYWxzZSwgZmFsc2UpOworICAgICAgICBtX2ZyYW1lLT5zY3Jp
cHQoKS0+ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTCh1LCBmYWxzZSwgZmFsc2UpOwogICAgICAgICBt
X2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24gPSBmYWxzZTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KQEAgLTY0Nyw2MiArNjQ2LDYgQEAgdm9pZCBGcmFtZUxvYWRlcjo6ZGlkRXhwbGlj
aXRPcGVuKCkKICAgICAgICAgbV9VUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKIH0K
IAotYm9vbCBGcmFtZUxvYWRlcjo6ZXhlY3V0ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiB1
cmwsIGJvb2wgdXNlckdlc3R1cmUsIGJvb2wgcmVwbGFjZURvY3VtZW50KQotewotICAgIGlmICgh
cHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
aWYgKG1fZnJhbWUtPnBhZ2UoKSAmJiAhbV9mcmFtZS0+cGFnZSgpLT5qYXZhU2NyaXB0VVJMc0Fy
ZUFsbG93ZWQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICBjb25zdCBpbnQgamF2YXNj
cmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigiamF2YXNjcmlwdDoiKSAtIDE7Ci0KLSAgICBTdHJp
bmcgc2NyaXB0ID0gdXJsLnN0cmluZygpLnN1YnN0cmluZyhqYXZhc2NyaXB0U2NoZW1lTGVuZ3Ro
KTsKLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7Ci0gICAgaWYgKG1fZnJhbWUtPnNjcmlwdCgpLT54
c3NBdWRpdG9yKCktPmNhbkV2YWx1YXRlSmF2YVNjcmlwdFVSTChzY3JpcHQpKQotICAgICAgICBy
ZXN1bHQgPSBleGVjdXRlU2NyaXB0KGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlcyhzY3JpcHQpLCB1
c2VyR2VzdHVyZSk7Ci0KLSAgICBTdHJpbmcgc2NyaXB0UmVzdWx0OwotICAgIGlmICghcmVzdWx0
LmdldFN0cmluZyhzY3JpcHRSZXN1bHQpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIFNl
Y3VyaXR5T3JpZ2luKiBjdXJyZW50U2VjdXJpdHlPcmlnaW4gPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpOwotCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHdheXMgcmVw
bGFjZSB0aGUgZG9jdW1lbnQsIGJ1dCBkb2luZyBzbwotICAgIC8vICAgICAgICBzeW5jaHJvbm91
c2x5IGNhbiBjYXVzZSBjcmFzaGVzOgotICAgIC8vICAgICAgICBodHRwOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc4MgotICAgIGlmIChyZXBsYWNlRG9jdW1lbnQpIHsKLSAg
ICAgICAgc3RvcEFsbExvYWRlcnMoKTsKLSAgICAgICAgYmVnaW4obV9VUkwsIHRydWUsIGN1cnJl
bnRTZWN1cml0eU9yaWdpbik7Ci0gICAgICAgIHdyaXRlKHNjcmlwdFJlc3VsdCk7Ci0gICAgICAg
IGVuZCgpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi1TY3JpcHRWYWx1ZSBGcmFt
ZUxvYWRlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVz
ZXJHZXN0dXJlKQotewotICAgIHJldHVybiBleGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUo
c2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlID8gS1VSTCgpIDogbV9VUkwpKTsKLX0KLQotU2NyaXB0
VmFsdWUgRnJhbWVMb2FkZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYg
c291cmNlQ29kZSkKLXsKLSAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSB8
fCBtX2ZyYW1lLT5zY3JpcHQoKS0+aXNQYXVzZWQoKSkKLSAgICAgICAgcmV0dXJuIFNjcmlwdFZh
bHVlKCk7Ci0KLSAgICBib29sIHdhc1J1bm5pbmdTY3JpcHQgPSBtX2lzUnVubmluZ1NjcmlwdDsK
LSAgICBtX2lzUnVubmluZ1NjcmlwdCA9IHRydWU7Ci0KLSAgICBTY3JpcHRWYWx1ZSByZXN1bHQg
PSBtX2ZyYW1lLT5zY3JpcHQoKS0+ZXZhbHVhdGUoc291cmNlQ29kZSk7Ci0KLSAgICBpZiAoIXdh
c1J1bm5pbmdTY3JpcHQpIHsKLSAgICAgICAgbV9pc1J1bm5pbmdTY3JpcHQgPSBmYWxzZTsKLSAg
ICAgICAgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7Ci0gICAgfQotCi0g
ICAgcmV0dXJuIHJlc3VsdDsKLX0KIAogdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2VsQW5kQ2xlYXIo
KQogewpAQCAtNzE1LDYgKzY1OCwxNCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjYW5jZWxBbmRDbGVh
cigpCiAgICAgbV9mcmFtZS0+c2NyaXB0KCktPnVwZGF0ZVBsYXRmb3JtU2NyaXB0T2JqZWN0cygp
OwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpyZXBsYWNlRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBo
dG1sKQoreworICAgIHN0b3BBbGxMb2FkZXJzKCk7CisgICAgYmVnaW4obV9VUkwsIHRydWUsIG1f
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHdyaXRlKGh0bWwpOwor
ICAgIGVuZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpjbGVhcihib29sIGNsZWFyV2luZG93
UHJvcGVydGllcywgYm9vbCBjbGVhclNjcmlwdE9iamVjdHMsIGJvb2wgY2xlYXJGcmFtZVZpZXcp
CiB7CiAgICAgbV9mcmFtZS0+ZWRpdG9yKCktPmNsZWFyKCk7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAppbmRl
eCAwMjJkOTI3Li44OTdmYjA4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKQEAgLTIzMSw2ICsyMzEsOCBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgS1VSTCBiYXNlVVJMKCkgY29uc3Q7CiAK
KyAgICAgICAgdm9pZCByZXBsYWNlRG9jdW1lbnQoY29uc3QgU3RyaW5nJik7CisKICAgICAgICAg
dm9pZCBiZWdpbigpOwogICAgICAgICB2b2lkIGJlZ2luKGNvbnN0IEtVUkwmLCBib29sIGRpc3Bh
dGNoV2luZG93T2JqZWN0QXZhaWxhYmxlID0gdHJ1ZSwgU2VjdXJpdHlPcmlnaW4qIGZvcmNlZFNl
Y3VyaXR5T3JpZ2luID0gMCk7CiAKQEAgLTI0Miw5ICsyNDQsNiBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIHZvaWQgc2V0RW5jb2RpbmcoY29uc3QgU3RyaW5nJiBlbmNvZGluZywgYm9v
bCB1c2VyQ2hvc2VuKTsKICAgICAgICAgU3RyaW5nIGVuY29kaW5nKCkgY29uc3Q7CiAKLSAgICAg
ICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7Ci0g
ICAgICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSA9IGZhbHNlKTsKLQogICAgICAgICB2b2lkIGdvdG9BbmNob3Io
KTsKIAogICAgICAgICB2b2lkIHRva2VuaXplclByb2Nlc3NlZERhdGEoKTsKQEAgLTQ1MSw5ICs0
NTAsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgRnJhbWUqIGxvYWRTdWJmcmFt
ZShIVE1MRnJhbWVPd25lckVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHJlZmVycmVyKTsKIAotICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYg
YXJndW1lbnQgaXMgYSBKYXZhU2NyaXB0IFVSTC4KLSAgICAgICAgYm9vbCBleGVjdXRlSWZKYXZh
U2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UsIGJvb2wgcmVw
bGFjZURvY3VtZW50ID0gdHJ1ZSk7Ci0KICAgICAgICAgYm9vbCBnb3RvQW5jaG9yKGNvbnN0IFN0
cmluZyYgbmFtZSk7IC8vIHJldHVybnMgdHJ1ZSBpZiB0aGUgYW5jaG9yIHdhcyBmb3VuZAogICAg
ICAgICB2b2lkIHNjcm9sbFRvQW5jaG9yKGNvbnN0IEtVUkwmKTsKIApAQCAtNDk5LDcgKzQ5NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgU3RyaW5nIG1fb3V0Z29pbmdSZWZlcnJl
cjsKIAogICAgICAgICBib29sIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbjsKLSAg
ICAgICAgYm9vbCBtX2lzUnVubmluZ1NjcmlwdDsKIAogICAgICAgICBTdHJpbmcgbV9yZXNwb25z
ZU1JTUVUeXBlOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAg
Yi9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKaW5kZXggZTRiMzM3Yi4uMWYwNzU2NiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1dlYkNvcmUv
cGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNDUwLDcgKzQ1MCw3IEBAIHZvaWQgUGx1Z2luVmll
dzo6cGVyZm9ybVJlcXVlc3QoUGx1Z2luUmVxdWVzdCogcmVxdWVzdCkKICAgICAKICAgICAvLyBF
eGVjdXRpbmcgYSBzY3JpcHQgY2FuIGNhdXNlIHRoZSBwbHVnaW4gdmlldyB0byBiZSBkZXN0cm95
ZWQsIHNvIHdlIGtlZXAgYSByZWZlcmVuY2UgdG8gdGhlIHBhcmVudCBmcmFtZS4KICAgICBSZWZQ
dHI8RnJhbWU+IHBhcmVudEZyYW1lID0gbV9wYXJlbnRGcmFtZTsKLSAgICBKU1ZhbHVlIHJlc3Vs
dCA9IG1fcGFyZW50RnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KGpzU3RyaW5nLCByZXF1
ZXN0LT5zaG91bGRBbGxvd1BvcHVwcygpKS5qc1ZhbHVlKCk7CisgICAgSlNWYWx1ZSByZXN1bHQg
PSBtX3BhcmVudEZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChqc1N0cmluZywgcmVxdWVz
dC0+c2hvdWxkQWxsb3dQb3B1cHMoKSkuanNWYWx1ZSgpOwogCiAgICAgaWYgKHRhcmdldEZyYW1l
TmFtZS5pc051bGwoKSkgewogICAgICAgICBTdHJpbmcgcmVzdWx0U3RyaW5nOwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAzNzBm
YjJiLi41OGUzMmMyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTEwLTA4ICBBZGFtIEJhcnRo
ICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgTW92ZSBleGVjdXRlU2NyaXB0IGZyb20gRnJhbWVMb2FkZXIgdG8gU2Ny
aXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzAyMDAKKworICAgICAgICBVcGRhdGUgQVBJIGNhbGwuCisKKyAgICAgICAgKiB3ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9z
Y3JpcHQpOgorCiAyMDA5LTEwLTA3ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBGaXggdGhlIEdUSysgYnVpbGQuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CmluZGV4IDQ3ZDdkOTguLjNjYjY5MDggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CkBAIC0zMTUyLDggKzMxNTIsNyBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX3Njcmlw
dChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogc2NyaXB0KQogICAgIGdfcmV0
dXJuX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKICAgICBnX3JldHVybl9p
Zl9mYWlsKHNjcmlwdCk7CiAKLSAgICBpZiAoRnJhbWVMb2FkZXIqIGxvYWRlciA9IGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpLT5sb2FkZXIoKSkKLSAgICAgICAgbG9hZGVyLT5leGVjdXRlU2Ny
aXB0KFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgdHJ1ZSk7CisgICAgY29yZSh3ZWJWaWV3KS0+
bWFpbkZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFN0cmluZzo6ZnJvbVVURjgoc2Ny
aXB0KSwgdHJ1ZSk7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cg
Yi9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2M2M4ODhhLi5jNjBmMmJjIDEwMDY0NAotLS0g
YS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE3IEBACisyMDA5LTEwLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBleGVj
dXRlU2NyaXB0IGZyb20gRnJhbWVMb2FkZXIgdG8gU2NyaXB0Q29udHJvbGxlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDAKKworICAgICAgICBV
cGRhdGUgQVBJIGNhbGwuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAg
ICAoLVtXZWJGcmFtZSBfc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6Zm9y
Y2VVc2VyR2VzdHVyZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dlYlZpZXcgYWVEZXNjQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6XSk6CisK
IDIwMDktMTAtMDcgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgUmUtbGFuZCA0OTI2OS00OTI3MSBzaW5jZSByZXZlcnRpbmcgdGhlbSBkaWQgbm90IGZp
eCB0aGUgdGVzdHMuCmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0g
Yi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KaW5kZXggMjdhYWM2Ny4uZDU5Nzc0YSAx
MDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCisrKyBiL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJGcmFtZS5tbQpAQCAtNTk1LDcgKzU5NSw3IEBAIHN0YXRpYyBpbmxpbmUg
V2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAg
IEFTU0VSVChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpKTsKICAgICAKLSAgICBKU1Zh
bHVlIHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0
KHN0cmluZywgZm9yY2VVc2VyR2VzdHVyZSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUgcmVzdWx0
ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc3RyaW5nLCBm
b3JjZVVzZXJHZXN0dXJlKS5qc1ZhbHVlKCk7CiAKICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJh
bWUpIC8vIEluIGNhc2UgdGhlIHNjcmlwdCByZW1vdmVkIG91ciBmcmFtZSBmcm9tIHRoZSBwYWdl
LgogICAgICAgICByZXR1cm4gQCIiOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0gYi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQppbmRleCA4M2M3ZTIwLi5i
OTFlNDQ3IDEwMDY0NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQpAQCAtNDA5NSw3ICs0MDk1LDcgQEAgc3RhdGlj
IE5TQXBwbGVFdmVudERlc2NyaXB0b3IqIGFlRGVzY0Zyb21KU1ZhbHVlKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSBqc1ZhbHUKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBpZiAoIWNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9
IGNvcmVGcmFtZS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoc2NyaXB0LCB0cnVlKS5qc1ZhbHVl
KCk7CisgICAgSlNWYWx1ZSByZXN1bHQgPSBjb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2Ny
aXB0KHNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOwogICAgIGlmICghcmVzdWx0KSAvLyBGSVhNRTog
cGFzcyBlcnJvcnMKICAgICAgICAgcmV0dXJuIDA7CiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFz
c2VydGlvbnNPbmx5KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBi
L1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAppbmRleCAxNzc3Y2M4Li5kNzEwZGNmIDEwMDY0
NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9x
d2ViZnJhbWUuY3BwCkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBRVmFyaWFudCBRV2ViRnJhbWU6OmV2
YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHRTb3VyY2UpCiAgICAgU2NyaXB0
Q29udHJvbGxlciAqcHJveHkgPSBkLT5mcmFtZS0+c2NyaXB0KCk7CiAgICAgUVZhcmlhbnQgcmM7
CiAgICAgaWYgKHByb3h5KSB7Ci0gICAgICAgIEpTQzo6SlNWYWx1ZSB2ID0gZC0+ZnJhbWUtPmxv
YWRlcigpLT5leGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0U291cmNlKSkuanNW
YWx1ZSgpOworICAgICAgICBKU0M6OkpTVmFsdWUgdiA9IGQtPmZyYW1lLT5zY3JpcHQoKS0+ZXhl
Y3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdFNvdXJjZSkpLmpzVmFsdWUoKTsKICAg
ICAgICAgaW50IGRpc3RhbmNlID0gMDsKICAgICAgICAgcmMgPSBKU0M6OkJpbmRpbmdzOjpjb252
ZXJ0VmFsdWVUb1FWYXJpYW50KHByb3h5LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCB2
LCBRTWV0YVR5cGU6OlZvaWQsICZkaXN0YW5jZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0NoYW5nZUxvZyBiL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggOWJjOGU5NC4uNTE5MmIy
OSAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0NoYW5nZUxvZworKysgYi9XZWJLaXQvcXQvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMTAtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIGV4ZWN1dGVTY3JpcHQgZnJvbSBGcmFtZUxvYWRlciB0byBTY3JpcHRDb250cm9sbGVy
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDIwMAor
CisgICAgICAgIFVwZGF0ZSBBUEkgY2FsbC4KKworICAgICAgICAqIEFwaS9xd2ViZnJhbWUuY3Bw
OgorICAgICAgICAoUVdlYkZyYW1lOjpldmFsdWF0ZUphdmFTY3JpcHQpOgorCiAyMDA5LTEwLTA3
ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1dlYktpdC93
aW4vQ2hhbmdlTG9nCmluZGV4IDE0Njg0MmMuLjZmYWEyZTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
aW4vQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAK
KzIwMDktMTAtMDggIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3ZlIGV4ZWN1dGVTY3JpcHQg
ZnJvbSBGcmFtZUxvYWRlciB0byBTY3JpcHRDb250cm9sbGVyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMDIwMAorCisgICAgICAgIFVwZGF0ZSBBUEkg
Y2FsbC4KKworICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6c3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmcpOgorCiAyMDA5LTEwLTA3ICBBZGFtIEJh
cnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRs
ZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwIGIvV2ViS2l0L3dpbi9XZWJW
aWV3LmNwcAppbmRleCBhM2E4NzU3Li4wODdjNWMyIDEwMDY0NAotLS0gYS9XZWJLaXQvd2luL1dl
YlZpZXcuY3BwCisrKyBiL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTI4NjUsNyArMjg2NSw3
IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmlldzo6c3RyaW5nQnlFdmFsdWF0aW5n
SmF2YVNjcmlwdEZyb21TdHJpbmcoCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVy
biBFX0ZBSUw7CiAKLSAgICBKU0M6OkpTVmFsdWUgc2NyaXB0RXhlY3V0aW9uUmVzdWx0ID0gY29y
ZUZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChXZWJDb3JlOjpTdHJpbmcoc2NyaXB0KSwg
dHJ1ZSkuanNWYWx1ZSgpOworICAgIEpTQzo6SlNWYWx1ZSBzY3JpcHRFeGVjdXRpb25SZXN1bHQg
PSBjb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFdlYkNvcmU6OlN0cmluZyhzY3Jp
cHQpLCB0cnVlKS5qc1ZhbHVlKCk7CiAgICAgaWYgKCFzY3JpcHRFeGVjdXRpb25SZXN1bHQpCiAg
ICAgICAgIHJldHVybiBFX0ZBSUw7CiAgICAgZWxzZSBpZiAoc2NyaXB0RXhlY3V0aW9uUmVzdWx0
LmlzU3RyaW5nKCkpIHsKZGlmZiAtLWdpdCBhL1dlYktpdC93eC9DaGFuZ2VMb2cgYi9XZWJLaXQv
d3gvQ2hhbmdlTG9nCmluZGV4IDc2ZjQ1MzMuLmZhMWM4NjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC93
eC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3d4L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDA5LTEwLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBleGVjdXRlU2NyaXB0IGZy
b20gRnJhbWVMb2FkZXIgdG8gU2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDAKKworICAgICAgICBVcGRhdGUgQVBJIGNh
bGwuCisKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgICh3eFdlYkZyYW1lOjpSdW5T
Y3JpcHQpOgorCiAyMDA5LTEwLTA3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJLaXQvd3gv
V2ViRnJhbWUuY3BwIGIvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAppbmRleCBmMjA1MTUyLi4zOGIz
ZTNmIDEwMDY0NAotLS0gYS9XZWJLaXQvd3gvV2ViRnJhbWUuY3BwCisrKyBiL1dlYktpdC93eC9X
ZWJGcmFtZS5jcHAKQEAgLTE4OCw3ICsxODgsNyBAQCB3eFN0cmluZyB3eFdlYkZyYW1lOjpSdW5T
Y3JpcHQoY29uc3Qgd3hTdHJpbmcmIGphdmFzY3JpcHQpCiB7CiAgICAgd3hTdHJpbmcgcmV0dXJu
VmFsdWUgPSB3eEVtcHR5U3RyaW5nOwogICAgIGlmIChtX2ltcGwtPmZyYW1lKSB7Ci0gICAgICAg
IEpTQzo6SlNWYWx1ZSByZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZVNj
cmlwdChqYXZhc2NyaXB0LCB0cnVlKS5qc1ZhbHVlKCk7CisgICAgICAgIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQgPSBtX2ltcGwtPmZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChqYXZhc2NyaXB0
LCB0cnVlKS5qc1ZhbHVlKCk7CiAgICAgICAgIGlmIChyZXN1bHQpCiAgICAgICAgICAgICByZXR1
cm5WYWx1ZSA9IHd4U3RyaW5nKHJlc3VsdC50b1N0cmluZyhtX2ltcGwtPmZyYW1lLT5zY3JpcHQo
KS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSkuVVRGOFN0cmluZygpLmNfc3RyKCksIHd4
Q29udlVURjgpOyAgICAgICAgCiAgICAgfQ==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40890</attachid>
            <date>2009-10-08 10:26:06 -0700</date>
            <delta_ts>2009-10-08 21:47:43 -0700</delta_ts>
            <desc>Patch v1</desc>
            <filename>bug-30200-20091008102604.patch</filename>
            <type>text/plain</type>
            <size>31724</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmNhZDE2MS4uMDIyYTZlNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAwOS0xMC0wOCAgQWRhbSBCYXJ0aCAg
PGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIE1vdmUgZXhlY3V0ZVNjcmlwdCBmcm9tIEZyYW1lTG9hZGVyIHRvIFNjcmlw
dENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTMwMjAwCisKKyAgICAgICAgVGhlc2UgbWV0aG9kcyBoYXZlIHZpcnR1YWxseSBubyBpbnRl
cmFjdGlvbiB3aXRoIEZyYW1lTG9hZGVyLiAgVGhleQorICAgICAgICByZWFsbHkgc2VlbSBsaWtl
IHRoZXkgb3VnaHQgdG8gYmVsb25nIHRvIFNjcmlwdENvbnRyb2xsZXIuCisKKyAgICAgICAgKiBX
ZWJDb3JlLmJhc2UuZXhwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246OmV4ZWN1dGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcik6CisgICAgICAgIChXZWJDb3JlOjpT
Y3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlw
dENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1Njcmlw
dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xsZXI6OlNjcmlwdENvbnRyb2xsZXIp
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJM
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmg6CisgICAgICAgICog
ZG9tL1hNTFRva2VuaXplci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6Om5v
dGlmeUZpbmlzaGVkKToKKyAgICAgICAgKiBkb20vWE1MVG9rZW5pemVyTGlieG1sMi5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxUb2tlbml6ZXI6OmVuZEVsZW1lbnROcyk6CisgICAgICAgICog
ZG9tL1hNTFRva2VuaXplclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTFRva2VuaXplcjo6
cGFyc2VFbmRFbGVtZW50KToKKyAgICAgICAgKiBodG1sL0hUTUxUb2tlbml6ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTFRva2VuaXplcjo6c2NyaXB0RXhlY3V0aW9uKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OmNoYW5nZUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxl
Y3RlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVxdWVzdEZyYW1lKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpyZXBsYWNlRG9jdW1lbnQpOgorICAgICAgICAqIGxvYWRlci9GcmFt
ZUxvYWRlci5oOgorICAgICAgICAqIHBsdWdpbnMvUGx1Z2luVmlldy5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpwZXJmb3JtUmVxdWVzdCk6CisKIDIwMDktMTAtMDcgIEFkYW0g
QmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNl
aWRlbC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1h
a2VmaWxlLmFtCmluZGV4IDhhNmViZjIuLjhiMGE3MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05V
bWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtNDc0LDYgKzQ3NCw3
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVk
U2NyaXB0VmFsdWUuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL1N0cmluZ1NvdXJjZVByb3ZpZGVyLmggXAor
CVdlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIFwKIAlXZWJDb3JlL2Jy
aWRnZS9JZGVudGlmaWVyUmVwLmNwcCBcCiAJV2ViQ29yZS9icmlkZ2UvSWRlbnRpZmllclJlcC5o
IFwKIAlXZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgXApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9XZWJDb3JlLmJhc2UuZXhwIGIvV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCmluZGV4IDI0ZDgz
NTUuLmY5ZTE1NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAorKysgYi9X
ZWJDb3JlL1dlYkNvcmUuYmFzZS5leHAKQEAgLTE1Niw3ICsxNTYsNiBAQCBfX1pON1dlYkNvcmUx
MUZyYW1lTG9hZGVyMTFjb21wbGV0ZVVSTEVSS05TXzZTdHJpbmdFCiBfX1pON1dlYkNvcmUxMUZy
YW1lTG9hZGVyMTFsb2FkQXJjaGl2ZUVOM1dURjEwUGFzc1JlZlB0cklOU183QXJjaGl2ZUVFRQog
X19aTjdXZWJDb3JlMTFGcmFtZUxvYWRlcjExc2V0RW5jb2RpbmdFUktOU182U3RyaW5nRWIKIF9f
Wk43V2ViQ29yZTExRnJhbWVMb2FkZXIxMnNob3VsZFJlbG9hZEVSS05TXzRLVVJMRVMzXwotX19a
TjdXZWJDb3JlMTFGcmFtZUxvYWRlcjEzZXhlY3V0ZVNjcmlwdEVSS05TXzZTdHJpbmdFYgogX19a
TjdXZWJDb3JlMTFGcmFtZUxvYWRlcjE0ZGV0YWNoQ2hpbGRyZW5FdgogX19aTjdXZWJDb3JlMTFG
cmFtZUxvYWRlcjE0c2Nyb2xsVG9BbmNob3JFUktOU180S1VSTEUKIF9fWk43V2ViQ29yZTExRnJh
bWVMb2FkZXIxNHN0b3BBbGxMb2FkZXJzRU5TXzE0RGF0YWJhc2VQb2xpY3lFCkBAIC0zNzYsNiAr
Mzc1LDcgQEAgX19aTjdXZWJDb3JlMTZOYXZpZ2F0aW9uQWN0aW9uQzFFUktOU180S1VSTEVOU18x
M0ZyYW1lTG9hZFR5cGVFYgogX19aTjdXZWJDb3JlMTZOYXZpZ2F0aW9uQWN0aW9uQzFFUktOU180
S1VSTEVOU18xNE5hdmlnYXRpb25UeXBlRQogX19aTjdXZWJDb3JlMTZOYXZpZ2F0aW9uQWN0aW9u
QzFFdgogX19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTBpbml0U2NyaXB0RXYKK19fWk43
V2ViQ29yZTE2U2NyaXB0Q29udHJvbGxlcjEzZXhlY3V0ZVNjcmlwdEVSS05TXzZTdHJpbmdFYgog
X19aTjdXZWJDb3JlMTZTY3JpcHRDb250cm9sbGVyMTh3aW5kb3dTY3JpcHRPYmplY3RFdgogX19a
TjdXZWJDb3JlMTZWaXNpYmxlU2VsZWN0aW9uQzFFUEtOU181UmFuZ2VFTlNfOUVBZmZpbml0eUUK
IF9fWk43V2ViQ29yZTE2VmlzaWJsZVNlbGVjdGlvbkMxRVJLTlNfMTVWaXNpYmxlUG9zaXRpb25F
UzNfCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCmluZGV4IGE4Y2ZlYjkuLjc4ZWI5YjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS5n
eXBpCisrKyBiL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC02MjUsNiArNjI1LDcgQEAKICAgICAg
ICAgICAgICdiaW5kaW5ncy9qcy9TdHJpbmdTb3VyY2VQcm92aWRlci5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCcsCiAgICAgICAgICAgICAn
YmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5oJywKKyAgICAgICAgICAgICdiaW5k
aW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L0NoaWxkVGhyZWFkRE9NRGF0YS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L0NoaWxk
VGhyZWFkRE9NRGF0YS5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhBYnN0
cmFjdFdvcmtlckN1c3RvbS5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBi
L1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggMjRjZTBjOS4uYzM1ZWEyMCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03NjcsNiAr
NzY3LDcgQEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvU2NyaXB0VmFsdWUuY3BwIFwK
ICAgICBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIFwKICAgICBiaW5kaW5ncy9qcy9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIFwKKyAgICBiaW5kaW5ncy9TY3JpcHRDb250cm9sbGVy
QmFzZS5jcHAgXAogICAgIGJyaWRnZS9JZGVudGlmaWVyUmVwLmNwcCBcCiAgICAgYnJpZGdlL05Q
X2pzb2JqZWN0LmNwcCBcCiAgICAgYnJpZGdlL25wcnVudGltZS5jcHAgXApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggOWE5ZTNlYy4uMGQyZDg5OCAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJDb3JlL1dlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yOTcwNyw2ICsyOTcwNywxMCBAQAogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCiAJCQk8L0ZpbHRlcj4NCisgICAgICA8RmlsZQ0KKyAgICAgICAgUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAiDQorICAgICAg
ICA+DQorICAgICAgPC9GaWxlPg0KIAkJPC9GaWx0ZXI+DQogCQk8RmlsdGVyDQogCQkJTmFtZT0i
cGx1Z2lucyINCmRpZmYgLS1naXQgYS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDE2YTFlNDIuLjk2YTVhYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCisrKyBiL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0yMzUzLDYgKzIzNTMsNyBAQAogCQk5NzlGNDNENDEwNzVFNDRBMDAwMEY4M0Ig
LyogUmVkaXJlY3RTY2hlZHVsZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk3OUY0M0QyMTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3
REQ0RDg2MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3REQ0RDg0MEZERjRENkQwMEVDRjlBNCAv
KiBYU1NBdWRpdG9yLmNwcCAqLzsgfTsKIAkJOTdERDREODcwRkRGNEQ2RTAwRUNGOUE0IC8qIFhT
U0F1ZGl0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDk3REQ0RDg1MEZERjRENkUwMEVDRjlBNCAvKiBYU1NBdWRpdG9yLmggKi87IH07CisJCTk3RUY3
REZFMTA3RTU1QjcwMEQ3QzQ5QyAvKiBTY3JpcHRDb250cm9sbGVyQmFzZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5N0VGN0RGRDEwN0U1NUI3MDBE
N0M0OUMgLyogU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovOyB9OwogCQlBMTdDODEyMjBGMkE1
Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExN0M4MTIwMEYyQTVDRjcwMDVEQUFFQiAvKiBI
VE1MRWxlbWVudEZhY3RvcnkuY3BwICovOyB9OwogCQlBMTdDODEyMzBGMkE1Q0Y3MDA1REFBRUIg
LyogSFRNTEVsZW1lbnRGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBMTdDODEyMTBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0
b3J5LmggKi87IH07CiAJCUE3MTg3NjBFMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTcxODc2MEQw
QjJBMTIwMTAwQTE2RUNFIC8qIERyYWdBY3Rpb25zLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTc1NDYsNiArNzU0Nyw3IEBACiAJCTk3OUY0M0Qy
MTA3NUU0NEEwMDAwRjgzQiAvKiBSZWRpcmVjdFNjaGVkdWxlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBSZWRpcmVjdFNjaGVkdWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5N0RENEQ4NDBGREY0RDZEMDBFQ0Y5QTQgLyogWFNTQXVkaXRvci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBYU1NBdWRpdG9yLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTdERDREODUwRkRGNEQ2RTAwRUNGOUE0IC8qIFhTU0F1
ZGl0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gWFNTQXVkaXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5N0VGN0RGRDEwN0U1NUI3MDBEN0M0OUMgLyog
U2NyaXB0Q29udHJvbGxlckJhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlBMTdDODEyMDBGMkE1Q0Y3MDA1REFBRUIgLyogSFRNTEVsZW1lbnRGYWN0b3J5LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEhUTUxFbGVtZW50RmFjdG9yeS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExN0M4MTIxMEYyQTVDRjcwMDVEQUFF
QiAvKiBIVE1MRWxlbWVudEZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSFRNTEVsZW1lbnRGYWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE3
MTg3NjBEMEIyQTEyMDEwMEExNkVDRSAvKiBEcmFnQWN0aW9ucy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEcmFnQWN0aW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMTQxNjUsNiArMTQxNjcsNyBAQAogCQkJCTkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAv
KiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLywKIAkJCQkxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEg
LyogSURMUGFyc2VyLnBtICovLAogCQkJCTkzRjhCMzA4MEEzMDBGRUEwMEY2MUFCOCAvKiBJRExT
dHJ1Y3R1cmUucG0gKi8sCisJCQkJOTdFRjdERkQxMDdFNTVCNzAwRDdDNDlDIC8qIFNjcmlwdENv
bnRyb2xsZXJCYXNlLmNwcCAqLywKIAkJCSk7CiAJCQlwYXRoID0gYmluZGluZ3M7CiAJCQlzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOwpAQCAtMjAwOTcsNiArMjAxMDAsNyBAQAogCQkJCUE3NUU0OTc3
MTA3NTJBQ0IwMEM5Qjg5NiAvKiBTZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOTcwNTk5NzcxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVj
a2VyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk3RUY3REZFMTA3RTU1QjcwMEQ3QzQ5QyAvKiBT
Y3JpcHRDb250cm9sbGVyQmFzZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5
Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvV2ViQ29yZVNvdXJjZXMuYmtsIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKaW5kZXgg
MDEzYjRkNi4uYzllMTA0ZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wK
KysrIGIvV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKQEAgLTE2MSw2ICsxNjEsNyBAQCBUaGlz
IGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlZGVkIHRvIGJ1aWxkIFdlYkNvcmUu
CiAgICAgICAgIGJpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNXZWJLaXRDU1NNYXRyaXhDb25zdHJ1Y3Rvci5jcHAKICAgICAgICAgYmluZGluZ3Mv
anMvSlNXZWJLaXRQb2ludENvbnN0cnVjdG9yLmNwcAorICAgICAgICBiaW5kaW5ncy9TY3JpcHRD
b250cm9sbGVyQmFzZS5jcHAKICAgICA8L3NldD4KIAogICAgIDxzZXQgYXBwZW5kPSIxIiB2YXI9
IldFQkNPUkVfU09VUkNFU19CUklER0UiPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9T
Y3JpcHRDb250cm9sbGVyQmFzZS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xs
ZXJCYXNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzk1ZGVjCi0t
LSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5j
cHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMSBIYXJy
aSBQb3J0ZW4gKHBvcnRlbkBrZGUub3JnKQorICogIENvcHlyaWdodCAoQykgMjAwMSBQZXRlciBL
ZWxseSAocG1rQHBvc3QuY29tKQorICogIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogIFRoaXMgbGlicmFyeSBpcyBm
cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqICBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgKiAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorICoKKyAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4g
dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5v
dCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5o
IgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2Ny
aXB0U291cmNlQ29kZS5oIgorI2luY2x1ZGUgIlNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiU2V0
dGluZ3MuaCIKKyNpbmNsdWRlICJYU1NBdWRpdG9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQoreworICAgIHJldHVybiBleGVjdXRl
U2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBmb3JjZVVzZXJHZXN0dXJlID8gS1VSTCgp
IDogbV9mcmFtZS0+bG9hZGVyKCktPnVybCgpKSk7Cit9CisKK1NjcmlwdFZhbHVlIFNjcmlwdENv
bnRyb2xsZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29k
ZSkKK3sKKyAgICBpZiAoIWlzRW5hYmxlZCgpIHx8IGlzUGF1c2VkKCkpCisgICAgICAgIHJldHVy
biBTY3JpcHRWYWx1ZSgpOworCisgICAgYm9vbCB3YXNJbkV4ZWN1dGVTY3JpcHQgPSBtX2luRXhl
Y3V0ZVNjcmlwdDsKKyAgICBtX2luRXhlY3V0ZVNjcmlwdCA9IHRydWU7CisKKyAgICBTY3JpcHRW
YWx1ZSByZXN1bHQgPSBldmFsdWF0ZShzb3VyY2VDb2RlKTsKKworICAgIGlmICghd2FzSW5FeGVj
dXRlU2NyaXB0KSB7CisgICAgICAgIG1faW5FeGVjdXRlU2NyaXB0ID0gZmFsc2U7CisgICAgICAg
IERvY3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOworICAgIH0KKworICAgIHJl
dHVybiByZXN1bHQ7Cit9CisKK2Jvb2wgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZUlmSmF2YVNj
cmlwdFVSTChjb25zdCBLVVJMJiB1cmwsIGJvb2wgdXNlckdlc3R1cmUsIGJvb2wgcmVwbGFjZURv
Y3VtZW50KQoreworICAgIGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKG1fZnJhbWUtPnBhZ2UoKSAmJiAhbV9mcmFtZS0+cGFn
ZSgpLT5qYXZhU2NyaXB0VVJMc0FyZUFsbG93ZWQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisK
KyAgICBjb25zdCBpbnQgamF2YXNjcmlwdFNjaGVtZUxlbmd0aCA9IHNpemVvZigiamF2YXNjcmlw
dDoiKSAtIDE7CisKKyAgICBTdHJpbmcgc2NyaXB0ID0gdXJsLnN0cmluZygpLnN1YnN0cmluZyhq
YXZhc2NyaXB0U2NoZW1lTGVuZ3RoKTsKKyAgICBTY3JpcHRWYWx1ZSByZXN1bHQ7CisgICAgaWYg
KHhzc0F1ZGl0b3IoKS0+Y2FuRXZhbHVhdGVKYXZhU2NyaXB0VVJMKHNjcmlwdCkpCisgICAgICAg
IHJlc3VsdCA9IGV4ZWN1dGVTY3JpcHQoZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKHNjcmlwdCks
IHVzZXJHZXN0dXJlKTsKKworICAgIFN0cmluZyBzY3JpcHRSZXN1bHQ7CisgICAgaWYgKCFyZXN1
bHQuZ2V0U3RyaW5nKHNjcmlwdFJlc3VsdCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gRklYTUU6IFdlIHNob3VsZCBhbHdheXMgcmVwbGFjZSB0aGUgZG9jdW1lbnQsIGJ1dCBkb2lu
ZyBzbworICAgIC8vICAgICAgICBzeW5jaHJvbm91c2x5IGNhbiBjYXVzZSBjcmFzaGVzOgorICAg
IC8vICAgICAgICBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc4Mgor
ICAgIGlmIChyZXBsYWNlRG9jdW1lbnQpIAorICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS0+cmVw
bGFjZURvY3VtZW50KHNjcmlwdFJlc3VsdCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3Bw
CmluZGV4IDllNjRiY2UuLjkzMTU1ZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAKQEAgLTEyNSw3ICsxMjUsNyBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0
ZShEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgICAgIGV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dCh3
aW5kb3csIHdpbmRvdy0+c2hlbGwoKSk7CiAgICAgICAgIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZv
ckFsbERvY3VtZW50cygpOwogICAgIH0gZWxzZQotICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmV4
ZWN1dGVTY3JpcHQobV9jb2RlKTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2Ny
aXB0KG1fY29kZSk7CiAKICAgICBmcmFtZS0+c2NyaXB0KCktPnNldFByb2Nlc3NpbmdUaW1lckNh
bGxiYWNrKGZhbHNlKTsKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0
Q29udHJvbGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3Bw
CmluZGV4IGRmYTE2MDIuLmU5OWJiMzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
U2NyaXB0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDb250
cm9sbGVyLmNwcApAQCAtNDgsNiArNDgsNyBAQCBTY3JpcHRDb250cm9sbGVyOjpTY3JpcHRDb250
cm9sbGVyKEZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCiAgICAgLCBtX2hhbmRs
ZXJMaW5lTnVtYmVyKDApCiAgICAgLCBtX3NvdXJjZVVSTCgwKQorICAgICwgbV9pbkV4ZWN1dGVT
Y3JpcHQoZmFsc2UpCiAgICAgLCBtX3Byb2Nlc3NpbmdUaW1lckNhbGxiYWNrKGZhbHNlKQogICAg
ICwgbV9wYXVzZWQoZmFsc2UpCiAgICAgLCBtX2FsbG93UG9wdXBzRnJvbVBsdWdpbihmYWxzZSkK
QEAgLTg0LDcgKzg1LDcgQEAgU2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUo
Y29uc3QgU2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSkKIHsKICAgICBjb25zdCBTb3VyY2VD
b2RlJiBqc1NvdXJjZUNvZGUgPSBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpOwogICAgIFN0cmlu
ZyBzb3VyY2VVUkwgPSBqc1NvdXJjZUNvZGUucHJvdmlkZXIoKS0+dXJsKCk7Ci0gICAgCisKICAg
ICBpZiAoIW1fWFNTQXVkaXRvci0+Y2FuRXZhbHVhdGUoc291cmNlQ29kZS5zb3VyY2UoKSkpIHsK
ICAgICAgICAgLy8gVGhpcyBzY3JpcHQgaXMgbm90IHNhZmUgdG8gYmUgZXZhbHVhdGVkLgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y3JpcHRDb250cm9sbGVyLmggYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIu
aAppbmRleCA1NmU4ZjBjLi5iZDRiNjVlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pz
L1NjcmlwdENvbnRyb2xsZXIuaAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRy
b2xsZXIuaApAQCAtODAsNiArODAsMTIgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gbV93aW5k
b3dTaGVsbC0+d2luZG93KCk7CiAgICAgfQogCisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlw
dChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgU2NyaXB0VmFsdWUgZXhlY3V0ZVNjcmlw
dChjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlID0gZmFsc2UpOwor
CisgICAgLy8gUmV0dXJucyB0cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCisg
ICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtVUkwmLCBib29sIHVzZXJHZXN0
dXJlID0gZmFsc2UsIGJvb2wgcmVwbGFjZURvY3VtZW50ID0gdHJ1ZSk7CisKICAgICBTY3JpcHRW
YWx1ZSBldmFsdWF0ZShjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CiAgICAgdm9pZCBldmFsdWF0
ZUluSXNvbGF0ZWRXb3JsZCh1bnNpZ25lZCB3b3JsZElELCBjb25zdCBWZWN0b3I8U2NyaXB0U291
cmNlQ29kZT4mKTsKIApAQCAtMTU1LDYgKzE2MSw4IEBAIHByaXZhdGU6CiAgICAgaW50IG1faGFu
ZGxlckxpbmVOdW1iZXI7CiAgICAgY29uc3QgU3RyaW5nKiBtX3NvdXJjZVVSTDsKIAorICAgIGJv
b2wgbV9pbkV4ZWN1dGVTY3JpcHQ7CisKICAgICBib29sIG1fcHJvY2Vzc2luZ1RpbWVyQ2FsbGJh
Y2s7CiAgICAgYm9vbCBtX3BhdXNlZDsKICAgICBib29sIG1fYWxsb3dQb3B1cHNGcm9tUGx1Z2lu
OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZWZlZmVkMC4u
ZjgwODE1MSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVy
LmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC04
OCw2ICs4OCw3IEBAIHZvaWQgU2NyaXB0Q29udHJvbGxlcjo6Z2NVbnByb3RlY3RKU1dyYXBwZXIo
dm9pZCogZG9tT2JqZWN0KQogU2NyaXB0Q29udHJvbGxlcjo6U2NyaXB0Q29udHJvbGxlcihGcmFt
ZSogZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQogICAgICwgbV9zb3VyY2VVUkwoMCkKKyAg
ICAsIG1faW5FeGVjdXRlU2NyaXB0KGZhbHNlKQogICAgICwgbV9wcm9jZXNzaW5nVGltZXJDYWxs
YmFjayhmYWxzZSkKICAgICAsIG1fcGF1c2VkKGZhbHNlKQogICAgICwgbV9wcm94eShuZXcgVjhQ
cm94eShmcmFtZSkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRy
b2xsZXIuaCBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCmluZGV4IDk2
NThiMDUuLmNkMDA3MTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29u
dHJvbGxlci5oCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5oCkBA
IC01OSw2ICs1OSwxMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIC8vIG9yIHRoaXMg
YWNjZXNzb3Igc2hvdWxkIGJlIG1hZGUgSlNQcm94eSoKICAgICAgICAgVjhQcm94eSogcHJveHko
KSB7IHJldHVybiBtX3Byb3h5LmdldCgpOyB9CiAKKyAgICAgICAgU2NyaXB0VmFsdWUgZXhlY3V0
ZVNjcmlwdChjb25zdCBTY3JpcHRTb3VyY2VDb2RlJik7CisgICAgICAgIFNjcmlwdFZhbHVlIGV4
ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSA9
IGZhbHNlKTsKKworICAgICAgICAvLyBSZXR1cm5zIHRydWUgaWYgYXJndW1lbnQgaXMgYSBKYXZh
U2NyaXB0IFVSTC4KKyAgICAgICAgYm9vbCBleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IEtV
UkwmLCBib29sIHVzZXJHZXN0dXJlID0gZmFsc2UsIGJvb2wgcmVwbGFjZURvY3VtZW50ID0gdHJ1
ZSk7CisKICAgICAgICAgLy8gRXZhbHVhdGUgYSBzY3JpcHQgZmlsZSBpbiB0aGUgZW52aXJvbm1l
bnQgb2YgdGhpcyBwcm94eS4KICAgICAgICAgLy8gSWYgc3VjY2VlZGVkLCAnc3VjYycgaXMgc2V0
IHRvIHRydWUgYW5kIHJlc3VsdCBpcyByZXR1cm5lZAogICAgICAgICAvLyBhcyBhIHN0cmluZy4K
QEAgLTE2Miw2ICsxNjgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZyYW1lKiBt
X2ZyYW1lOwogICAgICAgICBjb25zdCBTdHJpbmcqIG1fc291cmNlVVJMOwogCisgICAgICAgIGJv
b2wgbV9pbkV4ZWN1dGVTY3JpcHQ7CisKICAgICAgICAgYm9vbCBtX3Byb2Nlc3NpbmdUaW1lckNh
bGxiYWNrOwogICAgICAgICBib29sIG1fcGF1c2VkOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Rv
bS9YTUxUb2tlbml6ZXIuY3BwIGIvV2ViQ29yZS9kb20vWE1MVG9rZW5pemVyLmNwcAppbmRleCA0
ZDA2MzQzLi42MjVhOWU2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXIuY3Bw
CisrKyBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplci5jcHAKQEAgLTI5Niw3ICsyOTYsNyBAQCB2
b2lkIFhNTFRva2VuaXplcjo6bm90aWZ5RmluaXNoZWQoQ2FjaGVkUmVzb3VyY2UqIHVudXNlZFJl
c291cmNlKQogICAgIGlmIChlcnJvck9jY3VycmVkKSAKICAgICAgICAgc2NyaXB0RWxlbWVudC0+
ZGlzcGF0Y2hFcnJvckV2ZW50KCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIG1fdmlldy0+ZnJhbWUo
KS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7CisgICAgICAgIG1fdmlldy0+
ZnJhbWUoKS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoc291cmNlQ29kZSk7CiAgICAgICAgIHNj
cmlwdEVsZW1lbnQtPmRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJMaWJ4bWwyLmNwcCBiL1dlYkNvcmUvZG9tL1hNTFRva2Vu
aXplckxpYnhtbDIuY3BwCmluZGV4IGU0YTk4ZDUuLjI5NDIyNDEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvZG9tL1hNTFRva2VuaXplckxpYnhtbDIuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTFRva2Vu
aXplckxpYnhtbDIuY3BwCkBAIC04NjIsNyArODYyLDcgQEAgdm9pZCBYTUxUb2tlbml6ZXI6OmVu
ZEVsZW1lbnROcygpCiAgICAgICAgICAgICB9IGVsc2UgCiAgICAgICAgICAgICAgICAgbV9zY3Jp
cHRFbGVtZW50ID0gMDsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBtX3ZpZXctPmZyYW1l
KCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KFNjcmlwdFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVu
dC0+c2NyaXB0Q29udGVudCgpLCBtX2RvYy0+dXJsKCksIG1fc2NyaXB0U3RhcnRMaW5lKSk7Cisg
ICAgICAgICAgICBtX3ZpZXctPmZyYW1lKCktPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KFNjcmlw
dFNvdXJjZUNvZGUoc2NyaXB0RWxlbWVudC0+c2NyaXB0Q29udGVudCgpLCBtX2RvYy0+dXJsKCks
IG1fc2NyaXB0U3RhcnRMaW5lKSk7CiAgICAgfQogICAgIG1fcmVxdWVzdGluZ1NjcmlwdCA9IGZh
bHNlOwogICAgIHNldEN1cnJlbnROb2RlKHBhcmVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL2RvbS9YTUxUb2tlbml6ZXJRdC5jcHAgYi9XZWJDb3JlL2RvbS9YTUxUb2tlbml6ZXJRdC5j
cHAKaW5kZXggMDQ0MDVkNi4uYmJiZjI1NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vWE1MVG9r
ZW5pemVyUXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTFRva2VuaXplclF0LmNwcApAQCAtNjIx
LDcgKzYyMSw3IEBAIHZvaWQgWE1MVG9rZW5pemVyOjpwYXJzZUVuZEVsZW1lbnQoKQogICAgICAg
ICAgICAgfSBlbHNlIAogICAgICAgICAgICAgICAgIG1fc2NyaXB0RWxlbWVudCA9IDA7CiAgICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgbV92aWV3LT5mcmFtZSgpLT5sb2FkZXIoKS0+ZXhlY3V0
ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVsZW1lbnQtPnNjcmlwdENvbnRlbnQoKSwg
bV9kb2MtPnVybCgpLCBtX3NjcmlwdFN0YXJ0TGluZSkpOworICAgICAgICAgICAgbV92aWV3LT5m
cmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdEVs
ZW1lbnQtPnNjcmlwdENvbnRlbnQoKSwgbV9kb2MtPnVybCgpLCBtX3NjcmlwdFN0YXJ0TGluZSkp
OwogICAgIH0KICAgICBtX3JlcXVlc3RpbmdTY3JpcHQgPSBmYWxzZTsKICAgICBzZXRDdXJyZW50
Tm9kZShwYXJlbnQuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6
ZXIuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUb2tlbml6ZXIuY3BwCmluZGV4IDFhMmQyNzYuLjY0
ZjBhNjQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVG9rZW5pemVyLmNwcAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTFRva2VuaXplci5jcHAKQEAgLTU2MSw3ICs1NjEsNyBAQCBIVE1MVG9r
ZW5pemVyOjpTdGF0ZSBIVE1MVG9rZW5pemVyOjpzY3JpcHRFeGVjdXRpb24oY29uc3QgU2NyaXB0
U291cmNlQ29kZSYgc291cgogI2VuZGlmCiAKICAgICBtX3N0YXRlID0gc3RhdGU7Ci0gICAgbV9k
b2MtPmZyYW1lKCktPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KHNvdXJjZUNvZGUpOworICAgIG1f
ZG9jLT5mcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChzb3VyY2VDb2RlKTsKICAgICBz
dGF0ZSA9IG1fc3RhdGU7CiAKICAgICBzdGF0ZS5zZXRBbGxvd1lpZWxkKHRydWUpOwpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCmluZGV4IDgzZGE5MWQuLjM1MjNjNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKQEAgLTE3NSw3ICsxNzUsNiBAQCBGcmFtZUxvYWRlcjo6RnJhbWVMb2FkZXIoRnJhbWUqIGZy
YW1lLCBGcmFtZUxvYWRlckNsaWVudCogY2xpZW50KQogICAgICwgbV9zZW50UmVkaXJlY3ROb3Rp
ZmljYXRpb24oZmFsc2UpCiAgICAgLCBtX2luU3RvcEFsbExvYWRlcnMoZmFsc2UpCiAgICAgLCBt
X2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rpb24oZmFsc2UpCi0gICAgLCBtX2lzUnVubmlu
Z1NjcmlwdChmYWxzZSkKICAgICAsIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UoZmFsc2UpCiAgICAg
LCBtX3dhc1VubG9hZEV2ZW50RW1pdHRlZChmYWxzZSkKICAgICAsIG1fdW5sb2FkRXZlbnRCZWlu
Z0Rpc3BhdGNoZWQoZmFsc2UpCkBAIC0zMTUsNyArMzE0LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y2hhbmdlTG9jYXRpb24oY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVycmVyLCBi
b29sIGwKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCwgcmVmZXJyZXIsIHJlZnJl
c2ggPyBSZWxvYWRJZ25vcmluZ0NhY2hlRGF0YSA6IFVzZVByb3RvY29sQ2FjaGVQb2xpY3kpOwog
ICAgIAotICAgIGlmIChleGVjdXRlSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3QudXJsKCksIHVzZXJH
ZXN0dXJlKSkKKyAgICBpZiAobV9mcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVJZkphdmFTY3JpcHRV
UkwocmVxdWVzdC51cmwoKSwgdXNlckdlc3R1cmUpKQogICAgICAgICByZXR1cm47CiAKICAgICB1
cmxTZWxlY3RlZChyZXF1ZXN0LCAiX3NlbGYiLCAwLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3
YXJkTGlzdCwgdXNlckdlc3R1cmUpOwpAQCAtMzIzLDcgKzMyMiw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNoYW5nZUxvY2F0aW9uKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiByZWZlcnJl
ciwgYm9vbCBsCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIFBhc3NSZWZQdHI8
RXZlbnQ+IHRyaWdnZXJpbmdFdmVudCwgYm9vbCBsb2NrSGlzdG9yeSwgYm9vbCBsb2NrQmFja0Zv
cndhcmRMaXN0LCBib29sIHVzZXJHZXN0dXJlKQogewotICAgIGlmIChleGVjdXRlSWZKYXZhU2Ny
aXB0VVJMKHJlcXVlc3QudXJsKCksIHVzZXJHZXN0dXJlLCBmYWxzZSkpCisgICAgaWYgKG1fZnJh
bWUtPnNjcmlwdCgpLT5leGVjdXRlSWZKYXZhU2NyaXB0VVJMKHJlcXVlc3QudXJsKCksIHVzZXJH
ZXN0dXJlLCBmYWxzZSkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0cmluZyB0YXJnZXQgPSBw
YXNzZWRUYXJnZXQ7CkBAIC0zNjAsNyArMzU5LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6cmVxdWVz
dEZyYW1lKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50LCBjb25zdCBTdHJpbmcK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFzY3JpcHRVUkwuaXNFbXB0eSgpKQot
ICAgICAgICBmcmFtZS0+bG9hZGVyKCktPmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoc2NyaXB0VVJM
KTsKKyAgICAgICAgZnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlSWZKYXZhU2NyaXB0VVJMKHNjcmlw
dFVSTCk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQzMiw3ICs0MzEsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzdWJtaXRGb3JtKGNvbnN0IGNoYXIqIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB1
cmwsIFBhc3NSZWZQdHI8RgogCiAgICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHUpKSB7CiAg
ICAgICAgIG1faXNFeGVjdXRpbmdKYXZhU2NyaXB0Rm9ybUFjdGlvbiA9IHRydWU7Ci0gICAgICAg
IGV4ZWN1dGVJZkphdmFTY3JpcHRVUkwodSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgbV9mcmFt
ZS0+c2NyaXB0KCktPmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwodSwgZmFsc2UsIGZhbHNlKTsKICAg
ICAgICAgbV9pc0V4ZWN1dGluZ0phdmFTY3JpcHRGb3JtQWN0aW9uID0gZmFsc2U7CiAgICAgICAg
IHJldHVybjsKICAgICB9CkBAIC02NDcsNjIgKzY0Niw2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRp
ZEV4cGxpY2l0T3BlbigpCiAgICAgICAgIG1fVVJMID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJs
KCk7CiB9CiAKLWJvb2wgRnJhbWVMb2FkZXI6OmV4ZWN1dGVJZkphdmFTY3JpcHRVUkwoY29uc3Qg
S1VSTCYgdXJsLCBib29sIHVzZXJHZXN0dXJlLCBib29sIHJlcGxhY2VEb2N1bWVudCkKLXsKLSAg
ICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkgJiYgIW1fZnJhbWUtPnBhZ2UoKS0+amF2YVNjcmlw
dFVSTHNBcmVBbGxvd2VkKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgY29uc3QgaW50
IGphdmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwotCi0g
ICAgU3RyaW5nIHNjcmlwdCA9IHVybC5zdHJpbmcoKS5zdWJzdHJpbmcoamF2YXNjcmlwdFNjaGVt
ZUxlbmd0aCk7Ci0gICAgU2NyaXB0VmFsdWUgcmVzdWx0OwotICAgIGlmIChtX2ZyYW1lLT5zY3Jp
cHQoKS0+eHNzQXVkaXRvcigpLT5jYW5FdmFsdWF0ZUphdmFTY3JpcHRVUkwoc2NyaXB0KSkKLSAg
ICAgICAgcmVzdWx0ID0gZXhlY3V0ZVNjcmlwdChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMoc2Ny
aXB0KSwgdXNlckdlc3R1cmUpOwotCi0gICAgU3RyaW5nIHNjcmlwdFJlc3VsdDsKLSAgICBpZiAo
IXJlc3VsdC5nZXRTdHJpbmcoc2NyaXB0UmVzdWx0KSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0K
LSAgICBTZWN1cml0eU9yaWdpbiogY3VycmVudFNlY3VyaXR5T3JpZ2luID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKLQotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYWx3
YXlzIHJlcGxhY2UgdGhlIGRvY3VtZW50LCBidXQgZG9pbmcgc28KLSAgICAvLyAgICAgICAgc3lu
Y2hyb25vdXNseSBjYW4gY2F1c2UgY3Jhc2hlczoKLSAgICAvLyAgICAgICAgaHR0cDovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY3ODIKLSAgICBpZiAocmVwbGFjZURvY3VtZW50
KSB7Ci0gICAgICAgIHN0b3BBbGxMb2FkZXJzKCk7Ci0gICAgICAgIGJlZ2luKG1fVVJMLCB0cnVl
LCBjdXJyZW50U2VjdXJpdHlPcmlnaW4pOwotICAgICAgICB3cml0ZShzY3JpcHRSZXN1bHQpOwot
ICAgICAgICBlbmQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotU2NyaXB0VmFs
dWUgRnJhbWVMb2FkZXI6OmV4ZWN1dGVTY3JpcHQoY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSkKLXsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3Vy
Y2VDb2RlKHNjcmlwdCwgZm9yY2VVc2VyR2VzdHVyZSA/IEtVUkwoKSA6IG1fVVJMKSk7Ci19Ci0K
LVNjcmlwdFZhbHVlIEZyYW1lTG9hZGVyOjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUpCi17Ci0gICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFi
bGVkKCkgfHwgbV9mcmFtZS0+c2NyaXB0KCktPmlzUGF1c2VkKCkpCi0gICAgICAgIHJldHVybiBT
Y3JpcHRWYWx1ZSgpOwotCi0gICAgYm9vbCB3YXNSdW5uaW5nU2NyaXB0ID0gbV9pc1J1bm5pbmdT
Y3JpcHQ7Ci0gICAgbV9pc1J1bm5pbmdTY3JpcHQgPSB0cnVlOwotCi0gICAgU2NyaXB0VmFsdWUg
cmVzdWx0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmV2YWx1YXRlKHNvdXJjZUNvZGUpOwotCi0gICAg
aWYgKCF3YXNSdW5uaW5nU2NyaXB0KSB7Ci0gICAgICAgIG1faXNSdW5uaW5nU2NyaXB0ID0gZmFs
c2U7Ci0gICAgICAgIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOwotICAg
IH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19CiAKIHZvaWQgRnJhbWVMb2FkZXI6OmNhbmNlbEFu
ZENsZWFyKCkKIHsKQEAgLTcxNSw2ICs2NTgsMTQgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2FuY2Vs
QW5kQ2xlYXIoKQogICAgIG1fZnJhbWUtPnNjcmlwdCgpLT51cGRhdGVQbGF0Zm9ybVNjcmlwdE9i
amVjdHMoKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlcjo6cmVwbGFjZURvY3VtZW50KGNvbnN0IFN0
cmluZyYgaHRtbCkKK3sKKyAgICBzdG9wQWxsTG9hZGVycygpOworICAgIGJlZ2luKG1fVVJMLCB0
cnVlLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICB3cml0ZSho
dG1sKTsKKyAgICBlbmQoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoYm9vbCBjbGVh
cldpbmRvd1Byb3BlcnRpZXMsIGJvb2wgY2xlYXJTY3JpcHRPYmplY3RzLCBib29sIGNsZWFyRnJh
bWVWaWV3KQogewogICAgIG1fZnJhbWUtPmVkaXRvcigpLT5jbGVhcigpOwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmgKaW5kZXggMDIyZDkyNy4uODk3ZmIwOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCkBAIC0yMzEsNiAr
MjMxLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEtVUkwgYmFzZVVSTCgpIGNv
bnN0OwogCisgICAgICAgIHZvaWQgcmVwbGFjZURvY3VtZW50KGNvbnN0IFN0cmluZyYpOworCiAg
ICAgICAgIHZvaWQgYmVnaW4oKTsKICAgICAgICAgdm9pZCBiZWdpbihjb25zdCBLVVJMJiwgYm9v
bCBkaXNwYXRjaFdpbmRvd09iamVjdEF2YWlsYWJsZSA9IHRydWUsIFNlY3VyaXR5T3JpZ2luKiBm
b3JjZWRTZWN1cml0eU9yaWdpbiA9IDApOwogCkBAIC0yNDIsOSArMjQ0LDYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICB2b2lkIHNldEVuY29kaW5nKGNvbnN0IFN0cmluZyYgZW5jb2Rp
bmcsIGJvb2wgdXNlckNob3Nlbik7CiAgICAgICAgIFN0cmluZyBlbmNvZGluZygpIGNvbnN0Owog
Ci0gICAgICAgIFNjcmlwdFZhbHVlIGV4ZWN1dGVTY3JpcHQoY29uc3QgU2NyaXB0U291cmNlQ29k
ZSYpOwotICAgICAgICBTY3JpcHRWYWx1ZSBleGVjdXRlU2NyaXB0KGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUgPSBmYWxzZSk7Ci0KICAgICAgICAgdm9pZCBnb3Rv
QW5jaG9yKCk7CiAKICAgICAgICAgdm9pZCB0b2tlbml6ZXJQcm9jZXNzZWREYXRhKCk7CkBAIC00
NTEsOSArNDUwLDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIEZyYW1lKiBsb2Fk
U3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiByZWZlcnJlcik7CiAKLSAgICAgICAgLy8gUmV0dXJucyB0
cnVlIGlmIGFyZ3VtZW50IGlzIGEgSmF2YVNjcmlwdCBVUkwuCi0gICAgICAgIGJvb2wgZXhlY3V0
ZUlmSmF2YVNjcmlwdFVSTChjb25zdCBLVVJMJiwgYm9vbCB1c2VyR2VzdHVyZSA9IGZhbHNlLCBi
b29sIHJlcGxhY2VEb2N1bWVudCA9IHRydWUpOwotCiAgICAgICAgIGJvb2wgZ290b0FuY2hvcihj
b25zdCBTdHJpbmcmIG5hbWUpOyAvLyByZXR1cm5zIHRydWUgaWYgdGhlIGFuY2hvciB3YXMgZm91
bmQKICAgICAgICAgdm9pZCBzY3JvbGxUb0FuY2hvcihjb25zdCBLVVJMJik7CiAKQEAgLTQ5OSw3
ICs0OTUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIFN0cmluZyBtX291dGdvaW5n
UmVmZXJyZXI7CiAKICAgICAgICAgYm9vbCBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rp
b247Ci0gICAgICAgIGJvb2wgbV9pc1J1bm5pbmdTY3JpcHQ7CiAKICAgICAgICAgU3RyaW5nIG1f
cmVzcG9uc2VNSU1FVHlwZTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZp
ZXcuY3BwIGIvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IGU0YjMzN2IuLjFm
MDc1NjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcAorKysgYi9X
ZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTQ1MCw3ICs0NTAsNyBAQCB2b2lkIFBs
dWdpblZpZXc6OnBlcmZvcm1SZXF1ZXN0KFBsdWdpblJlcXVlc3QqIHJlcXVlc3QpCiAgICAgCiAg
ICAgLy8gRXhlY3V0aW5nIGEgc2NyaXB0IGNhbiBjYXVzZSB0aGUgcGx1Z2luIHZpZXcgdG8gYmUg
ZGVzdHJveWVkLCBzbyB3ZSBrZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBwYXJlbnQgZnJhbWUuCiAg
ICAgUmVmUHRyPEZyYW1lPiBwYXJlbnRGcmFtZSA9IG1fcGFyZW50RnJhbWU7Ci0gICAgSlNWYWx1
ZSByZXN1bHQgPSBtX3BhcmVudEZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChqc1N0cmlu
ZywgcmVxdWVzdC0+c2hvdWxkQWxsb3dQb3B1cHMoKSkuanNWYWx1ZSgpOworICAgIEpTVmFsdWUg
cmVzdWx0ID0gbV9wYXJlbnRGcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoanNTdHJpbmcs
IHJlcXVlc3QtPnNob3VsZEFsbG93UG9wdXBzKCkpLmpzVmFsdWUoKTsKIAogICAgIGlmICh0YXJn
ZXRGcmFtZU5hbWUuaXNOdWxsKCkpIHsKICAgICAgICAgU3RyaW5nIHJlc3VsdFN0cmluZzsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggMzcwZmIyYi4uNThlMzJjMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOS0xMC0wOCAgQWRh
bSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXhlY3V0ZVNjcmlwdCBmcm9tIEZyYW1lTG9hZGVy
IHRvIFNjcmlwdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMwMjAwCisKKyAgICAgICAgVXBkYXRlIEFQSSBjYWxsLgorCisgICAgICAg
ICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2V4
ZWN1dGVfc2NyaXB0KToKKwogMjAwOS0xMC0wNyAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5j
b20+CiAKICAgICAgICAgRml4IHRoZSBHVEsrIGJ1aWxkLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAppbmRleCA0N2Q3ZDk4Li4zY2I2OTA4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcApAQCAtMzE1Miw4ICszMTUyLDcgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0
ZV9zY3JpcHQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHNjcmlwdCkKICAg
ICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSk7CiAgICAgZ19y
ZXR1cm5faWZfZmFpbChzY3JpcHQpOwogCi0gICAgaWYgKEZyYW1lTG9hZGVyKiBsb2FkZXIgPSBj
b3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCkpCi0gICAgICAgIGxvYWRlci0+ZXhl
Y3V0ZVNjcmlwdChTdHJpbmc6OmZyb21VVEY4KHNjcmlwdCksIHRydWUpOworICAgIGNvcmUod2Vi
VmlldyktPm1haW5GcmFtZSgpLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChTdHJpbmc6OmZyb21V
VEY4KHNjcmlwdCksIHRydWUpOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvQ2hh
bmdlTG9nIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggNjNjODg4YS4uYzYwZjJiYyAxMDA2
NDQKLS0tIGEvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxNyBAQAorMjAwOS0xMC0wOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1v
dmUgZXhlY3V0ZVNjcmlwdCBmcm9tIEZyYW1lTG9hZGVyIHRvIFNjcmlwdENvbnRyb2xsZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjAwCisKKyAg
ICAgICAgVXBkYXRlIEFQSSBjYWxsLgorCisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToK
KyAgICAgICAgKC1bV2ViRnJhbWUgX3N0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3Ry
aW5nOmZvcmNlVXNlckdlc3R1cmU6XSk6CisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IGFlRGVzY0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5n
Ol0pOgorCiAyMDA5LTEwLTA3ICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFJlLWxhbmQgNDkyNjktNDkyNzEgc2luY2UgcmV2ZXJ0aW5nIHRoZW0gZGlk
IG5vdCBmaXggdGhlIHRlc3RzLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCmluZGV4IDI3YWFjNjcuLmQ1
OTc3NGEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KQEAgLTU5NSw3ICs1OTUsNyBAQCBzdGF0aWMg
aW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
IHsKICAgICBBU1NFUlQoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgCi0g
ICAgSlNWYWx1ZSByZXN1bHQgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5sb2FkZXIoKS0+ZXhlY3V0
ZVNjcmlwdChzdHJpbmcsIGZvcmNlVXNlckdlc3R1cmUpLmpzVmFsdWUoKTsKKyAgICBKU1ZhbHVl
IHJlc3VsdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPnNjcmlwdCgpLT5leGVjdXRlU2NyaXB0KHN0
cmluZywgZm9yY2VVc2VyR2VzdHVyZSkuanNWYWx1ZSgpOwogCiAgICAgaWYgKCFfcHJpdmF0ZS0+
Y29yZUZyYW1lKSAvLyBJbiBjYXNlIHRoZSBzY3JpcHQgcmVtb3ZlZCBvdXIgZnJhbWUgZnJvbSB0
aGUgcGFnZS4KICAgICAgICAgcmV0dXJuIEAiIjsKZGlmZiAtLWdpdCBhL1dlYktpdC9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KaW5kZXggODNj
N2UyMC4uYjkxZTQ0NyAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
KysrIGIvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTQwOTUsNyArNDA5NSw3IEBA
IHN0YXRpYyBOU0FwcGxlRXZlbnREZXNjcmlwdG9yKiBhZURlc2NGcm9tSlNWYWx1ZShFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUganNWYWx1CiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgaWYgKCFj
b3JlRnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgSlNWYWx1ZSBy
ZXN1bHQgPSBjb3JlRnJhbWUtPmxvYWRlcigpLT5leGVjdXRlU2NyaXB0KHNjcmlwdCwgdHJ1ZSku
anNWYWx1ZSgpOworICAgIEpTVmFsdWUgcmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS0+ZXhl
Y3V0ZVNjcmlwdChzY3JpcHQsIHRydWUpLmpzVmFsdWUoKTsKICAgICBpZiAoIXJlc3VsdCkgLy8g
RklYTUU6IHBhc3MgZXJyb3JzCiAgICAgICAgIHJldHVybiAwOwogICAgIEpTTG9jayBsb2NrKFNp
bGVuY2VBc3NlcnRpb25zT25seSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFt
ZS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggMTc3N2NjOC4uZDcxMGRj
ZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCisrKyBiL1dlYktpdC9x
dC9BcGkvcXdlYmZyYW1lLmNwcApAQCAtMTI1MSw3ICsxMjUxLDcgQEAgUVZhcmlhbnQgUVdlYkZy
YW1lOjpldmFsdWF0ZUphdmFTY3JpcHQoY29uc3QgUVN0cmluZyYgc2NyaXB0U291cmNlKQogICAg
IFNjcmlwdENvbnRyb2xsZXIgKnByb3h5ID0gZC0+ZnJhbWUtPnNjcmlwdCgpOwogICAgIFFWYXJp
YW50IHJjOwogICAgIGlmIChwcm94eSkgewotICAgICAgICBKU0M6OkpTVmFsdWUgdiA9IGQtPmZy
YW1lLT5sb2FkZXIoKS0+ZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdFNvdXJj
ZSkpLmpzVmFsdWUoKTsKKyAgICAgICAgSlNDOjpKU1ZhbHVlIHYgPSBkLT5mcmFtZS0+c2NyaXB0
KCktPmV4ZWN1dGVTY3JpcHQoU2NyaXB0U291cmNlQ29kZShzY3JpcHRTb3VyY2UpKS5qc1ZhbHVl
KCk7CiAgICAgICAgIGludCBkaXN0YW5jZSA9IDA7CiAgICAgICAgIHJjID0gSlNDOjpCaW5kaW5n
czo6Y29udmVydFZhbHVlVG9RVmFyaWFudChwcm94eS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbEV4
ZWMoKSwgdiwgUU1ldGFUeXBlOjpWb2lkLCAmZGlzdGFuY2UpOwogICAgIH0KZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDliYzhlOTQu
LjUxOTJiMjkgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDA5LTEwLTA4ICBBZGFtIEJhcnRoICA8YWJh
cnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTW92ZSBleGVjdXRlU2NyaXB0IGZyb20gRnJhbWVMb2FkZXIgdG8gU2NyaXB0Q29u
dHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzAyMDAKKworICAgICAgICBVcGRhdGUgQVBJIGNhbGwuCisKKyAgICAgICAgKiBBcGkvcXdlYmZy
YW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZTo6ZXZhbHVhdGVKYXZhU2NyaXB0KToKKwogMjAw
OS0xMC0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9X
ZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCAxNDY4NDJjLi42ZmFhMmUxIDEwMDY0NAotLS0gYS9X
ZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDA5LTEwLTA4ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW92ZSBleGVjdXRl
U2NyaXB0IGZyb20gRnJhbWVMb2FkZXIgdG8gU2NyaXB0Q29udHJvbGxlcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzAyMDAKKworICAgICAgICBVcGRh
dGUgQVBJIGNhbGwuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6
OnN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKToKKwogMjAwOS0xMC0wNyAg
QWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L3dpbi9XZWJWaWV3LmNwcCBiL1dlYktpdC93
aW4vV2ViVmlldy5jcHAKaW5kZXggYTNhODc1Ny4uMDg3YzVjMiAxMDA2NDQKLS0tIGEvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcAorKysgYi9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0yODY1LDcg
KzI4NjUsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYlZpZXc6OnN0cmluZ0J5RXZh
bHVhdGluZ0phdmFTY3JpcHRGcm9tU3RyaW5nKAogICAgIGlmICghY29yZUZyYW1lKQogICAgICAg
ICByZXR1cm4gRV9GQUlMOwogCi0gICAgSlNDOjpKU1ZhbHVlIHNjcmlwdEV4ZWN1dGlvblJlc3Vs
dCA9IGNvcmVGcmFtZS0+bG9hZGVyKCktPmV4ZWN1dGVTY3JpcHQoV2ViQ29yZTo6U3RyaW5nKHNj
cmlwdCksIHRydWUpLmpzVmFsdWUoKTsKKyAgICBKU0M6OkpTVmFsdWUgc2NyaXB0RXhlY3V0aW9u
UmVzdWx0ID0gY29yZUZyYW1lLT5zY3JpcHQoKS0+ZXhlY3V0ZVNjcmlwdChXZWJDb3JlOjpTdHJp
bmcoc2NyaXB0KSwgdHJ1ZSkuanNWYWx1ZSgpOwogICAgIGlmICghc2NyaXB0RXhlY3V0aW9uUmVz
dWx0KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogICAgIGVsc2UgaWYgKHNjcmlwdEV4ZWN1dGlv
blJlc3VsdC5pc1N0cmluZygpKSB7CmRpZmYgLS1naXQgYS9XZWJLaXQvd3gvQ2hhbmdlTG9nIGIv
V2ViS2l0L3d4L0NoYW5nZUxvZwppbmRleCA3NmY0NTMzLi5mYTFjODY5IDEwMDY0NAotLS0gYS9X
ZWJLaXQvd3gvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC93eC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NSBAQAorMjAwOS0xMC0wOCAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1vdmUgZXhlY3V0ZVNj
cmlwdCBmcm9tIEZyYW1lTG9hZGVyIHRvIFNjcmlwdENvbnRyb2xsZXIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMwMjAwCisKKyAgICAgICAgVXBkYXRl
IEFQSSBjYWxsLgorCisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAod3hXZWJGcmFt
ZTo6UnVuU2NyaXB0KToKKwogMjAwOS0xMC0wNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L3d4L1dlYkZyYW1lLmNwcCBiL1dlYktpdC93eC9XZWJGcmFtZS5jcHAKaW5kZXggZjIwNTE1
Mi4uMzhiM2UzZiAxMDA2NDQKLS0tIGEvV2ViS2l0L3d4L1dlYkZyYW1lLmNwcAorKysgYi9XZWJL
aXQvd3gvV2ViRnJhbWUuY3BwCkBAIC0xODgsNyArMTg4LDcgQEAgd3hTdHJpbmcgd3hXZWJGcmFt
ZTo6UnVuU2NyaXB0KGNvbnN0IHd4U3RyaW5nJiBqYXZhc2NyaXB0KQogewogICAgIHd4U3RyaW5n
IHJldHVyblZhbHVlID0gd3hFbXB0eVN0cmluZzsKICAgICBpZiAobV9pbXBsLT5mcmFtZSkgewot
ICAgICAgICBKU0M6OkpTVmFsdWUgcmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+bG9hZGVyKCktPmV4
ZWN1dGVTY3JpcHQoamF2YXNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOworICAgICAgICBKU0M6OkpT
VmFsdWUgcmVzdWx0ID0gbV9pbXBsLT5mcmFtZS0+c2NyaXB0KCktPmV4ZWN1dGVTY3JpcHQoamF2
YXNjcmlwdCwgdHJ1ZSkuanNWYWx1ZSgpOwogICAgICAgICBpZiAocmVzdWx0KQogICAgICAgICAg
ICAgcmV0dXJuVmFsdWUgPSB3eFN0cmluZyhyZXN1bHQudG9TdHJpbmcobV9pbXBsLT5mcmFtZS0+
c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCkpLlVURjhTdHJpbmcoKS5jX3N0
cigpLCB3eENvbnZVVEY4KTsgICAgICAgIAogICAgIH0=
</data>
<flag name="review"
          id="22178"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="22223"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>