<?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>132628</bug_id>
          
          <creation_ts>2014-05-06 15:08:41 -0700</creation_ts>
          <short_desc>Make BlobDataItem use a refcounted object for files</short_desc>
          <delta_ts>2014-05-07 00:15:24 -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>
          <dependson>132643</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ossy</cc>
    
    <cc>rakuco</cc>
    
    <cc>sergio</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1007095</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-06 15:08:41 -0700</bug_when>
    <thetext>More work towards making it possible to transform Files without losing the transformed version all the time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007121</commentid>
    <comment_count>1</comment_count>
      <attachid>230946</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-06 16:09:33 -0700</bug_when>
    <thetext>Created attachment 230946
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007125</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2014-05-06 16:35:16 -0700</bug_when>
    <thetext>Committed &lt;http://trac.webkit.org/r168391&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007230</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-05-06 23:40:16 -0700</bug_when>
    <thetext>It broke the Appple Windows, GTK and EFL builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007237</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-05-07 00:13:59 -0700</bug_when>
    <thetext>New bug to fix the build - https://bugs.webkit.org/show_bug.cgi?id=132643</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1007238</commentid>
    <comment_count>5</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-05-07 00:15:24 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; It broke the Appple Windows, GTK and EFL builds.

Only GTK and EFL, Windows build is broken because of https://bugs.webkit.org/show_bug.cgi?id=132626</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>230946</attachid>
            <date>2014-05-06 16:09:33 -0700</date>
            <delta_ts>2014-05-06 16:31:15 -0700</delta_ts>
            <desc>proposed patch</desc>
            <filename>BlobDataFileReference.txt</filename>
            <type>text/plain</type>
            <size>33250</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE2ODM4NikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBACisyMDE0LTA1LTA2ICBBbGV4ZXkg
UHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgorCisgICAgICAgIE1ha2UgQmxvYkRhdGFJdGVt
IHVzZSBhIHJlZmNvdW50ZWQgb2JqZWN0IGZvciBmaWxlcworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTMyNjI4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBX
ZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJv
ai9XZWJDb3JlLnZjeHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgIEFkZGVkIEJsb2JEYXRhRmlsZVJlZmVyZW5jZS57aHxj
cHB9CisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjogUmVtb3ZlZCB1bnVzZWQgZXhwb3J0cy4K
KworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkJsb2JEYXRhSXRlbTo6b2Zmc2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JEYXRhSXRl
bTo6QmxvYkRhdGFJdGVtKToKKyAgICAgICAgVXNlIGEgd3JhcHBlciBjbGFzcyBmb3IgZmlsZXMs
IG5vdCBhIHBhdGguIENoYW5nZWQgdG8gYmUgbW9yZSBjbGFzcy1saWtlIGFjY29yZGluZ2x5Lgor
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpCbG9iRGF0YTo6YXBwZW5kRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6
YXBwZW5kRmlsZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6YXBwZW5kQmxvYik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpCbG9iRGF0YTo6QmxvYkRhdGEpOiBEZWxldGVkLgor
ICAgICAgICBXZSBuZXZlciBhZGQgYmxvYnMgdG8gQmxvYkRhdGEsIHRoZXkgYXJlIGFsd2F5cyBy
ZXNvbHZlZCB0byBkYXRhIG9mIGZpbGUgcmVmZXJlbmNlcy4KKyAgICAgICAgTG90cyBvZiB2ZXJ5
IGNvbmZ1c2luZyBjb2RlIHRvIGRlbGV0ZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
QmxvYkRhdGFGaWxlUmVmZXJlbmNlLmg6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpC
bG9iRGF0YUZpbGVSZWZlcmVuY2U6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYkRhdGFG
aWxlUmVmZXJlbmNlOjpleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6QmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpjb21wdXRlRmlsZVN5c3RlbURhdGEpOgorICAgICAg
ICBBIHVuaXF1ZSByZWZlcmVuY2UgdG8gYSBmaWxlIHJlZmVyZW5jZWQgYnkgYmxvYiwgdG8gYmUg
cHJlc2VydmVkIHdoZW4geW91IHNsaWNlCisgICAgICAgIG9yIGNvbWJpbmUgYmxvYnMuCisKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeUltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW1zKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmlsZUJsb2JVUkwpOgorICAgICAg
ICAoV2ViQ29yZTo6QmxvYlJlZ2lzdHJ5SW1wbDo6cmVnaXN0ZXJCbG9iVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OkJsb2JSZWdpc3RyeUltcGw6OmJsb2JTaXplKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpCbG9i
UmVzb3VyY2VIYW5kbGU6OmdldFNpemVGb3JOZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkJsb2JS
ZXNvdXJjZUhhbmRsZTo6ZGlkR2V0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3Vy
Y2VIYW5kbGU6OnJlYWREYXRhU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VI
YW5kbGU6OnJlYWRGaWxlU3luYyk6CisgICAgICAgIChXZWJDb3JlOjpCbG9iUmVzb3VyY2VIYW5k
bGU6OnJlYWREYXRhQXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6QmxvYlJlc291cmNlSGFuZGxl
OjpyZWFkRmlsZUFzeW5jKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJj
ZUhhbmRsZS5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6YXBwZW5kQmxvYlJlc29sdmVkKToKKyAgICAgICAgVXBkYXRlZCBmb3Ig
QmxvYkRhdGFJdGVtIGludGVyZmFjZSBjaGFuZ2VzLgorCiAyMDE0LTA1LTA2ICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbWlzc2luZyBsaW5lIGZyb20g
cjE2ODM4NC4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxNjgzODUpCisrKyBT
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjE3MSw2ICsy
MTcxLDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogCiAgICAgcGxhdGZvcm0vbmV0d29yay9BdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0
YS5jcHAKKyAgICBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAKICAg
ICBwbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZWdpc3RyeS5jcHAKICAgICBwbGF0Zm9ybS9uZXR3b3Jr
L0Jsb2JSZWdpc3RyeUltcGwuY3BwCiAgICAgcGxhdGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VI
YW5kbGUuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gMTY4Mzg1KQorKysg
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTEyMjcsNyAr
MTIyNyw2IEBAIF9fWk43V2ViQ29yZTd0b0ludDE2RVBOM0pTQzlFeGVjU3RhdGVFTlMKIF9fWk43
V2ViQ29yZTd0b0ludDY0RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVlRU5TXzMwSW50ZWdl
ckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQogX19aTjdXZWJDb3JlN3RvUmFuZ2VFTjNKU0M3SlNW
YWx1ZUUKIF9fWk43V2ViQ29yZTd0b1VJbnQ4RVBOM0pTQzlFeGVjU3RhdGVFTlMwXzdKU1ZhbHVl
RU5TXzMwSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uRQotX19aTjdXZWJDb3JlOEJsb2JE
YXRhMTBhcHBlbmRCbG9iRVJLTlNfM1VSTEV4eAogX19aTjdXZWJDb3JlOEJsb2JEYXRhMTRzZXRD
b250ZW50VHlwZUVSS04zV1RGNlN0cmluZ0UKIF9fWk43V2ViQ29yZThDU1NWYWx1ZTdkZXN0cm95
RXYKIF9fWk43V2ViQ29yZThEb2N1bWVudDExY3JlYXRlUmFuZ2VFdgpAQCAtMjg0MSwxMiArMjg0
MCw5IEBAIF9fWk43V2ViQ29yZThTZXR0aW5nczIyc2V0QVZGb3VuZGF0aW9uRW4KICNlbmRpZgog
CiAjaWYgRU5BQkxFKEJMT0IpCi1fX1pON1dlYkNvcmUxMkJsb2JEYXRhSXRlbTExdG9FbmRPZkZp
bGVFCiBfX1pON1dlYkNvcmUxMkJsb2JSZWdpc3RyeUQyRXYKIF9fWk43V2ViQ29yZTEyYmxvYlJl
Z2lzdHJ5RXYKIF9fWk43V2ViQ29yZTE0TG9hZGVyU3RyYXRlZ3kxOGNyZWF0ZUJsb2JSZWdpc3Ry
eUV2Ci1fX1pON1dlYkNvcmU4QmxvYkRhdGExMGFwcGVuZERhdGFFTjNXVEYxMFBhc3NSZWZQdHJJ
TlNfN1Jhd0RhdGFFRUV4eAotX19aTjdXZWJDb3JlOEJsb2JEYXRhMTBhcHBlbmRGaWxlRVJLTjNX
VEY2U3RyaW5nRXh4ZAogX19aVFZON1dlYkNvcmUxMkJsb2JSZWdpc3RyeUUKIF9fWlRWTjdXZWJD
b3JlMTZCbG9iUmVnaXN0cnlJbXBsRQogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHJldmlzaW9uIDE2ODM4NSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTgzNzMsNiArODM3Myw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0
Zm9ybVxncmFwaGljc1xhdmZvdW5kYXRpb25cY2ZcTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0
aW9uQ0YuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29y
a1xBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUJhc2UuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iRGF0YS5jcHAiIC8+CisgICAgPENsQ29tcGls
ZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAi
IC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JSZXNv
dXJjZUhhbmRsZS5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxu
ZXR3b3JrXENyZWRlbnRpYWwuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccGxh
dGZvcm1cbmV0d29ya1xDcmVkZW50aWFsU3RvcmFnZS5jcHAiIC8+CkBAIC0xOTU2NCw2ICsxOTU2
NSw3IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQmFzZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
cGxhdGZvcm1cbmV0d29ya1xBdXRoZW50aWNhdGlvbkNsaWVudC5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iRGF0YS5oIiAvPgorICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1cbmV0d29ya1xCbG9iRGF0YUZpbGVSZWZlcmVuY2Uu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQmxvYlJl
Z2lzdHJ5LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3Jr
XEJsb2JSZWdpc3RyeUltcGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHBsYXRm
b3JtXG5ldHdvcmtcQmxvYlJlc291cmNlSGFuZGxlLmgiIC8+CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCShy
ZXZpc2lvbiAxNjgzODUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29y
ZS52Y3hwcm9qLmZpbHRlcnMJKHdvcmtpbmcgY29weSkKQEAgLTE3NjQsNiArMTc2NCw5IEBACiAg
ICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JEYXRhLmNwcCI+
CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGls
ZT4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3JtXG5ldHdvcmtcQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcCI+CisgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8L0ZpbHRl
cj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHBsYXRmb3Jt
XG5ldHdvcmtcQmxvYlJlc291cmNlSGFuZGxlLmNwcCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3Jt
XG5ldHdvcms8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTg2NTAsNiArODY1Myw5IEBA
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JEYXRhLmgi
PgogICAgICAgPEZpbHRlcj5wbGF0Zm9ybVxuZXR3b3JrPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1
ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxwbGF0Zm9ybVxuZXR3b3JrXEJsb2JEYXRh
RmlsZVJlZmVyZW5jZS5oIj4KKyAgICAgIDxGaWx0ZXI+cGxhdGZvcm1cbmV0d29yazwvRmlsdGVy
PgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccGxhdGZvcm1c
bmV0d29ya1xCbG9iUmVnaXN0cnkuaCI+CiAgICAgICA8RmlsdGVyPnBsYXRmb3JtXG5ldHdvcms8
L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDE2ODM4NSkKKysrIFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNTk2OCw2ICs1OTY4LDggQEAKIAkJRTFDQUE1QzYwRThCRDIzNjAwQTczRUNBIC8q
IEpTV29ya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBFMUNBQTVDNTBFOEJEMjM2MDBBNzNFQ0EgLyogSlNXb3JrZXIuaCAqLzsgfTsKIAkJRTFDREU5
MjAxNTAxOEVEMDAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMUNERTkxRjE1MDE4RUQwMDA4NjJDQzUg
LyogQXN5bmNGaWxlU3RyZWFtLmNwcCAqLzsgfTsKIAkJRTFDREU5MjIxNTAxOTE2OTAwODYyQ0M1
IC8qIEFzeW5jRmlsZVN0cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTFDREU5MjExNTAxOTE2OTAwODYyQ0M1IC8qIEFzeW5jRmlsZVN0cmVhbS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCUUxRDMxQ0RDMTkxOTYw
MjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFEMzFDREExOTE5NjAyMDAwMTAwNUEzIC8q
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHAgKi87IH07CisJCUUxRDMxQ0REMTkxOTYwMjAwMDEw
MDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZlcmVuY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRDMxQ0RCMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0
YUZpbGVSZWZlcmVuY2UuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlFMUUxQkYwMDExNUZGNkZCMDA2RjUyQ0EgLyogV2luZG93c0tleWJvYXJkQ29k
ZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTFC
RUZGMTE1RkY2RkIwMDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUUxRTZFRUE0MEI2MjhEQTgw
MDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRTZFRUEzMEI2MjhEQTgwMDVGMkY3MCAvKiBKU0hU
TUxTZWxlY3RFbGVtZW50LmNwcCAqLzsgfTsKIAkJRTFFNkVFQTgwQjYyOERCMzAwNUYyRjcwIC8q
IEpTSFRNTFNlbGVjdEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEUxRTZFRUE3MEI2MjhEQjMwMDVGMkY3MCAvKiBKU0hUTUxTZWxlY3RFbGVt
ZW50LmggKi87IH07CkBAIC0xMzM3NCw2ICsxMzM3Niw4IEBACiAJCUUxQ0FBNUM1MEU4QkQyMzYw
MEE3M0VDQSAvKiBKU1dvcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U1dvcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlFMUNERTkxRjE1MDE4RUQw
MDA4NjJDQzUgLyogQXN5bmNGaWxlU3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IEFzeW5jRmlsZVN0cmVhbS5jcHA7IHBhdGggPSBmaWxlYXBpL0FzeW5jRmls
ZVN0cmVhbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxQ0RFOTIxMTUwMTkx
NjkwMDg2MkNDNSAvKiBBc3luY0ZpbGVTdHJlYW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQXN5bmNGaWxlU3RyZWFtLmg7IHBhdGggPSBmaWxlYXBpL0FzeW5jRmlsZVN0cmVh
bS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUQzMUNEQTE5MTk2MDIwMDAxMDA1
QTMgLyogQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEJsb2JEYXRhRmlsZVJlZmVyZW5jZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUUxRDMxQ0RCMTkxOTYwMjAwMDEwMDVBMyAvKiBCbG9iRGF0YUZpbGVSZWZl
cmVuY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQmxvYkRhdGFGaWxlUmVm
ZXJlbmNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUUxRTFCRUZGMTE1RkY2RkIw
MDZGNTJDQSAvKiBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlFMUU2RUVBMzBCNjI4REE4MDA1RjJGNzAgLyogSlNIVE1MU2VsZWN0RWxlbWVudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0hUTUxTZWxlY3RFbGVt
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFFNkVFQTcwQjYyOERCMzAw
NUYyRjcwIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lmg7IHBhdGggPSBKU0hUTUxTZWxlY3RFbGVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xNjA1NSw2ICsxNjA1OSw4IEBACiAJCQkJRTEyNDc0ODMxMEFBMTYxRDAwQjc5NDkz
IC8qIEF1dGhlbnRpY2F0aW9uQ2xpZW50LmggKi8sCiAJCQkJMkVERUYxRUQxMjFCMEVGQzAwNzI2
REIyIC8qIEJsb2JEYXRhLmNwcCAqLywKIAkJCQkyRURFRjFFRTEyMUIwRUZDMDA3MjZEQjIgLyog
QmxvYkRhdGEuaCAqLywKKwkJCQlFMUQzMUNEQTE5MTk2MDIwMDAxMDA1QTMgLyogQmxvYkRhdGFG
aWxlUmVmZXJlbmNlLmNwcCAqLywKKwkJCQlFMUQzMUNEQjE5MTk2MDIwMDAxMDA1QTMgLyogQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmggKi8sCiAJCQkJRTFDOTRBRjcxOTEzMDNGMDAwRDVBODkzIC8q
IEJsb2JQYXJ0LmggKi8sCiAJCQkJRTE0QTk0RDYxNkRGREY5NTAwNjhERTgyIC8qIEJsb2JSZWdp
c3RyeS5jcHAgKi8sCiAJCQkJMkVERUYxRUYxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3Ry
eS5oICovLApAQCAtMjI5NDUsNiArMjI5NTEsNyBAQAogCQkJaXNhID0gUEJYSGVhZGVyc0J1aWxk
UGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJ
CQkJRTFEMzFDREQxOTE5NjAyMDAwMTAwNUEzIC8qIEJsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRkUxMTVGQUIxNjc5ODhDRDAwMjQ5MTM0IC8qIEFic3RyYWN0RGF0
YWJhc2VTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUNEMkY0QTI0MThEODlGNzAwMDYzNzQ2
RCAvKiBBdWRpb0hhcmR3YXJlTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUZFNEFBREVF
MTZEMkMzNzQwMDAyNkZGQyAvKiBBYnN0cmFjdFNRTFN0YXRlbWVudC5oIGluIEhlYWRlcnMgKi8s
CkBAIC0yOTQwMCw2ICsyOTQwNyw3IEBACiAJCQkJRkQ3RjI5OTMxM0Q0QzBDQjAwQUQ5NTM1IC8q
IFdhdmVTaGFwZXJOb2RlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUZEN0YyOTk2MTNENEMwQ0Iw
MEFEOTUzNSAvKiBXYXZlU2hhcGVyUHJvY2Vzc29yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI5
QTgxMjRBMEZCQjlDQTkwMDUxMDI5MyAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJh
c2UubW0gaW4gU291cmNlcyAqLywKKwkJCQlFMUQzMUNEQzE5MTk2MDIwMDAxMDA1QTMgLyogQmxv
YkRhdGFGaWxlUmVmZXJlbmNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUFBQTcyOEY4MTZEMUQ4
QkMwMEQzQkJDNiAvKiBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUFBNDc4QTgwMTZDRDcwQzMwMDdEMUJCNCAvKiBXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUE1NkM1QjlBMTg5RjM0NTcw
MDgyRDEzQyAvKiBXZWJDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmNwcAkocmV2aXNpb24gMTY4
Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iRGF0YS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkJsb2IuaCIKICNpbmNs
dWRlICJCbG9iVVJMLmgiCi0jaW5jbHVkZSAiVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIgogCiAj
aW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CkBAIC00
NSwxMiArNDQsMzQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBsb25nIGxvbmcgQmxv
YkRhdGFJdGVtOjp0b0VuZE9mRmlsZSA9IC0xOwogCitsb25nIGxvbmcgQmxvYkRhdGFJdGVtOjps
ZW5ndGgoKSBjb25zdAoreworICAgIGlmIChtX2xlbmd0aCAhPSB0b0VuZE9mRmlsZSkKKyAgICAg
ICAgcmV0dXJuIG1fbGVuZ3RoOworCisgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBEYXRh
OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3Ro
OworICAgIGNhc2UgRmlsZToKKyAgICAgICAgcmV0dXJuIGZpbGUtPnNpemUoKTsKKyAgICB9CisK
KyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbV9sZW5ndGg7Cit9CisKIHZv
aWQgQmxvYkRhdGE6OnNldENvbnRlbnRUeXBlKGNvbnN0IFN0cmluZyYgY29udGVudFR5cGUpCiB7
CiAgICAgQVNTRVJUKEJsb2I6OmlzTm9ybWFsaXplZENvbnRlbnRUeXBlKGNvbnRlbnRUeXBlKSk7
CiAgICAgbV9jb250ZW50VHlwZSA9IGNvbnRlbnRUeXBlOwogfQogCit2b2lkIEJsb2JEYXRhOjph
cHBlbmREYXRhKFBhc3NSZWZQdHI8UmF3RGF0YT4gZGF0YSkKK3sKKyAgICBhcHBlbmREYXRhKGRh
dGEsIDAsIGRhdGEtPmxlbmd0aCgpKTsKK30KKwogdm9pZCBCbG9iRGF0YTo6YXBwZW5kRGF0YShQ
YXNzUmVmUHRyPFJhd0RhdGE+IGRhdGEsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5n
dGgpCiB7CiAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKGRhdGEsIG9mZnNldCwgbGVu
Z3RoKSk7CkBAIC02MSwxNCArODIsOSBAQCB2b2lkIEJsb2JEYXRhOjphcHBlbmRGaWxlKGNvbnN0
IFN0cmluZyYgCiAgICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKHBhdGgpKTsKIH0KIAot
dm9pZCBCbG9iRGF0YTo6YXBwZW5kRmlsZShjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBv
ZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUp
Ci17Ci0gICAgbV9pdGVtcy5hcHBlbmQoQmxvYkRhdGFJdGVtKHBhdGgsIG9mZnNldCwgbGVuZ3Ro
LCBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKLX0KLQotdm9pZCBCbG9iRGF0YTo6YXBwZW5k
QmxvYihjb25zdCBVUkwmIHVybCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkK
K3ZvaWQgQmxvYkRhdGE6OmFwcGVuZEZpbGUoQmxvYkRhdGFGaWxlUmVmZXJlbmNlKiBmaWxlLCBs
b25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoKQogewotICAgIG1faXRlbXMuYXBwZW5k
KEJsb2JEYXRhSXRlbSh1cmwsIG9mZnNldCwgbGVuZ3RoKSk7CisgICAgbV9pdGVtcy5hcHBlbmQo
QmxvYkRhdGFJdGVtKGZpbGUsIG9mZnNldCwgbGVuZ3RoKSk7CiB9CiAKIHZvaWQgQmxvYkRhdGE6
OnN3YXBJdGVtcyhCbG9iRGF0YUl0ZW1MaXN0JiBpdGVtcykKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhLmgJKHJldmlzaW9uIDE2ODM4NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGEuaAkod29ya2luZyBjb3B5KQpAQCAt
MzEsMTggKzMxLDE2IEBACiAjaWZuZGVmIEJsb2JEYXRhX2gKICNkZWZpbmUgQmxvYkRhdGFfaAog
Ci0jaW5jbHVkZSAiRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5j
ZS5oIgogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotI2luY2x1
ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8vIEZJWE1FOiBSYXdEYXRhIGRvZXNu
J3QgbmVlZCB0byBiZSBUaHJlYWRTYWZlUmVmQ291bnRlZCBhbnkgbW9yZS4gV2UgY2FuIHByb2Jh
Ymx5IHN3aXRjaCB0byBhbm90aGVyIGRhdGEgYnVmZmVyIHR5cGUgbm93LgotY2xhc3MgUmF3RGF0
YSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxSYXdEYXRhPiB7CitjbGFzcyBSYXdEYXRh
IDogcHVibGljIFJlZkNvdW50ZWQ8UmF3RGF0YT4gewogcHVibGljOgogICAgIHN0YXRpYyBQYXNz
UmVmUHRyPFJhd0RhdGE+IGNyZWF0ZShWZWN0b3I8Y2hhcj4mJiBkYXRhKQogICAgIHsKQEAgLTcx
LDg2ICs2OSw0OSBAQCBwcml2YXRlOgogc3RydWN0IEJsb2JEYXRhSXRlbSB7CiAgICAgc3RhdGlj
IGNvbnN0IGxvbmcgbG9uZyB0b0VuZE9mRmlsZTsKIAotICAgIC8vIERlZmF1bHQgY29uc3RydWN0
b3IuCi0gICAgQmxvYkRhdGFJdGVtKCkKLSAgICAgICAgOiB0eXBlKERhdGEpCi0gICAgICAgICwg
b2Zmc2V0KDApCi0gICAgICAgICwgbGVuZ3RoKHRvRW5kT2ZGaWxlKQotICAgICAgICAsIGV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmlsZVRpbWUoKSkKLSAgICB7Ci0gICAgfQotCi0g
ICAgLy8gQ29uc3RydWN0b3IgZm9yIFN0cmluZyB0eXBlIChjb21wbGV0ZSBzdHJpbmcpLgotICAg
IGV4cGxpY2l0IEJsb2JEYXRhSXRlbShQYXNzUmVmUHRyPFJhd0RhdGE+IGRhdGEpCi0gICAgICAg
IDogdHlwZShEYXRhKQotICAgICAgICAsIGRhdGEoZGF0YSkKLSAgICAgICAgLCBvZmZzZXQoMCkK
LSAgICAgICAgLCBsZW5ndGgodG9FbmRPZkZpbGUpCi0gICAgICAgICwgZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKGludmFsaWRGaWxlVGltZSgpKQotICAgIHsKLSAgICB9Ci0KLSAgICAvLyBDb25z
dHJ1Y3RvciBmb3IgRmlsZSB0eXBlIChjb21wbGV0ZSBmaWxlKS4KLSAgICBleHBsaWNpdCBCbG9i
RGF0YUl0ZW0oY29uc3QgU3RyaW5nJiBwYXRoKQotICAgICAgICA6IHR5cGUoRmlsZSkKLSAgICAg
ICAgLCBwYXRoKHBhdGgpCi0gICAgICAgICwgb2Zmc2V0KDApCi0gICAgICAgICwgbGVuZ3RoKHRv
RW5kT2ZGaWxlKQotICAgICAgICAsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShpbnZhbGlkRmls
ZVRpbWUoKSkKLSAgICB7Ci0gICAgfQotCi0gICAgLy8gQ29uc3RydWN0b3IgZm9yIEZpbGUgdHlw
ZSAocGFydGlhbCBmaWxlKS4KLSAgICBCbG9iRGF0YUl0ZW0oY29uc3QgU3RyaW5nJiBwYXRoLCBs
b25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmlj
YXRpb25UaW1lKQotICAgICAgICA6IHR5cGUoRmlsZSkKLSAgICAgICAgLCBwYXRoKHBhdGgpCi0g
ICAgICAgICwgb2Zmc2V0KG9mZnNldCkKLSAgICAgICAgLCBsZW5ndGgobGVuZ3RoKQotICAgICAg
ICAsIGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZShleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCi0g
ICAgewotICAgIH0KLQotICAgIC8vIENvbnN0cnVjdG9yIGZvciBCbG9iIHR5cGUuCi0gICAgQmxv
YkRhdGFJdGVtKGNvbnN0IFVSTCYgdXJsLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVu
Z3RoKQotICAgICAgICA6IHR5cGUoQmxvYikKLSAgICAgICAgLCB1cmwodXJsKQotICAgICAgICAs
IG9mZnNldChvZmZzZXQpCi0gICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBleHBl
Y3RlZE1vZGlmaWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCi0gICAgewotICAgIH0KLQog
ICAgIGVudW0gewogICAgICAgICBEYXRhLAotICAgICAgICBGaWxlLAotICAgICAgICBCbG9iCisg
ICAgICAgIEZpbGUKICAgICB9IHR5cGU7CiAKICAgICAvLyBGb3IgRGF0YSB0eXBlLgogICAgIFJl
ZlB0cjxSYXdEYXRhPiBkYXRhOwogCiAgICAgLy8gRm9yIEZpbGUgdHlwZS4KLSAgICBTdHJpbmcg
cGF0aDsKLQotICAgIC8vIEZvciBCbG9iIG9yIFVSTCB0eXBlLgotICAgIFVSTCB1cmw7CisgICAg
UmVmUHRyPEJsb2JEYXRhRmlsZVJlZmVyZW5jZT4gZmlsZTsKIAotICAgIGxvbmcgbG9uZyBvZmZz
ZXQ7Ci0gICAgbG9uZyBsb25nIGxlbmd0aDsKLSAgICBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lOworICAgIGxvbmcgbG9uZyBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtX29mZnNldDsg
fQorICAgIGxvbmcgbG9uZyBsZW5ndGgoKSBjb25zdDsgLy8gQ29tcHV0ZXMgZmlsZSBsZW5ndGgg
aWYgaXQncyBub3Qga25vd24geWV0LgogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBCbG9i
RGF0YTsKIAotICAgIC8vIENvbnN0cnVjdG9yIGZvciBTdHJpbmcgdHlwZSAocGFydGlhbCBzdHJp
bmcpLgorICAgIGV4cGxpY2l0IEJsb2JEYXRhSXRlbShjb25zdCBTdHJpbmcmIHBhdGgpCisgICAg
ICAgIDogdHlwZShGaWxlKQorICAgICAgICAsIGZpbGUoQmxvYkRhdGFGaWxlUmVmZXJlbmNlOjpj
cmVhdGUocGF0aCkpCisgICAgICAgICwgbV9vZmZzZXQoMCkKKyAgICAgICAgLCBtX2xlbmd0aCh0
b0VuZE9mRmlsZSkKKyAgICB7CisgICAgfQorCiAgICAgQmxvYkRhdGFJdGVtKFBhc3NSZWZQdHI8
UmF3RGF0YT4gZGF0YSwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKICAgICAg
ICAgOiB0eXBlKERhdGEpCiAgICAgICAgICwgZGF0YShkYXRhKQotICAgICAgICAsIG9mZnNldChv
ZmZzZXQpCi0gICAgICAgICwgbGVuZ3RoKGxlbmd0aCkKLSAgICAgICAgLCBleHBlY3RlZE1vZGlm
aWNhdGlvblRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCisgICAgICAgICwgbV9vZmZzZXQob2Zmc2V0
KQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICB7CisgICAgfQorCisgICAgQmxvYkRh
dGFJdGVtKEJsb2JEYXRhRmlsZVJlZmVyZW5jZSogZmlsZSwgbG9uZyBsb25nIG9mZnNldCwgbG9u
ZyBsb25nIGxlbmd0aCkKKyAgICAgICAgOiB0eXBlKEZpbGUpCisgICAgICAgICwgZmlsZShmaWxl
KQorICAgICAgICAsIG1fb2Zmc2V0KG9mZnNldCkKKyAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgp
CiAgICAgewogICAgIH0KKworICAgIGxvbmcgbG9uZyBtX29mZnNldDsKKyAgICBsb25nIGxvbmcg
bV9sZW5ndGg7CiB9OwogCiB0eXBlZGVmIFZlY3RvcjxCbG9iRGF0YUl0ZW0+IEJsb2JEYXRhSXRl
bUxpc3Q7CkBAIC0xNjgsMTggKzEyOSwxNiBAQCBwdWJsaWM6CiAgICAgY29uc3QgQmxvYkRhdGFJ
dGVtTGlzdCYgaXRlbXMoKSBjb25zdCB7IHJldHVybiBtX2l0ZW1zOyB9CiAgICAgdm9pZCBzd2Fw
SXRlbXMoQmxvYkRhdGFJdGVtTGlzdCYpOwogCi0gICAgdm9pZCBhcHBlbmREYXRhKFBhc3NSZWZQ
dHI8UmF3RGF0YT4sIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOworICAgIHZv
aWQgYXBwZW5kRGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+KTsKICAgICB2b2lkIGFwcGVuZEZpbGUo
Y29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICB2b2lkIGFwcGVuZEZpbGUoY29uc3QgU3RyaW5nJiBw
YXRoLCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcgbGVuZ3RoLCBkb3VibGUgZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKTsKLSAgICB2b2lkIGFwcGVuZEJsb2IoY29uc3QgVVJMJiwgbG9uZyBs
b25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNs
YXNzIEJsb2JSZWdpc3RyeUltcGw7CiAKLSAgICBCbG9iRGF0YSgpIHsgfQorICAgIHZvaWQgYXBw
ZW5kRGF0YShQYXNzUmVmUHRyPFJhd0RhdGE+LCBsb25nIGxvbmcgb2Zmc2V0LCBsb25nIGxvbmcg
bGVuZ3RoKTsKKyAgICB2b2lkIGFwcGVuZEZpbGUoQmxvYkRhdGFGaWxlUmVmZXJlbmNlKiwgbG9u
ZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7CiAKICAgICBTdHJpbmcgbV9jb250ZW50
VHlwZTsKLSAgICBTdHJpbmcgbV9jb250ZW50RGlzcG9zaXRpb247CiAgICAgQmxvYkRhdGFJdGVt
TGlzdCBtX2l0ZW1zOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9CbG9iRGF0YUZpbGVSZWZlcmVuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNlLmNwcAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxlUmVmZXJlbmNl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkJsb2JEYXRhRmlsZVJlZmVyZW5jZS5oIgorCisjaW5j
bHVkZSAiRmlsZU1ldGFkYXRhLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordW5zaWduZWQg
bG9uZyBsb25nIEJsb2JEYXRhRmlsZVJlZmVyZW5jZTo6c2l6ZSgpIGNvbnN0Cit7CisgICAgaWYg
KCFtX2ZpbGVTeXN0ZW1EYXRhQ29tcHV0ZWQpCisgICAgICAgIGNvbXB1dGVGaWxlU3lzdGVtRGF0
YSgpOworCisgICAgcmV0dXJuIG1fc2l6ZTsKK30KKworZG91YmxlIEJsb2JEYXRhRmlsZVJlZmVy
ZW5jZTo6ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZmls
ZVN5c3RlbURhdGFDb21wdXRlZCkKKyAgICAgICAgY29tcHV0ZUZpbGVTeXN0ZW1EYXRhKCk7CisK
KyAgICByZXR1cm4gbV9leHBlY3RlZE1vZGlmaWNhdGlvblRpbWU7Cit9CisKK3ZvaWQgQmxvYkRh
dGFGaWxlUmVmZXJlbmNlOjpjb21wdXRlRmlsZVN5c3RlbURhdGEoKSBjb25zdAoreworICAgIG1f
ZmlsZVN5c3RlbURhdGFDb21wdXRlZCA9IHRydWU7CisKKyAgICBGaWxlTWV0YWRhdGEgbWV0YWRh
dGE7CisgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEobV9wYXRoLCBtZXRhZGF0YSkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fc2l6ZSA9IG1ldGFkYXRhLmxlbmd0aDsKKyAgICBtX2V4cGVjdGVk
TW9kaWZpY2F0aW9uVGltZSA9IG1ldGFkYXRhLm1vZGlmaWNhdGlvblRpbWU7Cit9CisKK30KClBy
b3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRh
dGFGaWxlUmVmZXJlbmNlLmNwcApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0w
LDAgKzEgIyMKK25hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYkRhdGFGaWxl
UmVmZXJlbmNlLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Jsb2JEYXRhRmlsZVJlZmVyZW5jZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjcg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCisjZGVmaW5l
IEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCisKKyNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBCbG9iRGF0YUZpbGVSZWZlcmVuY2UgOiBw
dWJsaWMgUmVmQ291bnRlZDxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxCbG9iRGF0YUZpbGVSZWZlcmVuY2U+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIHBhdGgpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsb2JEYXRhRmls
ZVJlZmVyZW5jZShwYXRoKSk7CisgICAgfQorCisgICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29u
c3QgeyByZXR1cm4gbV9wYXRoOyB9CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHNpemUoKSBjb25z
dDsKKyAgICBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkgY29uc3Q7CisKK3ByaXZh
dGU6CisgICAgQmxvYkRhdGFGaWxlUmVmZXJlbmNlKGNvbnN0IFN0cmluZyYgcGF0aCkKKyAgICAg
ICAgOiBtX3BhdGgocGF0aCkKKyAgICAgICAgLCBtX2ZpbGVTeXN0ZW1EYXRhQ29tcHV0ZWQoZmFs
c2UpCisgICAgICAgICwgbV9zaXplKDApCisgICAgICAgICwgbV9leHBlY3RlZE1vZGlmaWNhdGlv
blRpbWUoaW52YWxpZEZpbGVUaW1lKCkpCisgICAgeworICAgICAgICAvLyBGSVhNRTogUGVyIHRo
ZSBzcGVjLCBhIEZpbGUgb2JqZWN0IHNob3VsZCBzdGFydCB3YXRjaGluZyBmb3IgY2hhbmdlcyBh
cyBzb29uIGFzIGl0J3MgY3JlYXRlZCwgc28gd2Ugc2hvdWxkIHJlY29yZCBtX2V4cGVjdGVkTW9k
aWZpY2F0aW9uVGltZSByaWdodCBhd2F5LgorICAgICAgICAvLyBGSVhNRTogU29tZSBwbGF0Zm9y
bXMgcHJvdmlkZSBiZXR0ZXIgd2F5cyB0byBsaXN0ZW4gZm9yIGZpbGUgc3lzdGVtIG9iamVjdCBj
aGFuZ2VzLCBjb25zaWRlciB1c2luZyB0aGVzZS4KKyAgICB9CisKKyAgICB2b2lkIGNvbXB1dGVG
aWxlU3lzdGVtRGF0YSgpIGNvbnN0OworCisgICAgU3RyaW5nIG1fcGF0aDsKKyAgICBtdXRhYmxl
IGJvb2wgbV9maWxlU3lzdGVtRGF0YUNvbXB1dGVkOworICAgIG11dGFibGUgdW5zaWduZWQgbG9u
ZyBsb25nIG1fc2l6ZTsKKyAgICBtdXRhYmxlIGRvdWJsZSBtX2V4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZTsKK307CisKK30KKworI2VuZGlmIC8vIEJsb2JEYXRhRmlsZVJlZmVyZW5jZV9oCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JEYXRh
RmlsZVJlZmVyZW5jZS5oCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjplb2wtc3R5bGUKIyMgLTAsMCAr
MSAjIworbmF0aXZlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlZ2lzdHJ5SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9CbG9iUmVnaXN0cnlJbXBsLmNw
cAkocmV2aXNpb24gMTY4Mzg1KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9C
bG9iUmVnaXN0cnlJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTQsMjIgKzk0LDIxIEBAIHZv
aWQgQmxvYlJlZ2lzdHJ5SW1wbDo6YXBwZW5kU3RvcmFnZUl0ZW0KICAgICBCbG9iRGF0YUl0ZW1M
aXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gaXRlbXMuYmVnaW4oKTsKICAgICBpZiAob2Zmc2V0
KSB7CiAgICAgICAgIGZvciAoOyBpdGVyICE9IGl0ZW1zLmVuZCgpOyArK2l0ZXIpIHsKLSAgICAg
ICAgICAgIGlmIChvZmZzZXQgPj0gaXRlci0+bGVuZ3RoKQotICAgICAgICAgICAgICAgIG9mZnNl
dCAtPSBpdGVyLT5sZW5ndGg7CisgICAgICAgICAgICBpZiAob2Zmc2V0ID49IGl0ZXItPmxlbmd0
aCgpKQorICAgICAgICAgICAgICAgIG9mZnNldCAtPSBpdGVyLT5sZW5ndGgoKTsKICAgICAgICAg
ICAgIGVsc2UKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KIAogICAg
IGZvciAoOyBpdGVyICE9IGl0ZW1zLmVuZCgpICYmIGxlbmd0aCA+IDA7ICsraXRlcikgewotICAg
ICAgICBBU1NFUlQoaXRlci0+bGVuZ3RoICE9IEJsb2JEYXRhSXRlbTo6dG9FbmRPZkZpbGUpOwot
ICAgICAgICBsb25nIGxvbmcgY3VycmVudExlbmd0aCA9IGl0ZXItPmxlbmd0aCAtIG9mZnNldDsK
KyAgICAgICAgbG9uZyBsb25nIGN1cnJlbnRMZW5ndGggPSBpdGVyLT5sZW5ndGgoKSAtIG9mZnNl
dDsKICAgICAgICAgbG9uZyBsb25nIG5ld0xlbmd0aCA9IGN1cnJlbnRMZW5ndGggPiBsZW5ndGgg
PyBsZW5ndGggOiBjdXJyZW50TGVuZ3RoOwogICAgICAgICBpZiAoaXRlci0+dHlwZSA9PSBCbG9i
RGF0YUl0ZW06OkRhdGEpCi0gICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5kRGF0YShpdGVyLT5k
YXRhLCBpdGVyLT5vZmZzZXQgKyBvZmZzZXQsIG5ld0xlbmd0aCk7CisgICAgICAgICAgICBibG9i
RGF0YS0+YXBwZW5kRGF0YShpdGVyLT5kYXRhLCBpdGVyLT5vZmZzZXQoKSArIG9mZnNldCwgbmV3
TGVuZ3RoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoaXRlci0+dHlwZSA9
PSBCbG9iRGF0YUl0ZW06OkZpbGUpOwotICAgICAgICAgICAgYmxvYkRhdGEtPmFwcGVuZEZpbGUo
aXRlci0+cGF0aCwgaXRlci0+b2Zmc2V0ICsgb2Zmc2V0LCBuZXdMZW5ndGgsIGl0ZXItPmV4cGVj
dGVkTW9kaWZpY2F0aW9uVGltZSk7CisgICAgICAgICAgICBibG9iRGF0YS0+YXBwZW5kRmlsZShp
dGVyLT5maWxlLmdldCgpLCBpdGVyLT5vZmZzZXQoKSArIG9mZnNldCwgbmV3TGVuZ3RoKTsKICAg
ICAgICAgfQogICAgICAgICBsZW5ndGggLT0gbmV3TGVuZ3RoOwogICAgICAgICBvZmZzZXQgPSAw
OwpAQCAtMTI1LDEyICsxMjQsNyBAQCB2b2lkIEJsb2JSZWdpc3RyeUltcGw6OnJlZ2lzdGVyRmls
ZUJsb2JVCiAgICAgUmVmUHRyPEJsb2JEYXRhPiBibG9iRGF0YSA9IEJsb2JEYXRhOjpjcmVhdGUo
KTsKICAgICBibG9iRGF0YS0+c2V0Q29udGVudFR5cGUoY29udGVudFR5cGUpOwogCi0gICAgLy8g
RklYTUU6IEZhY3RvciBvdXQgc2l6ZSBhbmQgbW9kaWZpY2F0aW9uIHRyYWNraW5nIGZvciBhIGNs
ZWFuZXIgaW1wbGVtZW50YXRpb24uCi0gICAgRmlsZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgIGlm
ICghZ2V0RmlsZU1ldGFkYXRhKHBhdGgsIG1ldGFkYXRhKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgYmxvYkRhdGEtPmFwcGVuZEZpbGUocGF0aCwgMCwgbWV0YWRhdGEubGVuZ3RoLCBtZXRhZGF0
YS5tb2RpZmljYXRpb25UaW1lKTsKKyAgICBibG9iRGF0YS0+YXBwZW5kRmlsZShwYXRoKTsKICAg
ICBtX2Jsb2JzLnNldCh1cmwuc3RyaW5nKCksIGJsb2JEYXRhLnJlbGVhc2UoKSk7CiB9CiAKQEAg
LTE2MSw5ICsxNTUsOSBAQCB1bnNpZ25lZCBsb25nIGxvbmcgQmxvYlJlZ2lzdHJ5SW1wbDo6cmVn
CiAgICAgICAgIGNhc2UgQmxvYlBhcnQ6OkJsb2I6IHsKICAgICAgICAgICAgIGlmICghbV9ibG9i
cy5jb250YWlucyhwYXJ0LnVybCgpLnN0cmluZygpKSkKICAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLSAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyBwYXJ0U2l6ZSA9IGJsb2JTaXplKHBh
cnQudXJsKCkpOyAvLyBBcyBhIHNpZGUgZWZmZWN0LCB0aGlzIGNhbGN1bGF0ZXMgc2l6ZXMgb2Yg
YWxsIGZpbGVzIGluIHRoZSBibG9iLgotICAgICAgICAgICAgc2l6ZSArPSBwYXJ0U2l6ZTsKLSAg
ICAgICAgICAgIGFwcGVuZFN0b3JhZ2VJdGVtcyhibG9iRGF0YS5nZXQoKSwgbV9ibG9icy5nZXQo
cGFydC51cmwoKS5zdHJpbmcoKSktPml0ZW1zKCksIDAsIHBhcnRTaXplKTsKKyAgICAgICAgICAg
IHNpemUgKz0gYmxvYlNpemUocGFydC51cmwoKSk7CisgICAgICAgICAgICBmb3IgKGNvbnN0IEJs
b2JEYXRhSXRlbSYgaXRlbSA6IG1fYmxvYnMuZ2V0KHBhcnQudXJsKCkuc3RyaW5nKCkpLT5pdGVt
cygpKQorICAgICAgICAgICAgICAgIGJsb2JEYXRhLT5tX2l0ZW1zLmFwcGVuZChpdGVtKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIH0KQEAgLTI0MiwxOCArMjM2LDkg
QEAgdW5zaWduZWQgbG9uZyBsb25nIEJsb2JSZWdpc3RyeUltcGw6OmJsbwogICAgICAgICByZXR1
cm4gMDsKIAogICAgIHVuc2lnbmVkIGxvbmcgbG9uZyByZXN1bHQgPSAwOwotICAgIGZvciAoY29u
c3QgQmxvYkRhdGFJdGVtJiBpdGVtIDogZGF0YS0+aXRlbXMoKSkgewotICAgICAgICBpZiAoaXRl
bS5sZW5ndGggPT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkgewotICAgICAgICAgICAgRmls
ZU1ldGFkYXRhIG1ldGFkYXRhOwotICAgICAgICAgICAgaWYgKCFnZXRGaWxlTWV0YWRhdGEoaXRl
bS5wYXRoLCBtZXRhZGF0YSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgZm9yIChj
b25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gOiBkYXRhLT5pdGVtcygpKQorICAgICAgICByZXN1bHQg
Kz0gaXRlbS5sZW5ndGgoKTsKIAotICAgICAgICAgICAgLy8gRklYTUU6IEZhY3RvciBvdXQgc2l6
ZSBhbmQgbW9kaWZpY2F0aW9uIHRyYWNraW5nIGZvciBhIGNsZWFuZXIgaW1wbGVtZW50YXRpb24u
Ci0gICAgICAgICAgICBjb25zdF9jYXN0PEJsb2JEYXRhSXRlbSY+KGl0ZW0pLmxlbmd0aCA9IG1l
dGFkYXRhLmxlbmd0aDsKLSAgICAgICAgICAgIGNvbnN0X2Nhc3Q8QmxvYkRhdGFJdGVtJj4oaXRl
bSkuZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lID0gbWV0YWRhdGEubW9kaWZpY2F0aW9uVGltZTsK
LSAgICAgICAgfQotICAgICAgICByZXN1bHQgKz0gaXRlbS5sZW5ndGg7Ci0gICAgfQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
QmxvYlJlc291cmNlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5jcHAJKHJldmlzaW9uIDE2ODM4NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvQmxvYlJlc291cmNlSGFuZGxlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjc2LDEzICsyNzYsMTQgQEAgdm9pZCBCbG9iUmVzb3VyY2VIYW5k
bGU6OmdldFNpemVGb3JOZXh0KAogICAgIGNvbnN0IEJsb2JEYXRhSXRlbSYgaXRlbSA9IG1fYmxv
YkRhdGEtPml0ZW1zKCkuYXQobV9zaXplSXRlbUNvdW50KTsKICAgICBzd2l0Y2ggKGl0ZW0udHlw
ZSkgewogICAgIGNhc2UgQmxvYkRhdGFJdGVtOjpEYXRhOgotICAgICAgICBkaWRHZXRTaXplKGl0
ZW0ubGVuZ3RoKTsKKyAgICAgICAgZGlkR2V0U2l6ZShpdGVtLmxlbmd0aCgpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBCbG9iRGF0YUl0ZW06OkZpbGU6CisgICAgICAgIC8vIEZpbGVzIGtu
b3cgdGhlaXIgc2l6ZXMsIGJ1dCBhc2tpbmcgdGhlIHN0cmVhbSB0byB2ZXJpZnkgdGhhdCB0aGUg
ZmlsZSB3YXNuJ3QgbW9kaWZpZWQuCiAgICAgICAgIGlmIChtX2FzeW5jKQotICAgICAgICAgICAg
bV9hc3luY1N0cmVhbS0+Z2V0U2l6ZShpdGVtLnBhdGgsIGl0ZW0uZXhwZWN0ZWRNb2RpZmljYXRp
b25UaW1lKTsKKyAgICAgICAgICAgIG1fYXN5bmNTdHJlYW0tPmdldFNpemUoaXRlbS5maWxlLT5w
YXRoKCksIGl0ZW0uZmlsZS0+ZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKCkpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBkaWRHZXRTaXplKG1fc3RyZWFtLT5nZXRTaXplKGl0ZW0ucGF0aCwg
aXRlbS5leHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpKTsKKyAgICAgICAgICAgIGRpZEdldFNpemUo
bV9zdHJlYW0tPmdldFNpemUoaXRlbS5maWxlLT5wYXRoKCksIGl0ZW0uZmlsZS0+ZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKCkpKTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0zMDYsOCArMzA3LDcgQEAgdm9pZCBCbG9iUmVz
b3VyY2VIYW5kbGU6OmRpZEdldFNpemUobG9uZwogCiAgICAgLy8gVGhlIHNpemUgcGFzc2VkIGJh
Y2sgaXMgdGhlIHNpemUgb2YgdGhlIHdob2xlIGZpbGUuIElmIHRoZSB1bmRlcmx5aW5nIGl0ZW0g
aXMgYSBzbGljZWQgZmlsZSwgd2UgbmVlZCB0byB1c2UgdGhlIHNsaWNlIGxlbmd0aC4KICAgICBj
b25zdCBCbG9iRGF0YUl0ZW0mIGl0ZW0gPSBtX2Jsb2JEYXRhLT5pdGVtcygpLmF0KG1fc2l6ZUl0
ZW1Db3VudCk7Ci0gICAgaWYgKGl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06OkZpbGUgJiYgaXRl
bS5sZW5ndGggIT0gQmxvYkRhdGFJdGVtOjp0b0VuZE9mRmlsZSkKLSAgICAgICAgc2l6ZSA9IGl0
ZW0ubGVuZ3RoOworICAgIHNpemUgPSBpdGVtLmxlbmd0aCgpOwogCiAgICAgLy8gQ2FjaGUgdGhl
IHNpemUuCiAgICAgbV9pdGVtTGVuZ3RoTGlzdC5hcHBlbmQoc2l6ZSk7CkBAIC00MDUsMTUgKzQw
NSwxNSBAQCBpbnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRGF0YVN5bmMoY29uCiAKICAgICBB
U1NFUlQoIW1fYXN5bmMpOwogCi0gICAgbG9uZyBsb25nIHJlbWFpbmluZyA9IGl0ZW0ubGVuZ3Ro
IC0gbV9jdXJyZW50SXRlbVJlYWRTaXplOworICAgIGxvbmcgbG9uZyByZW1haW5pbmcgPSBpdGVt
Lmxlbmd0aCgpIC0gbV9jdXJyZW50SXRlbVJlYWRTaXplOwogICAgIGludCBieXRlc1RvUmVhZCA9
IChsZW5ndGggPiByZW1haW5pbmcpID8gc3RhdGljX2Nhc3Q8aW50PihyZW1haW5pbmcpIDogbGVu
Z3RoOwogICAgIGlmIChieXRlc1RvUmVhZCA+IG1fdG90YWxSZW1haW5pbmdTaXplKQogICAgICAg
ICBieXRlc1RvUmVhZCA9IHN0YXRpY19jYXN0PGludD4obV90b3RhbFJlbWFpbmluZ1NpemUpOwot
ICAgIG1lbWNweShidWYsIGl0ZW0uZGF0YS0+ZGF0YSgpICsgaXRlbS5vZmZzZXQgKyBtX2N1cnJl
bnRJdGVtUmVhZFNpemUsIGJ5dGVzVG9SZWFkKTsKKyAgICBtZW1jcHkoYnVmLCBpdGVtLmRhdGEt
PmRhdGEoKSArIGl0ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemUsIGJ5dGVzVG9S
ZWFkKTsKICAgICBtX3RvdGFsUmVtYWluaW5nU2l6ZSAtPSBieXRlc1RvUmVhZDsKIAogICAgIG1f
Y3VycmVudEl0ZW1SZWFkU2l6ZSArPSBieXRlc1RvUmVhZDsKLSAgICBpZiAobV9jdXJyZW50SXRl
bVJlYWRTaXplID09IGl0ZW0ubGVuZ3RoKSB7CisgICAgaWYgKG1fY3VycmVudEl0ZW1SZWFkU2l6
ZSA9PSBpdGVtLmxlbmd0aCgpKSB7CiAgICAgICAgIG1fcmVhZEl0ZW1Db3VudCsrOwogICAgICAg
ICBtX2N1cnJlbnRJdGVtUmVhZFNpemUgPSAwOwogICAgIH0KQEAgLTQzMSw3ICs0MzEsNyBAQCBp
bnQgQmxvYlJlc291cmNlSGFuZGxlOjpyZWFkRmlsZVN5bmMoY29uCiAgICAgICAgIGxvbmcgbG9u
ZyBieXRlc1RvUmVhZCA9IG1faXRlbUxlbmd0aExpc3RbbV9yZWFkSXRlbUNvdW50XSAtIG1fY3Vy
cmVudEl0ZW1SZWFkU2l6ZTsKICAgICAgICAgaWYgKGJ5dGVzVG9SZWFkID4gbV90b3RhbFJlbWFp
bmluZ1NpemUpCiAgICAgICAgICAgICBieXRlc1RvUmVhZCA9IG1fdG90YWxSZW1haW5pbmdTaXpl
OwotICAgICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+b3BlbkZvclJlYWQoaXRlbS5wYXRo
LCBpdGVtLm9mZnNldCArIG1fY3VycmVudEl0ZW1SZWFkU2l6ZSwgYnl0ZXNUb1JlYWQpOworICAg
ICAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+b3BlbkZvclJlYWQoaXRlbS5maWxlLT5wYXRo
KCksIGl0ZW0ub2Zmc2V0KCkgKyBtX2N1cnJlbnRJdGVtUmVhZFNpemUsIGJ5dGVzVG9SZWFkKTsK
ICAgICAgICAgbV9jdXJyZW50SXRlbVJlYWRTaXplID0gMDsKICAgICAgICAgaWYgKCFzdWNjZXNz
KSB7CiAgICAgICAgICAgICBtX2Vycm9yQ29kZSA9IG5vdFJlYWRhYmxlRXJyb3I7CkBAIC00ODYs
MTAgKzQ4NiwxMCBAQCB2b2lkIEJsb2JSZXNvdXJjZUhhbmRsZTo6cmVhZERhdGFBc3luYyhjCiAg
ICAgQVNTRVJUKG1fYXN5bmMpOwogICAgIFJlZjxCbG9iUmVzb3VyY2VIYW5kbGU+IHByb3RlY3Qo
KnRoaXMpOwogCi0gICAgbG9uZyBsb25nIGJ5dGVzVG9SZWFkID0gaXRlbS5sZW5ndGggLSBtX2N1
cnJlbnRJdGVtUmVhZFNpemU7CisgICAgbG9uZyBsb25nIGJ5dGVzVG9SZWFkID0gaXRlbS5sZW5n
dGgoKSAtIG1fY3VycmVudEl0ZW1SZWFkU2l6ZTsKICAgICBpZiAoYnl0ZXNUb1JlYWQgPiBtX3Rv
dGFsUmVtYWluaW5nU2l6ZSkKICAgICAgICAgYnl0ZXNUb1JlYWQgPSBtX3RvdGFsUmVtYWluaW5n
U2l6ZTsKLSAgICBjb25zdW1lRGF0YShpdGVtLmRhdGEtPmRhdGEoKSArIGl0ZW0ub2Zmc2V0ICsg
bV9jdXJyZW50SXRlbVJlYWRTaXplLCBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzVG9SZWFkKSk7Cisg
ICAgY29uc3VtZURhdGEoaXRlbS5kYXRhLT5kYXRhKCkgKyBpdGVtLm9mZnNldCgpICsgbV9jdXJy
ZW50SXRlbVJlYWRTaXplLCBzdGF0aWNfY2FzdDxpbnQ+KGJ5dGVzVG9SZWFkKSk7CiAgICAgbV9j
dXJyZW50SXRlbVJlYWRTaXplID0gMDsKIH0KIApAQCAtNTA2LDcgKzUwNiw3IEBAIHZvaWQgQmxv
YlJlc291cmNlSGFuZGxlOjpyZWFkRmlsZUFzeW5jKGMKICAgICBsb25nIGxvbmcgYnl0ZXNUb1Jl
YWQgPSBtX2l0ZW1MZW5ndGhMaXN0W21fcmVhZEl0ZW1Db3VudF0gLSBtX2N1cnJlbnRJdGVtUmVh
ZFNpemU7CiAgICAgaWYgKGJ5dGVzVG9SZWFkID4gbV90b3RhbFJlbWFpbmluZ1NpemUpCiAgICAg
ICAgIGJ5dGVzVG9SZWFkID0gc3RhdGljX2Nhc3Q8aW50PihtX3RvdGFsUmVtYWluaW5nU2l6ZSk7
Ci0gICAgbV9hc3luY1N0cmVhbS0+b3BlbkZvclJlYWQoaXRlbS5wYXRoLCBpdGVtLm9mZnNldCAr
IG1fY3VycmVudEl0ZW1SZWFkU2l6ZSwgYnl0ZXNUb1JlYWQpOworICAgIG1fYXN5bmNTdHJlYW0t
Pm9wZW5Gb3JSZWFkKGl0ZW0uZmlsZS0+cGF0aCgpLCBpdGVtLm9mZnNldCgpICsgbV9jdXJyZW50
SXRlbVJlYWRTaXplLCBieXRlc1RvUmVhZCk7CiAgICAgbV9maWxlT3BlbmVkID0gdHJ1ZTsKICAg
ICBtX2N1cnJlbnRJdGVtUmVhZFNpemUgPSAwOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9CbG9iUmVzb3VyY2VIYW5kbGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhhbmRsZS5oCShyZXZpc2lvbiAx
NjgzODUpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Jsb2JSZXNvdXJjZUhh
bmRsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1Miw3IEBAIGNsYXNzIEJsb2JSZXNvdXJj
ZUhhbmRsZSA6IHB1YmxpYyBGaWxlU3QKIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
bG9iUmVzb3VyY2VIYW5kbGU+IGNyZWF0ZUFzeW5jKEJsb2JEYXRhKiwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiwgUmVzb3VyY2VIYW5kbGVDbGllbnQqKTsKIAotICAgIHN0YXRpYyB2b2lkIGxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkoQmxvYkRhdGEqIGJsb2JEYXRhLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiBy
ZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKKyAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3Vy
Y2VTeW5jaHJvbm91c2x5KEJsb2JEYXRhKiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3Vy
Y2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAg
Ly8gRmlsZVN0cmVhbUNsaWVudCBtZXRob2RzLgogICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRTaXpl
KGxvbmcgbG9uZykgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhLmNwcAkocmV2aXNpb24gMTY4Mzg1KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxMiwxMSAr
MzEyLDkgQEAgc3RhdGljIHZvaWQgYXBwZW5kQmxvYlJlc29sdmVkKEZvcm1EYXRhKgogICAgIGZv
ciAoOyBpdCAhPSBpdGVuZDsgKytpdCkgewogICAgICAgICBjb25zdCBCbG9iRGF0YUl0ZW0mIGJs
b2JJdGVtID0gKml0OwogICAgICAgICBpZiAoYmxvYkl0ZW0udHlwZSA9PSBCbG9iRGF0YUl0ZW06
OkRhdGEpCi0gICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRGF0YShibG9iSXRlbS5kYXRhLT5k
YXRhKCkgKyBzdGF0aWNfY2FzdDxpbnQ+KGJsb2JJdGVtLm9mZnNldCksIHN0YXRpY19jYXN0PGlu
dD4oYmxvYkl0ZW0ubGVuZ3RoKSk7CisgICAgICAgICAgICBmb3JtRGF0YS0+YXBwZW5kRGF0YShi
bG9iSXRlbS5kYXRhLT5kYXRhKCkgKyBzdGF0aWNfY2FzdDxpbnQ+KGJsb2JJdGVtLm9mZnNldCgp
KSwgc3RhdGljX2Nhc3Q8aW50PihibG9iSXRlbS5sZW5ndGgoKSkpOwogICAgICAgICBlbHNlIGlm
IChibG9iSXRlbS50eXBlID09IEJsb2JEYXRhSXRlbTo6RmlsZSkKLSAgICAgICAgICAgIGZvcm1E
YXRhLT5hcHBlbmRGaWxlUmFuZ2UoYmxvYkl0ZW0ucGF0aCwgYmxvYkl0ZW0ub2Zmc2V0LCBibG9i
SXRlbS5sZW5ndGgsIGJsb2JJdGVtLmV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSk7Ci0gICAgICAg
IGVsc2UgaWYgKGJsb2JJdGVtLnR5cGUgPT0gQmxvYkRhdGFJdGVtOjpCbG9iKQotICAgICAgICAg
ICAgYXBwZW5kQmxvYlJlc29sdmVkKGZvcm1EYXRhLCBibG9iSXRlbS51cmwpOworICAgICAgICAg
ICAgZm9ybURhdGEtPmFwcGVuZEZpbGVSYW5nZShibG9iSXRlbS5maWxlLT5wYXRoKCksIGJsb2JJ
dGVtLm9mZnNldCgpLCBibG9iSXRlbS5sZW5ndGgoKSwgYmxvYkl0ZW0uZmlsZS0+ZXhwZWN0ZWRN
b2RpZmljYXRpb25UaW1lKCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICB9Cg==
</data>
<flag name="review"
          id="255351"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>