<?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>132653</bug_id>
          
          <creation_ts>2014-05-07 10:52:10 -0700</creation_ts>
          <short_desc>Make blob size computation lazy</short_desc>
          <delta_ts>2014-05-07 11:58:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007368</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-07 10:52:10 -0700</bug_when>
    <thetext>Blobs should only compute the size when asked to.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007372</commentid>
    <comment_count>1</comment_count>
      <attachid>231006</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-07 10:53:25 -0700</bug_when>
    <thetext>Created attachment 231006
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007374</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-05-07 10:56:17 -0700</bug_when>
    <thetext>Attachment 231006 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:39:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007394</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-07 11:58:15 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r168435&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>231006</attachid>
            <date>2014-05-07 10:53:25 -0700</date>
            <delta_ts>2014-05-07 10:59:11 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>RegisterAsync.txt</filename>
            <type>text/plain</type>
            <size>35982</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODQyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY3IEBACisyMDE0LTA1LTA3ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgYmxvYiBzaXplIGNv
bXB1dGF0aW9uIGxhenkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEzMjY1MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJsb2I6OkJsb2Ip
OgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6c2l6ZSk6CisgICAgICAgICogZmlsZWFwaS9CbG9i
Lmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzaXplKTogRGVsZXRlZC4KKyAgICAgICAgKiBm
aWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6c2l6ZSk6IERlbGV0ZWQu
CisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAgICogZmlsZWFwaS9UaHJlYWRhYmxl
QmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUJs
b2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFi
bGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKFdlYkNv
cmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OnVucmVnaXN0ZXJCbG9iVVJMVGFzayk6IERlbGV0ZWQuCisgICAgICAgICogZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9C
bG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6YXBwZW5kRGF0YSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Qmxv
YlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JS
ZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKworMjAxNC0wNS0wNyAgQWxleGV5IFByb3Nr
dXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRp
b24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09Q
UyEpLgorCisgICAgICAgICogZmlsZWFwaS9CbG9iLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJs
b2I6OkJsb2IpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYjo6c2l6ZSk6CisgICAgICAgICogZmls
ZWFwaS9CbG9iLmg6CisgICAgICAgIChXZWJDb3JlOjpCbG9iOjpzaXplKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBmaWxlYXBpL0ZpbGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsZTo6c2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgICogZmlsZWFwaS9GaWxlLmg6CisgICAgICAgICogZmlsZWFwaS9U
aHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAgICAoV2ViQ29yZTo6VGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OlRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKToKKyAg
ICAgICAgKFdlYkNvcmU6OnVucmVnaXN0ZXJCbG9iVVJMVGFzayk6IERlbGV0ZWQuCisgICAgICAg
ICogZmlsZWFwaS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5Lmg6CisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9CbG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6YXBwZW5k
RGF0YSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuaDoKKwogMjAxNC0wNS0wNyAgQ2hy
aXN0b3BoZSBEdW1leiAgPGNoLmR1bWV6QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtIVE1MXSBE
ZWZhdWx0IGFyZ3VtZW50IHRvIEhUTUxUYWJsZUVsZW1lbnQuaW5zZXJ0Um93KCkgc2hvdWxkIGJl
IC0xCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAJKHJldmlzaW9uIDE2ODQxMikKKysrIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc5LDE4ICs3
OSwyMCBAQCBCbG9iOjpCbG9iKCkKIAogQmxvYjo6QmxvYihWZWN0b3I8Y2hhcj4gZGF0YSwgY29u
c3QgU3RyaW5nJiBjb250ZW50VHlwZSkKICAgICA6IG1fdHlwZShjb250ZW50VHlwZSkKKyAgICAs
IG1fc2l6ZShkYXRhLnNpemUoKSkKIHsKICAgICBWZWN0b3I8QmxvYlBhcnQ+IGJsb2JQYXJ0czsK
ICAgICBibG9iUGFydHMuYXBwZW5kKEJsb2JQYXJ0KHN0ZDo6bW92ZShkYXRhKSkpOwogICAgIG1f
aW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIG1fc2l6ZSA9
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBz
dGQ6Om1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBzdGQ6Om1vdmUoYmxvYlBhcnRz
KSwgY29udGVudFR5cGUpOwogfQogCiBCbG9iOjpCbG9iKFZlY3RvcjxCbG9iUGFydD4gYmxvYlBh
cnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKQogICAgIDogbV90eXBlKGNvbnRlbnRUeXBl
KQorICAgICwgbV9zaXplKC0xKQogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJMOjpjcmVh
dGVJbnRlcm5hbFVSTCgpOwotICAgIG1fc2l6ZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMLCBzdGQ6Om1vdmUoYmxvYlBhcnRzKSwgY29udGVu
dFR5cGUpOworICAgIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChtX2lu
dGVybmFsVVJMLCBzdGQ6Om1vdmUoYmxvYlBhcnRzKSwgY29udGVudFR5cGUpOwogfQogCiBCbG9i
OjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvbnN0IFVSTCYgc3JjVVJMLCBjb25z
dCBTdHJpbmcmIHR5cGUsIGxvbmcgbG9uZyBzaXplKQpAQCAtMTA0LDkgKzEwNiwxMCBAQCBCbG9i
OjpCbG9iKERlc2VyaWFsaXphdGlvbkNvbnRydWN0b3IsIGNvCiAjaWYgRU5BQkxFKEJMT0IpCiBC
bG9iOjpCbG9iKGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBl
bmQsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICA6IG1fdHlwZShCbG9iOjpub3JtYWxpemVkQ29u
dGVudFR5cGUodHlwZSkpCisgICAgLCBtX3NpemUoLTEpIC8vIHNpemUgaXMgbm90IG5lY2Vzc2Fy
aWx5IGVxdWFsIHRvIGVuZCAtIHN0YXJ0LgogewogICAgIG1faW50ZXJuYWxVUkwgPSBCbG9iVVJM
OjpjcmVhdGVJbnRlcm5hbFVSTCgpOwotICAgIG1fc2l6ZSA9IFRocmVhZGFibGVCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG1faW50ZXJuYWxVUkwsIHNyY1VSTCwgc3RhcnQs
IGVuZCk7CisgICAgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2UobV9pbnRlcm5hbFVSTCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKIH0KICNlbmRpZgogCkBAIC0x
MTUsNiArMTE4LDE4IEBAIEJsb2I6On5CbG9iKCkKICAgICBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
Ojp1bnJlZ2lzdGVyQmxvYlVSTChtX2ludGVybmFsVVJMKTsKIH0KIAordW5zaWduZWQgbG9uZyBs
b25nIEJsb2I6OnNpemUoKSBjb25zdAoreworICAgIGlmIChtX3NpemUgPCAwKSB7CisgICAgICAg
IC8vIEZJWE1FOiBKYXZhU2NyaXB0IGNhbm5vdCByZXByZXNlbnQgc2l6ZXMgYXMgbGFyZ2UgYXMg
dW5zaWduZWQgbG9uZyBsb25nLCB3ZSBuZWVkIHRvCisgICAgICAgIC8vIGNvbWUgdXAgd2l0aCBh
biBleGNlcHRpb24gdG8gdGhyb3cgaWYgZmlsZSBzaXplIGlzIG5vdCByZXByZXNlbnRhYmxlLgor
ICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWN0dWFsU2l6ZSA9IFRocmVhZGFibGVCbG9iUmVn
aXN0cnk6OmJsb2JTaXplKG1faW50ZXJuYWxVUkwpOworICAgICAgICBtX3NpemUgPSAoYWN0dWFs
U2l6ZSA8PSBzdGQ6Om51bWVyaWNfbGltaXRzPGxvbmcgbG9uZz46Om1heCgpKSA/IHN0YXRpY19j
YXN0PGxvbmcgbG9uZz4oYWN0dWFsU2l6ZSkgOiAwOworICAgIH0KKworICAgIHJldHVybiBzdGF0
aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fc2l6ZSk7Cit9CisKIGJvb2wgQmxvYjo6aXNW
YWxpZENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgaWYgKGNv
bnRlbnRUeXBlLmlzTnVsbCgpKQpJbmRleDogU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9CbG9iLmgJKHJldmlzaW9uIDE2
ODQxMikKKysrIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvQmxvYi5oCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBVUkwmIHVybCgpIGNvbnN0IHsgcmV0
dXJuIG1faW50ZXJuYWxVUkw7IH0KICAgICBjb25zdCBTdHJpbmcmIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBj
b25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nIGxvbmc+KG1fc2l6ZSk7IH0K
KyAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBp
c0ZpbGUoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gVGhlIGNoZWNrcyBkZXNj
cmliZWQgaW4gdGhlIEZpbGUgQVBJIHNwZWMuCkBAIC0xMTMsNyArMTEzLDcgQEAgcHJvdGVjdGVk
OgogICAgIFVSTCBtX2ludGVybmFsVVJMOwogCiAgICAgU3RyaW5nIG1fdHlwZTsKLSAgICBsb25n
IGxvbmcgbV9zaXplOworICAgIG11dGFibGUgbG9uZyBsb25nIG1fc2l6ZTsKIH07CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAkocmV2aXNpb24g
MTY4NDEyKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFwaS9GaWxlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzcsMTYgKzc3LDYgQEAgZG91YmxlIEZpbGU6Omxhc3RNb2RpZmllZERhdGUoKSBjb25z
dAogICAgIHJldHVybiBjdXJyZW50VGltZSgpICogbXNQZXJTZWNvbmQ7CiB9CiAKLXVuc2lnbmVk
IGxvbmcgbG9uZyBGaWxlOjpzaXplKCkgY29uc3QKLXsKLSAgICAvLyBGSVhNRTogSmF2YVNjcmlw
dCBjYW5ub3QgcmVwcmVzZW50IHNpemVzIGFzIGxhcmdlIGFzIHVuc2lnbmVkIGxvbmcgbG9uZywg
d2UgbmVlZCB0bwotICAgIC8vIGNvbWUgdXAgd2l0aCBhbiBleGNlcHRpb24gdG8gdGhyb3cgaWYg
ZmlsZSBzaXplIGlzIG5vdCByZXByZXNlbnRhYmxlLgotICAgIGxvbmcgbG9uZyBzaXplOwotICAg
IGlmICghZ2V0RmlsZVNpemUobV9wYXRoLCBzaXplKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmcgbG9uZz4oc2l6ZSk7Ci19Ci0KIFN0cmlu
ZyBGaWxlOjpjb250ZW50VHlwZUZyb21GaWxlUGF0aE9yTmFtZShjb25zdCBTdHJpbmcmIG5hbWUs
IEZpbGU6OkNvbnRlbnRUeXBlTG9va3VwUG9saWN5IHBvbGljeSkKIHsKICAgICBTdHJpbmcgdHlw
ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvRmlsZS5oCShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0ZpbGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsMTMgKzYxLDEyIEBA
IHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlKHBhdGgsIG5hbWUsIHBv
bGljeSkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNGaWxlKCkgY29uc3Qgb3ZlcnJpZGUg
eyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29uc3QgeyByZXR1
cm4gbV9wYXRoOyB9CiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9u
YW1lOyB9CiAKLSAgICAvLyBUaGlzIHJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBp
ZiB0aGUgZmlsZSdzIGxhc3QgbW9kaWZpZWNhdGlvbiBkYXRlIGlzIG5vdCBrbm93biAocGVyIHNw
ZWM6IGh0dHA6Ly93d3cudzMub3JnL1RSL0ZpbGVBUEkvI2Rmbi1sYXN0TW9kaWZpZWREYXRlKS4K
KyAgICAvLyBUaGlzIHJldHVybnMgdGhlIGN1cnJlbnQgZGF0ZSBhbmQgdGltZSBpZiB0aGUgZmls
ZSdzIGxhc3QgbW9kaWZpY2F0aW9uIGRhdGUgaXMgbm90IGtub3duIChwZXIgc3BlYzogaHR0cDov
L3d3dy53My5vcmcvVFIvRmlsZUFQSS8jZGZuLWxhc3RNb2RpZmllZERhdGUpLgogICAgIGRvdWJs
ZSBsYXN0TW9kaWZpZWREYXRlKCkgY29uc3Q7CiAKICAgICBzdGF0aWMgU3RyaW5nIGNvbnRlbnRU
eXBlRnJvbUZpbGVQYXRoT3JOYW1lKGNvbnN0IFN0cmluZyYsIENvbnRlbnRUeXBlTG9va3VwUG9s
aWN5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3Ry
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZmlsZWFwaS9UaHJlYWRhYmxlQmxv
YlJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMTY4NDEyKQorKysgU291cmNlL1dlYkNvcmUvZmlsZWFw
aS9UaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDcgKzEw
Niw2IEBAIHZvaWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWwKICAgICBlbHNl
IHsKICAgICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29sYXRlZCBj
b3B5IG9mIGRhdGEuCiAgICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQgPSBuZXcg
QmxvYlJlZ2lzdHJ5Q29udGV4dCh1cmwsIHBhdGgsIGNvbnRlbnRUeXBlKTsKLSAgICAgICAgQmlu
YXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKICAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4
dF0gewogICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJs
b2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7CiAgICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5y
ZWdpc3RlckZpbGVCbG9iVVJMKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVybCwgYmxvYlJlZ2lzdHJ5
Q29udGV4dC0+cGF0aCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+Y29udGVudFR5cGUpOwpAQCAtMTE0
LDIzICsxMTMsMTggQEAgdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckZpbAog
ICAgIH0KIH0KIAotdW5zaWduZWQgbG9uZyBsb25nIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHMs
IGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6
OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFy
dHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25n
IHJlc3VsdFNpemU7CiAgICAgaWYgKGlzTWFpblRocmVhZCgpKQotICAgICAgICByZXN1bHRTaXpl
ID0gYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMKHVybCwgc3RkOjptb3ZlKGJsb2JQYXJ0
cyksIGNvbnRlbnRUeXBlKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJM
KHVybCwgc3RkOjptb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKICAgICBlbHNlIHsKICAg
ICAgICAgLy8gQmxvYlJlZ2lzdHJ5Q29udGV4dCBwZXJmb3JtcyBhbiBpc29sYXRlZCBjb3B5IG9m
IGRhdGEuCiAgICAgICAgIEJsb2JSZWdpc3RyeUNvbnRleHQqIGNvbnRleHQgPSBuZXcgQmxvYlJl
Z2lzdHJ5Q29udGV4dCh1cmwsIHN0ZDo6bW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7Ci0g
ICAgICAgIEJpbmFyeVNlbWFwaG9yZSBzZW1hcGhvcmU7Ci0gICAgICAgIGNhbGxPbk1haW5UaHJl
YWQoW2NvbnRleHQsICZzZW1hcGhvcmUsICZyZXN1bHRTaXplXSB7CisgICAgICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2NvbnRleHRdIHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVn
aXN0cnlDb250ZXh0PiBibG9iUmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAg
cmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTChibG9iUmVnaXN0cnlD
b250ZXh0LT51cmwsIHN0ZDo6bW92ZShibG9iUmVnaXN0cnlDb250ZXh0LT5ibG9iUGFydHMpLCBi
bG9iUmVnaXN0cnlDb250ZXh0LT5jb250ZW50VHlwZSk7Ci0gICAgICAgICAgICBzZW1hcGhvcmUu
c2lnbmFsKCk7CisgICAgICAgICAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkwoYmxv
YlJlZ2lzdHJ5Q29udGV4dC0+dXJsLCBzdGQ6Om1vdmUoYmxvYlJlZ2lzdHJ5Q29udGV4dC0+Ymxv
YlBhcnRzKSwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+Y29udGVudFR5cGUpOwogICAgICAgICB9KTsK
LSAgICAgICAgc2VtYXBob3JlLndhaXQoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgo
KSk7CiAgICAgfQotICAgIHJldHVybiByZXN1bHRTaXplOwogfQogCiB2b2lkIFRocmVhZGFibGVC
bG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChTZWN1cml0eU9yaWdpbiogb3JpZ2luLCBjb25z
dCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwpCkBAIC0xNTEsMTggKzE0NSwzMiBAQCB2b2lk
IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvCiAgICAgfQogfQogCi11bnNpZ25l
ZCBsb25nIGxvbmcgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xp
Y2UoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxv
YlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBs
b25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKQogewotICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1
bHRTaXplOwogICAgIGlmIChpc01haW5UaHJlYWQoKSkKLSAgICAgICAgcmVzdWx0U2l6ZSA9IGJs
b2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKG5ld1VSTCwgc3JjVVJMLCBzdGFy
dCwgZW5kKTsKKyAgICAgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2Uo
bmV3VVJMLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOwogICAgIGVsc2UgewogICAgICAgICAvLyBCbG9i
UmVnaXN0cnlDb250ZXh0IHBlcmZvcm1zIGFuIGlzb2xhdGVkIGNvcHkgb2YgZGF0YS4KICAgICAg
ICAgQmxvYlJlZ2lzdHJ5Q29udGV4dCogY29udGV4dCA9IG5ldyBCbG9iUmVnaXN0cnlDb250ZXh0
KG5ld1VSTCwgc3JjVVJMKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCwgc3Rh
cnQsIGVuZF0geworICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRl
eHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQoY29udGV4dCk7CisgICAgICAgICAgICBibG9iUmVnaXN0
cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZShibG9iUmVnaXN0cnlDb250ZXh0LT51cmwsIGJs
b2JSZWdpc3RyeUNvbnRleHQtPnNyY1VSTCwgc3RhcnQsIGVuZCk7CisgICAgICAgIH0pOworICAg
IH0KK30KKwordW5zaWduZWQgbG9uZyBsb25nIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmJsb2JT
aXplKGNvbnN0IFVSTCYgdXJsKQoreworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHRTaXpl
OworICAgIGlmIChpc01haW5UaHJlYWQoKSkKKyAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JSZWdp
c3RyeSgpLmJsb2JTaXplKHVybCk7CisgICAgZWxzZSB7CisgICAgICAgIC8vIEJsb2JSZWdpc3Ry
eUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgorICAgICAgICBCbG9i
UmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsKTsK
ICAgICAgICAgQmluYXJ5U2VtYXBob3JlIHNlbWFwaG9yZTsKLSAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChbY29udGV4dCwgc3RhcnQsIGVuZCwgJnNlbWFwaG9yZSwgJnJlc3VsdFNpemVdIHsKKyAg
ICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dCwgJnNlbWFwaG9yZSwgJnJlc3VsdFNpemVd
IHsKICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCbG9iUmVnaXN0cnlDb250ZXh0PiBibG9i
UmVnaXN0cnlDb250ZXh0KGNvbnRleHQpOwotICAgICAgICAgICAgcmVzdWx0U2l6ZSA9IGJsb2JS
ZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGJsb2JSZWdpc3RyeUNvbnRleHQtPnVy
bCwgYmxvYlJlZ2lzdHJ5Q29udGV4dC0+c3JjVVJMLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAg
IHJlc3VsdFNpemUgPSBibG9iUmVnaXN0cnkoKS5ibG9iU2l6ZShibG9iUmVnaXN0cnlDb250ZXh0
LT51cmwpOwogICAgICAgICAgICAgc2VtYXBob3JlLnNpZ25hbCgpOwogICAgICAgICB9KTsKICAg
ICAgICAgc2VtYXBob3JlLndhaXQoc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptYXgoKSk7
CkBAIC0xNzAsMTIgKzE3OCw2IEBAIHVuc2lnbmVkIGxvbmcgbG9uZyBUaHJlYWRhYmxlQmxvYlJl
Z2lzdHIKICAgICByZXR1cm4gcmVzdWx0U2l6ZTsKIH0KIAotc3RhdGljIHZvaWQgdW5yZWdpc3Rl
ckJsb2JVUkxUYXNrKHZvaWQqIGNvbnRleHQpCi17Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JS
ZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNvbnRleHQoc3RhdGljX2Nhc3Q8QmxvYlJlZ2lz
dHJ5Q29udGV4dCo+KGNvbnRleHQpKTsKLSAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxv
YlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51cmwpOwotfQotCiB2b2lkIFRocmVhZGFibGVCbG9i
UmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQogewogICAgIGlmIChC
bG9iVVJMOjpnZXRPcmlnaW4odXJsKSA9PSAibnVsbCIpCkBAIC0xODMsOCArMTg1LDE0IEBAIHZv
aWQgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6dW5yZWdpc3RlckIKIAogICAgIGlmIChpc01haW5U
aHJlYWQoKSkKICAgICAgICAgYmxvYlJlZ2lzdHJ5KCkudW5yZWdpc3RlckJsb2JVUkwodXJsKTsK
LSAgICBlbHNlCi0gICAgICAgIGNhbGxPbk1haW5UaHJlYWQoJnVucmVnaXN0ZXJCbG9iVVJMVGFz
aywgbmV3IEJsb2JSZWdpc3RyeUNvbnRleHQodXJsKSk7CisgICAgZWxzZSB7CisgICAgICAgIC8v
IEJsb2JSZWdpc3RyeUNvbnRleHQgcGVyZm9ybXMgYW4gaXNvbGF0ZWQgY29weSBvZiBkYXRhLgor
ICAgICAgICBCbG9iUmVnaXN0cnlDb250ZXh0KiBjb250ZXh0ID0gbmV3IEJsb2JSZWdpc3RyeUNv
bnRleHQodXJsKTsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbY29udGV4dF0geworICAgICAg
ICAgICAgc3RkOjp1bmlxdWVfcHRyPEJsb2JSZWdpc3RyeUNvbnRleHQ+IGJsb2JSZWdpc3RyeUNv
bnRleHQoY29udGV4dCk7CisgICAgICAgICAgICBibG9iUmVnaXN0cnkoKS51bnJlZ2lzdGVyQmxv
YlVSTChibG9iUmVnaXN0cnlDb250ZXh0LT51cmwpOworICAgICAgICB9KTsKKyAgICB9CiB9CiAK
IFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OmdldENh
Y2hlZE9yaWdpbihjb25zdCBVUkwmIHVybCkKQEAgLTE5OCwyNCArMjA2LDI3IEBAIHZvaWQgVGhy
ZWFkYWJsZUJsb2JSZWdpc3RyeTo6cmVnaXN0ZXJGaWwKIHsKIH0KIAotdW5zaWduZWQgbG9uZyBs
b25nIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBW
ZWN0b3I8QmxvYlBhcnQ+LCBjb25zdCBTdHJpbmcmKQordm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiwgY29uc3Qg
U3RyaW5nJikKIHsKLSAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBUaHJlYWRhYmxlQmxvYlJlZ2lz
dHJ5OjpyZWdpc3RlckJsb2JVUkwoU2VjdXJpdHlPcmlnaW4qLCBjb25zdCBVUkwmLCBjb25zdCBV
UkwmKQogewogfQogCi11bnNpZ25lZCBsb25nIGxvbmcgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeTo6
cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiwgbG9uZyBsb25n
LCBsb25nIGxvbmcpCit2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnJlZ2lzdGVyQmxvYlVS
TEZvclNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYsIGxvbmcgbG9uZywgbG9uZyBsb25nKQog
ewotICAgIHJldHVybiAwOwogfQogCiB2b2lkIFRocmVhZGFibGVCbG9iUmVnaXN0cnk6OnVucmVn
aXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYpCiB7CiB9CiAKK3Vuc2lnbmVkIGxvbmcgbG9uZyBUaHJl
YWRhYmxlQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShjb25zdCBVUkwmKQoreworICAgIHJldHVybiAw
OworfQorCiBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
OjpnZXRDYWNoZWRPcmlnaW4oY29uc3QgVVJMJikKIHsKICAgICByZXR1cm4gMDsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2ZpbGVhcGkvVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oCShyZXZp
c2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9maWxlYXBpL1RocmVhZGFibGVCbG9iUmVn
aXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTEgKzQzLDEyIEBAIGNsYXNzIFNlY3VyaXR5
T3JpZ2luOwogY2xhc3MgVGhyZWFkYWJsZUJsb2JSZWdpc3RyeSB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHBh
dGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHN0YXRpYyB1bnNpZ25lZCBsb25n
IGxvbmcgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBh
cnRzLCBjb25zdCBTdHJpbmcmIGNvbnRlbnRUeXBlKTsKKyAgICBzdGF0aWMgdm9pZCByZWdpc3Rl
ckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0
cmluZyYgY29udGVudFR5cGUpOwogICAgIHN0YXRpYyB2b2lkIHJlZ2lzdGVyQmxvYlVSTChTZWN1
cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMKTsKKyAgICBzdGF0aWMg
dm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgVVJM
JiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCk7CiAgICAgc3RhdGljIHZv
aWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJik7CiAKLSAgICBzdGF0aWMgdW5zaWduZWQg
bG9uZyBsb25nIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgbmV3VVJMLCBjb25z
dCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKTsKKyAgICBzdGF0
aWMgdW5zaWduZWQgbG9uZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpOwogCiAgICAgLy8gUmV0
dXJucyB0aGUgb3JpZ2luIGZvciB0aGUgZ2l2ZW4gYmxvYiBVUkwuIFRoaXMgaXMgYmVjYXVzZSB3
ZSBhcmUgbm90IGFibGUgdG8gZW1iZWQgdGhlIHVuaXF1ZSBzZWN1cml0eSBvcmlnaW4gb3IgdGhl
IG9yaWdpbiBvZiBmaWxlIFVSTAogICAgIC8vIGluIHRoZSBibG9iIFVSTC4KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuY3BwCShyZXZpc2lvbiAxNjg0
MTIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjksNyArNjksOCBAQCB2b2lkIEJsb2JEYXRhOjpzZXRDb250ZW50VHlw
ZShjb25zdCBTdHJpCiAKIHZvaWQgQmxvYkRhdGE6OmFwcGVuZERhdGEoUGFzc1JlZlB0cjxSYXdE
YXRhPiBkYXRhKQogewotICAgIGFwcGVuZERhdGEoZGF0YSwgMCwgZGF0YS0+bGVuZ3RoKCkpOwor
ICAgIHNpemVfdCBkYXRhU2l6ZSA9IGRhdGEtPmxlbmd0aCgpOworICAgIGFwcGVuZERhdGEoZGF0
YSwgMCwgZGF0YVNpemUpOwogfQogCiB2b2lkIEJsb2JEYXRhOjphcHBlbmREYXRhKFBhc3NSZWZQ
dHI8UmF3RGF0YT4gZGF0YSwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnkuaAko
cmV2aXNpb24gMTY4NDEyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9i
UmVnaXN0cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTYgKzUwLDE4IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgcmVnaXN0ZXJGaWxlQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBTdHJp
bmcmIHBhdGgsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpID0gMDsKIAogICAgIC8vIFJlZ2lz
dGVycyBhIGJsb2IgVVJMIHJlZmVycmluZyB0byB0aGUgc3BlY2lmaWVkIGJsb2IgZGF0YS4KLSAg
ICB2aXJ0dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwg
VmVjdG9yPEJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOworICAgIHZp
cnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJsb2JQYXJ0Piwg
Y29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgPSAwOwogICAgIAogICAgIC8vIFJlZ2lzdGVycyBh
IG5ldyBibG9iIFVSTCByZWZlcnJpbmcgdG8gdGhlIGJsb2IgZGF0YSBpZGVudGlmaWVkIGJ5IHRo
ZSBzcGVjaWZpZWQgc3JjVVJMLgogICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29u
c3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwpID0gMDsKIAogICAgIC8vIE5lZ2F0aXZlIHN0YXJ0
IGFuZCBlbmQgdmFsdWVzIHNlbGVjdCBmcm9tIHRoZSBlbmQuCi0gICAgdmlydHVhbCB1bnNpZ25l
ZCBsb25nIGxvbmcgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJM
JiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIGVuZCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJikgPSAwOwogCisgICAgdmlydHVhbCB1
bnNpZ25lZCBsb25nIGxvbmcgYmxvYlNpemUoY29uc3QgVVJMJikgPSAwOworCiAgICAgdmlydHVh
bCBib29sIGlzQmxvYlJlZ2lzdHJ5SW1wbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKIHBy
b3RlY3RlZDoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lz
dHJ5SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iUmVnaXN0cnlJbXBsLmNwcAkocmV2aXNpb24gMTY4NDEyKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJGaWxlQmxv
YlUKICAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JEYXRhLnJlbGVhc2UoKSk7CiB9
CiAKLXVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwo
Y29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcm
IGNvbnRlbnRUeXBlKQordm9pZCBCbG9iUmVnaXN0cnlJbXBsOjpyZWdpc3RlckJsb2JVUkwoY29u
c3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBTdHJpbmcmIGNv
bnRlbnRUeXBlKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgcmVnaXN0ZXJC
bG9iUmVzb3VyY2VIYW5kbGVDb25zdHJ1Y3RvcigpOwpAQCAtMTQyLDIwICsxNDIsMTYgQEAgdW5z
aWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeUltcGw6OnJlZwogICAgIC8vIDMpIFRoZSBVUkwg
aXRlbSBpcyBkZW5vdGVkIGJ5IHRoZSBVUkwsIHRoZSByYW5nZSBhbmQgdGhlIGV4cGVjdGVkIG1v
ZGlmaWNhdGlvbiB0aW1lLgogICAgIC8vIEFsbCB0aGUgQmxvYiBpdGVtcyBpbiB0aGUgcGFzc2lu
ZyBibG9iIGRhdGEgYXJlIHJlc29sdmVkIGFuZCBleHBhbmRlZCBpbnRvIGEgc2V0IG9mIERhdGEg
YW5kIEZpbGUgaXRlbXMuCiAKLSAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2l6ZSA9IDA7CiAgICAg
Zm9yIChCbG9iUGFydCYgcGFydCA6IGJsb2JQYXJ0cykgewogICAgICAgICBzd2l0Y2ggKHBhcnQu
dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgQmxvYlBhcnQ6OkRhdGE6IHsKLSAgICAgICAgICAgIHVu
c2lnbmVkIGxvbmcgbG9uZyBwYXJ0U2l6ZSA9IHBhcnQuZGF0YSgpLnNpemUoKTsKICAgICAgICAg
ICAgIFJlZlB0cjxSYXdEYXRhPiByYXdEYXRhID0gUmF3RGF0YTo6Y3JlYXRlKHBhcnQubW92ZURh
dGEoKSk7Ci0gICAgICAgICAgICBzaXplICs9IHBhcnRTaXplOwotICAgICAgICAgICAgYmxvYkRh
dGEtPmFwcGVuZERhdGEocmF3RGF0YS5yZWxlYXNlKCksIDAsIHBhcnRTaXplKTsKKyAgICAgICAg
ICAgIGJsb2JEYXRhLT5hcHBlbmREYXRhKHJhd0RhdGEucmVsZWFzZSgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgQmxvYlBhcnQ6OkJsb2I6IHsKICAgICAg
ICAgICAgIGlmICghbV9ibG9icy5jb250YWlucyhwYXJ0LnVybCgpLnN0cmluZygpKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIHNpemUgKz0gYmxvYlNpemUocGFydC51
cmwoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgZm9yIChjb25zdCBC
bG9iRGF0YUl0ZW0mIGl0ZW0gOiBtX2Jsb2JzLmdldChwYXJ0LnVybCgpLnN0cmluZygpKS0+aXRl
bXMoKSkKICAgICAgICAgICAgICAgICBibG9iRGF0YS0+bV9pdGVtcy5hcHBlbmQoaXRlbSk7CiAg
ICAgICAgICAgICBicmVhazsKQEAgLTE2NCw3ICsxNjAsNiBAQCB1bnNpZ25lZCBsb25nIGxvbmcg
QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnCiAgICAgfQogCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmlu
ZygpLCBibG9iRGF0YS5yZWxlYXNlKCkpOwotICAgIHJldHVybiBzaXplOwogfQogCiB2b2lkIEJs
b2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgVVJM
JiBzcmNVUkwpCkBAIC0xNzgsMTIgKzE3MywxMiBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJl
Z2lzdGVyQmxvYlVSTChjCiAgICAgbV9ibG9icy5zZXQodXJsLnN0cmluZygpLCBzcmMpOwogfQog
Ci11bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpCit2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgbG9uZyBsb25nIHN0YXJ0
LCBsb25nIGxvbmcgZW5kKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQmxv
YkRhdGEqIG9yaWdpbmFsRGF0YSA9IGdldEJsb2JEYXRhRnJvbVVSTChzcmNVUkwpOwogICAgIGlm
ICghb3JpZ2luYWxEYXRhKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuOwogCiAg
ICAgdW5zaWduZWQgbG9uZyBsb25nIG9yaWdpbmFsU2l6ZSA9IGJsb2JTaXplKHNyY1VSTCk7CiAK
QEAgLTIxMyw3ICsyMDgsNiBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1wbDo6
cmVnCiAgICAgYXBwZW5kU3RvcmFnZUl0ZW1zKG5ld0RhdGEuZ2V0KCksIG9yaWdpbmFsRGF0YS0+
aXRlbXMoKSwgc3RhcnQsIG5ld0xlbmd0aCk7CiAKICAgICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5n
KCksIG5ld0RhdGEucmVsZWFzZSgpKTsKLSAgICByZXR1cm4gbmV3TGVuZ3RoOwogfQogCiB2b2lk
IEJsb2JSZWdpc3RyeUltcGw6OnVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJ
bXBsLmgJKHJldmlzaW9uIDE2ODQxMikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvQmxvYlJlZ2lzdHJ5SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01OCwxMyArNTgsMTMgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGFwcGVuZFN0b3JhZ2VJdGVtcyhCbG9iRGF0YSosIGNvbnN0IEJs
b2JEYXRhSXRlbUxpc3QmLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYs
IGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7
Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYsIFZlY3RvcjxCbG9iUGFydD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiwgVmVjdG9yPEJs
b2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmLCBjb25zdCBVUkwmIHNyY1VSTCkgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB1bnNpZ25lZCBsb25nIGxvbmcgcmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoY29uc3QgVVJMJiwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFydCwgbG9u
ZyBsb25nIGVuZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTEZv
clNsaWNlKGNvbnN0IFVSTCYsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQsIGxv
bmcgbG9uZyBlbmQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQmxvYlVS
TChjb25zdCBVUkwmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNCbG9iUmVnaXN0cnlJ
bXBsKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgdW5zaWduZWQgbG9u
ZyBsb25nIGJsb2JTaXplKGNvbnN0IFVSTCYpOworICAgIHZpcnR1YWwgdW5zaWduZWQgbG9uZyBs
b25nIGJsb2JTaXplKGNvbnN0IFVSTCYpIG92ZXJyaWRlOwogCiAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxCbG9iRGF0YT4+IG1fYmxvYnM7CiB9OwpJbmRleDogU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24g
MTY4NDI4KQorKysgU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMjcgQEAKKzIwMTQtMDUtMDcgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5j
b20+CisKKyAgICAgICAgTWFrZSBibG9iIHNpemUgY29tcHV0YXRpb24gbGF6eQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNjUzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9G
aWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
QmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6
Ok5ldHdvcmtCbG9iUmVnaXN0cnk6OmJsb2JTaXplKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0cnkuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJsb2JVUkwpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6
YmxvYlNpemUpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Js
b2JSZWdpc3RyeVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QmxvYlJlZ2lzdHJ5UHJveHk6
OnJlZ2lzdGVyQmxvYlVSTCk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVByb3h5Ojpy
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSk6CisgICAgICAgIChXZWJLaXQ6OkJsb2JSZWdpc3RyeVBy
b3h5OjpibG9iU2l6ZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3Ry
eVByb3h5Lmg6CisKIDIwMTQtMDUtMDcgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIEdyYXBoaWNzTGF5ZXI6OmNsaWVudCgpIHNob3VsZCByZXR1cm4gYSBy
ZWZlcmVuY2UuCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29u
bmVjdGlvblRvV2ViUHJvY2Vzcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuY3BwCShyZXZpc2lvbiAx
Njg0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzMCw5ICsyMzAsOSBAQCB2b2lk
IE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpCiAgICAgTmV0d29ya0Jsb2JSZWdp
c3RyeTo6c2hhcmVkKCkucmVnaXN0ZXJGaWxlQmxvYlVSTCh0aGlzLCB1cmwsIHBhdGgsIGV4dGVu
c2lvbi5yZWxlYXNlKCksIGNvbnRlbnRUeXBlKTsKIH0KIAotdm9pZCBOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Qmxv
YlBhcnQ+IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgdWludDY0X3QmIHJl
c3VsdFNpemUpCit2b2lkIE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpyZWdpc3RlckJs
b2JVUkwoY29uc3QgVVJMJiB1cmwsIFZlY3RvcjxCbG9iUGFydD4gYmxvYlBhcnRzLCBjb25zdCBT
dHJpbmcmIGNvbnRlbnRUeXBlKQogewotICAgIHJlc3VsdFNpemUgPSBOZXR3b3JrQmxvYlJlZ2lz
dHJ5OjpzaGFyZWQoKS5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsLCBzdGQ6Om1vdmUoYmxvYlBh
cnRzKSwgY29udGVudFR5cGUpOworICAgIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNoYXJlZCgpLnJl
Z2lzdGVyQmxvYlVSTCh0aGlzLCB1cmwsIHN0ZDo6bW92ZShibG9iUGFydHMpLCBjb250ZW50VHlw
ZSk7CiB9CiAKIHZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lzdGVyQmxv
YlVSTEZyb21VUkwoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMKQpAQCAtMjQwLDE1
ICsyNDAsMjAgQEAgdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaQogICAg
IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lzdGVyQmxvYlVSTCh0aGlzLCB1cmws
IHNyY1VSTCk7CiB9CiAKLXZvaWQgTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OnJlZ2lz
dGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCwgaW50
NjRfdCBzdGFydCwgaW50NjRfdCBlbmQsIHVpbnQ2NF90JiByZXN1bHRTaXplKQordm9pZCBOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6cmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCkK
IHsKLSAgICByZXN1bHRTaXplID0gTmV0d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkucmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UodGhpcywgdXJsLCBzcmNVUkwsIHN0YXJ0LCBlbmQpOworICAgIE5l
dHdvcmtCbG9iUmVnaXN0cnk6OnNoYXJlZCgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHRoaXMs
IHVybCwgc3JjVVJMLCBzdGFydCwgZW5kKTsKIH0KIAogdm9pZCBOZXR3b3JrQ29ubmVjdGlvblRv
V2ViUHJvY2Vzczo6dW5yZWdpc3RlckJsb2JVUkwoY29uc3QgVVJMJiB1cmwpCiB7CiAgICAgTmV0
d29ya0Jsb2JSZWdpc3RyeTo6c2hhcmVkKCkudW5yZWdpc3RlckJsb2JVUkwodGhpcywgdXJsKTsK
IH0KKwordm9pZCBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6YmxvYlNpemUoY29uc3Qg
VVJMJiB1cmwsIHVpbnQ2NF90JiByZXN1bHRTaXplKQoreworICAgIHJlc3VsdFNpemUgPSBOZXR3
b3JrQmxvYlJlZ2lzdHJ5OjpzaGFyZWQoKS5ibG9iU2l6ZSh0aGlzLCB1cmwpOworfQogI2VuZGlm
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5o
CShyZXZpc2lvbiAxNjg0MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04OCw5ICs4OCwx
MCBAQCBwcml2YXRlOgogCiAjaWYgRU5BQkxFKEJMT0IpCiAgICAgdm9pZCByZWdpc3RlckZpbGVC
bG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0aCwgY29uc3QgU2Fu
ZGJveEV4dGVuc2lvbjo6SGFuZGxlJiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSk7Ci0gICAg
dm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6
OkJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSwgdWludDY0X3QmIHJlc3VsdFNp
emUpOworICAgIHZvaWQgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOwogICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJD
b3JlOjpVUkwmIHNyY1VSTCk7Ci0gICAgdm9pZCByZWdpc3RlckJsb2JVUkxGb3JTbGljZShjb25z
dCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFy
dCwgaW50NjRfdCBlbmQsIHVpbnQ2NF90JiByZXN1bHRTaXplKTsKKyAgICB2b2lkIHJlZ2lzdGVy
QmxvYlVSTEZvclNsaWNlKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
c3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVuZCk7CisgICAgdm9pZCBibG9iU2l6ZShj
b25zdCBXZWJDb3JlOjpVUkwmLCB1aW50NjRfdCYgcmVzdWx0U2l6ZSk7CiAgICAgdm9pZCB1bnJl
Z2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpVUkwmKTsKICNlbmRpZgogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTY4NDEy
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEwICs0NSwxMSBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzCiAKICNpZiBFTkFCTEUoQkxP
QikKICAgICBSZWdpc3RlckZpbGVCbG9iVVJMKFdlYkNvcmU6OlVSTCB1cmwsIFN0cmluZyBwYXRo
LCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBleHRlbnNpb25IYW5kbGUsIFN0cmlu
ZyBjb250ZW50VHlwZSkKLSAgICBSZWdpc3RlckJsb2JVUkwoV2ViQ29yZTo6VVJMIHVybCwgVmVj
dG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIFN0cmluZyBjb250ZW50VHlwZSkgLT4g
KHVpbnQ2NF90IHJlc3VsdFNpemUpCisgICAgUmVnaXN0ZXJCbG9iVVJMKFdlYkNvcmU6OlVSTCB1
cmwsIFZlY3RvcjxXZWJDb3JlOjpCbG9iUGFydD4gYmxvYlBhcnRzLCBTdHJpbmcgY29udGVudFR5
cGUpCiAgICAgUmVnaXN0ZXJCbG9iVVJMRnJvbVVSTChXZWJDb3JlOjpVUkwgdXJsLCBXZWJDb3Jl
OjpVUkwgc3JjVVJMKQotICAgIFJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKFdlYkNvcmU6OlVSTCB1
cmwsIFdlYkNvcmU6OlVSTCBzcmNVUkwsIGludDY0X3Qgc3RhcnQsIGludDY0X3QgZW5kKSAtPiAo
dWludDY0X3QgcmVzdWx0U2l6ZSkKKyAgICBSZWdpc3RlckJsb2JVUkxGb3JTbGljZShXZWJDb3Jl
OjpVUkwgdXJsLCBXZWJDb3JlOjpVUkwgc3JjVVJMLCBpbnQ2NF90IHN0YXJ0LCBpbnQ2NF90IGVu
ZCkKICAgICBVbnJlZ2lzdGVyQmxvYlVSTChXZWJDb3JlOjpVUkwgdXJsKQorICAgIEJsb2JTaXpl
KFdlYkNvcmU6OlVSTCB1cmwpIC0+ICh1aW50NjRfdCByZXN1bHRTaXplKQogI2VuZGlmCiB9CiAK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JS
ZWdpc3RyeS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3Mv
RmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNwcAkocmV2aXNpb24gMTY4NDEyKQorKysgU291
cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvRmlsZUFQSS9OZXR3b3JrQmxvYlJlZ2lzdHJ5LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIE5ldHdvcmtCbG9iUmVnaXN0
cnk6OnJlZ2lzdGVyRmlsZUJsCiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwpOwogfQog
Ci11aW50NjRfdCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nv
bm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24sIGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8
V2ViQ29yZTo6QmxvYlBhcnQ+IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkK
K3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBVUkwmIHVybCwgVmVjdG9yPFdlYkNv
cmU6OkJsb2JQYXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAg
ICAgQVNTRVJUKCFtX3NhbmRib3hFeHRlbnNpb25zLmNvbnRhaW5zKHVybC5zdHJpbmcoKSkpOwog
CkBAIC03OSw3ICs3OSw3IEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmwKICAgICAgICAgICAgIHNhbmRib3hFeHRlbnNpb25zLmFwcGVuZFZlY3RvcihtX3NhbmRib3hF
eHRlbnNpb25zLmdldChwYXJ0LnVybCgpLnN0cmluZygpKSk7CiAgICAgfQogCi0gICAgdWludDY0
X3QgcmVzdWx0U2l6ZSA9IGJsb2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTCh1cmwsIHN0ZDo6
bW92ZShibG9iUGFydHMpLCBjb250ZW50VHlwZSk7CisgICAgYmxvYlJlZ2lzdHJ5KCkucmVnaXN0
ZXJCbG9iVVJMKHVybCwgc3RkOjptb3ZlKGJsb2JQYXJ0cyksIGNvbnRlbnRUeXBlKTsKIAogICAg
IGlmICghc2FuZGJveEV4dGVuc2lvbnMuaXNFbXB0eSgpKQogICAgICAgICBtX3NhbmRib3hFeHRl
bnNpb25zLmFkZCh1cmwuc3RyaW5nKCksIHN0ZDo6bW92ZShzYW5kYm94RXh0ZW5zaW9ucykpOwpA
QCAtODksOCArODksNiBAQCB1aW50NjRfdCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
CiAgICAgaWYgKG1hcEl0ZXJhdG9yID09IG1fYmxvYnNGb3JDb25uZWN0aW9uLmVuZCgpKQogICAg
ICAgICBtYXBJdGVyYXRvciA9IG1fYmxvYnNGb3JDb25uZWN0aW9uLmFkZChjb25uZWN0aW9uLCBI
YXNoU2V0PFVSTD4oKSkuaXRlcmF0b3I7CiAgICAgbWFwSXRlcmF0b3ItPnZhbHVlLmFkZCh1cmwp
OwotCi0gICAgcmV0dXJuIHJlc3VsdFNpemU7CiB9CiAKIHZvaWQgTmV0d29ya0Jsb2JSZWdpc3Ry
eTo6cmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0
aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCwgY29uc3QgV2ViQ29yZTo6VVJMJiBzcmNVUkwp
CkBAIC0xMDUsOSArMTAzLDkgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJs
b2JVUgogICAgIG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLmFk
ZCh1cmwpOwogfQogCi11aW50NjRfdCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpyZWdpc3RlckJsb2JV
UkxGb3JTbGljZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29u
c3QgV2ViQ29yZTo6VVJMJiB1cmwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBpbnQ2NF90
IHN0YXJ0LCBpbnQ2NF90IGVuZCkKK3ZvaWQgTmV0d29ya0Jsb2JSZWdpc3RyeTo6cmVnaXN0ZXJC
bG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNvbm5lY3Rpb24s
IGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50
NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpCiB7Ci0gICAgdWludDY0X3QgcmVzdWx0U2l6ZSA9IGJs
b2JSZWdpc3RyeSgpLnJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKHVybCwgc3JjVVJMLCBzdGFydCwg
ZW5kKTsKKyAgICBibG9iUmVnaXN0cnkoKS5yZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNy
Y1VSTCwgc3RhcnQsIGVuZCk7CiAKICAgICAvLyBGSVhNRTogT25seSBzdG9yZSBleHRlbnNpb25z
IGZvciBmaWxlcyB0aGF0IHRoZSBzbGljZSBhY3R1YWxseSBjb250YWlucywgbm90IGZvciBhbGwg
dGhlIGZpbGVzIGluIG9yaWdpbmFsIGJsb2IuCiAgICAgU2FuZGJveEV4dGVuc2lvbk1hcDo6aXRl
cmF0b3IgaXRlciA9IG1fc2FuZGJveEV4dGVuc2lvbnMuZmluZChzcmNVUkwuc3RyaW5nKCkpOwpA
QCAtMTE3LDggKzExNSw2IEBAIHVpbnQ2NF90IE5ldHdvcmtCbG9iUmVnaXN0cnk6OnJlZ2lzdGVy
QmwKICAgICBBU1NFUlQobV9ibG9ic0ZvckNvbm5lY3Rpb24uY29udGFpbnMoY29ubmVjdGlvbikp
OwogICAgIEFTU0VSVChtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5lY3Rpb24pLT52YWx1
ZS5jb250YWlucyhzcmNVUkwpKTsKICAgICBtX2Jsb2JzRm9yQ29ubmVjdGlvbi5maW5kKGNvbm5l
Y3Rpb24pLT52YWx1ZS5hZGQodXJsKTsKLQotICAgIHJldHVybiByZXN1bHRTaXplOwogfQogCiB2
b2lkIE5ldHdvcmtCbG9iUmVnaXN0cnk6OnVucmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0
aW9uVG9XZWJQcm9jZXNzKiBjb25uZWN0aW9uLCBjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkKQEAg
LTEzMSw2ICsxMjcsMTQgQEAgdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojp1bnJlZ2lzdGVyQmxv
YgogICAgIG1fYmxvYnNGb3JDb25uZWN0aW9uLmZpbmQoY29ubmVjdGlvbiktPnZhbHVlLnJlbW92
ZSh1cmwpOwogfQogCit1aW50NjRfdCBOZXR3b3JrQmxvYlJlZ2lzdHJ5OjpibG9iU2l6ZShOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyogY29ubmVjdGlvbiwgY29uc3QgV2ViQ29yZTo6VVJM
JiB1cmwpCit7CisgICAgaWYgKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucyhjb25uZWN0
aW9uKSB8fCAhbV9ibG9ic0ZvckNvbm5lY3Rpb24uZmluZChjb25uZWN0aW9uKS0+dmFsdWUuY29u
dGFpbnModXJsKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gYmxvYlJlZ2lzdHJ5
KCkuYmxvYlNpemUodXJsKTsKK30KKwogdm9pZCBOZXR3b3JrQmxvYlJlZ2lzdHJ5Ojpjb25uZWN0
aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqIGNv
bm5lY3Rpb24pCiB7CiAgICAgaWYgKCFtX2Jsb2JzRm9yQ29ubmVjdGlvbi5jb250YWlucyhjb25u
ZWN0aW9uKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL0ZpbGVBUEkvTmV0
d29ya0Jsb2JSZWdpc3RyeS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQ
cm9jZXNzL0ZpbGVBUEkvTmV0d29ya0Jsb2JSZWdpc3RyeS5oCShyZXZpc2lvbiAxNjg0MTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9GaWxlQVBJL05ldHdvcmtCbG9iUmVnaXN0
cnkuaAkod29ya2luZyBjb3B5KQpAQCAtNDgsMTAgKzQ4LDExIEBAIHB1YmxpYzoKICAgICBzdGF0
aWMgTmV0d29ya0Jsb2JSZWdpc3RyeSYgc2hhcmVkKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyRmls
ZUJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBTdHJpbmcmIHBhdGgsIFBhc3NSZWZQdHI8U2FuZGJveEV4dGVuc2lvbj4sIGNv
bnN0IFN0cmluZyYgY29udGVudFR5cGUpOwotICAgIHVpbnQ2NF90IHJlZ2lzdGVyQmxvYlVSTChO
ZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpOworICAgIHZv
aWQgcmVnaXN0ZXJCbG9iVVJMKE5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzKiwgY29uc3Qg
V2ViQ29yZTo6VVJMJiwgVmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBj
b250ZW50VHlwZSk7CiAgICAgdm9pZCByZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rpb25U
b1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNy
Y1VSTCk7Ci0gICAgdWludDY0X3QgcmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpV
UkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwgaW50NjRfdCBlbmQpOworICAgIHZvaWQgcmVnaXN0
ZXJCbG9iVVJMRm9yU2xpY2UoTmV0d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MqLCBjb25zdCBX
ZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCwgaW50NjRfdCBzdGFydCwg
aW50NjRfdCBlbmQpOwogICAgIHZvaWQgdW5yZWdpc3RlckJsb2JVUkwoTmV0d29ya0Nvbm5lY3Rp
b25Ub1dlYlByb2Nlc3MqLCBjb25zdCBXZWJDb3JlOjpVUkwmKTsKKyAgICB1aW50NjRfdCBibG9i
U2l6ZShOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyosIGNvbnN0IFdlYkNvcmU6OlVSTCYp
OwogCiAgICAgdm9pZCBjb25uZWN0aW9uVG9XZWJQcm9jZXNzRGlkQ2xvc2UoTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MqKTsKIApJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9G
aWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJveHkuY3BwCShyZXZpc2lvbiAxNjg0
MTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ZpbGVBUEkvQmxvYlJlZ2lzdHJ5UHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNCArNTAsMTEgQEAgdm9pZCBCbG9iUmVnaXN0
cnlQcm94eTo6cmVnaXN0ZXJGaWxlQmxvYgogICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdv
cmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3M6OlJlZ2lzdGVyRmlsZUJsb2JVUkwodXJsLCBwYXRoLCBleHRlbnNp
b25IYW5kbGUsIGNvbnRlbnRUeXBlKSwgMCk7CiB9CiAKLXVuc2lnbmVkIGxvbmcgbG9uZyBCbG9i
UmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVSTCYgdXJsLCBWZWN0b3I8Qmxv
YlBhcnQ+IGJsb2JQYXJ0cywgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkKK3ZvaWQgQmxvYlJl
Z2lzdHJ5UHJveHk6OnJlZ2lzdGVyQmxvYlVSTChjb25zdCBVUkwmIHVybCwgVmVjdG9yPEJsb2JQ
YXJ0PiBibG9iUGFydHMsIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7CiAgICAgQVNTRVJU
KFdlYlByb2Nlc3M6OnNoYXJlZCgpLnVzZXNOZXR3b3JrUHJvY2VzcygpKTsKIAotICAgIHVpbnQ2
NF90IHJlc3VsdFNpemU7Ci0gICAgaWYgKCFXZWJQcm9jZXNzOjpzaGFyZWQoKS5uZXR3b3JrQ29u
bmVjdGlvbigpLT5jb25uZWN0aW9uKCktPnNlbmRTeW5jKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVj
dGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMKHVybCwgYmxvYlBhcnRzLCBjb250ZW50
VHlwZSksIE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJC
bG9iVVJMOjpSZXBseShyZXN1bHRTaXplKSwgMCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJl
dHVybiByZXN1bHRTaXplOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0
aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya0Nvbm5lY3Rpb25Ub1dl
YlByb2Nlc3M6OlJlZ2lzdGVyQmxvYlVSTCh1cmwsIGJsb2JQYXJ0cywgY29udGVudFR5cGUpLCAw
KTsKIH0KIAogdm9pZCBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFVS
TCYgdXJsLCBjb25zdCBVUkwmIHNyY1VSTCkKQEAgLTc0LDEyICs3MSwxOSBAQCB2b2lkIEJsb2JS
ZWdpc3RyeVByb3h5Ojp1bnJlZ2lzdGVyQmxvYlVSCiAgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCku
bmV0d29ya0Nvbm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3Jr
Q29ubmVjdGlvblRvV2ViUHJvY2Vzczo6VW5yZWdpc3RlckJsb2JVUkwodXJsKSwgMCk7CiB9CiAK
LXVuc2lnbmVkIGxvbmcgbG9uZyBCbG9iUmVnaXN0cnlQcm94eTo6cmVnaXN0ZXJCbG9iVVJMRm9y
U2xpY2UoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3RhcnQs
IGxvbmcgbG9uZyBlbmQpCit2b2lkIEJsb2JSZWdpc3RyeVByb3h5OjpyZWdpc3RlckJsb2JVUkxG
b3JTbGljZShjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBzcmNVUkwsIGxvbmcgbG9uZyBzdGFy
dCwgbG9uZyBsb25nIGVuZCkKK3sKKyAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2hhcmVkKCkudXNl
c05ldHdvcmtQcm9jZXNzKCkpOworCisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkubmV0d29ya0Nv
bm5lY3Rpb24oKS0+Y29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrQ29ubmVjdGlv
blRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2UodXJsLCBzcmNVUkwsIHN0YXJ0
LCBlbmQpLCAwKTsKK30KKwordW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeVByb3h5Ojpi
bG9iU2l6ZShjb25zdCBVUkwmIHVybCkKIHsKICAgICBBU1NFUlQoV2ViUHJvY2Vzczo6c2hhcmVk
KCkudXNlc05ldHdvcmtQcm9jZXNzKCkpOwogCiAgICAgdWludDY0X3QgcmVzdWx0U2l6ZTsKLSAg
ICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5ldHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rp
b24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpS
ZWdpc3RlckJsb2JVUkxGb3JTbGljZSh1cmwsIHNyY1VSTCwgc3RhcnQsIGVuZCksIE1lc3NhZ2Vz
OjpOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vzczo6UmVnaXN0ZXJCbG9iVVJMRm9yU2xpY2U6
OlJlcGx5KHJlc3VsdFNpemUpLCAwKSkKKyAgICBpZiAoIVdlYlByb2Nlc3M6OnNoYXJlZCgpLm5l
dHdvcmtDb25uZWN0aW9uKCktPmNvbm5lY3Rpb24oKS0+c2VuZFN5bmMoTWVzc2FnZXM6Ok5ldHdv
cmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzOjpCbG9iU2l6ZSh1cmwpLCBNZXNzYWdlczo6TmV0d29y
a0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3M6OkJsb2JTaXplOjpSZXBseShyZXN1bHRTaXplKSwgMCkp
CiAgICAgICAgIHJldHVybiAwOwogICAgIHJldHVybiByZXN1bHRTaXplOwogfQpJbmRleDogU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVByb3h5LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GaWxlQVBJL0Jsb2JSZWdpc3RyeVBy
b3h5LmgJKHJldmlzaW9uIDE2ODQxMikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRmls
ZUFQSS9CbG9iUmVnaXN0cnlQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSwxMCArMzUsMTEg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBCbG9iUmVnaXN0cnlQcm94eSBmaW5hbCA6IHB1
YmxpYyBXZWJDb3JlOjpCbG9iUmVnaXN0cnkgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBy
ZWdpc3RlckZpbGVCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFN0cmluZyYgcGF0
aCwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB1bnNp
Z25lZCBsb25nIGxvbmcgcmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYsIFZlY3Rv
cjxXZWJDb3JlOjpCbG9iUGFydD4sIGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJsb2JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiwg
VmVjdG9yPFdlYkNvcmU6OkJsb2JQYXJ0PiwgY29uc3QgU3RyaW5nJiBjb250ZW50VHlwZSkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVyQmxvYlVSTChjb25zdCBXZWJDb3JlOjpV
UkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNyY1VSTCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHVucmVnaXN0ZXJCbG9iVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpIG92ZXJyaWRlOwotICAg
IHZpcnR1YWwgdW5zaWduZWQgbG9uZyBsb25nIHJlZ2lzdGVyQmxvYlVSTEZvclNsaWNlKGNvbnN0
IFdlYkNvcmU6OlVSTCYsIGNvbnN0IFdlYkNvcmU6OlVSTCYgc3JjVVJMLCBsb25nIGxvbmcgc3Rh
cnQsIGxvbmcgbG9uZyBlbmQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckJs
b2JVUkxGb3JTbGljZShjb25zdCBXZWJDb3JlOjpVUkwmLCBjb25zdCBXZWJDb3JlOjpVUkwmIHNy
Y1VSTCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgZW5kKSBvdmVycmlkZTsKKyAgICB2aXJ0
dWFsIHVuc2lnbmVkIGxvbmcgbG9uZyBibG9iU2l6ZShjb25zdCBXZWJDb3JlOjpVUkwmKSBvdmVy
cmlkZTsKIH07CiAKIH0K
</data>
<flag name="review"
          id="255412"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>