<?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>44213</bug_id>
          
          <creation_ts>2010-08-18 16:18:47 -0700</creation_ts>
          <short_desc>Move FileStream to platform</short_desc>
          <delta_ts>2010-08-18 16:53:25 -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 JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jian Li">jianli</reporter>
          <assigned_to name="Jian Li">jianli</assigned_to>
          <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>kinuko</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>266439</commentid>
    <comment_count>0</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-18 16:18:47 -0700</bug_when>
    <thetext>Need to move FileStream to platform since it will be needed by BlobResourceHandle that will be put under platform.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266451</commentid>
    <comment_count>1</comment_count>
      <attachid>64787</attachid>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-18 16:34:58 -0700</bug_when>
    <thetext>Created attachment 64787
Proposed Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266459</commentid>
    <comment_count>2</comment_count>
    <who name="Jian Li">jianli</who>
    <bug_when>2010-08-18 16:53:25 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/65645.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64787</attachid>
            <date>2010-08-18 16:34:58 -0700</date>
            <delta_ts>2010-08-18 16:44:11 -0700</delta_ts>
            <desc>Proposed Patch</desc>
            <filename>44213</filename>
            <type>text/plain</type>
            <size>37565</size>
            <attacher name="Jian Li">jianli</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQW5kcm9pZC5tayBiL1dlYkNvcmUvQW5kcm9pZC5tawppbmRl
eCAxNTliNDIwLi5hYzEwNjBhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0FuZHJvaWQubWsKKysrIGIv
V2ViQ29yZS9BbmRyb2lkLm1rCkBAIC00MTQsNiArNDE0LDcgQEAgTE9DQUxfU1JDX0ZJTEVTIDo9
ICQoTE9DQUxfU1JDX0ZJTEVTKSBcCiAJcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKIAlwbGF0Zm9y
bS9EcmFnSW1hZ2UuY3BwIFwKIAlwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXAorCXBsYXRmb3Jt
L0ZpbGVTdHJlYW0uY3BwIFwKIAlwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCiAJcGxhdGZvcm0v
R2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAJcGxhdGZvcm0vS1VSTC5jcHAgXApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNTViMWM0Li5h
N2I1MGExIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDEwLTA4LTE4ICBKaWFuIExpICA8amlhbmxpQGNocm9t
aXVtLm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBNb3ZlIEZpbGVTdHJlYW0gdG8gcGxhdGZvcm0uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDIxMworCisgICAgICAgIEluIGFkZGl0aW9uIHRvIG1v
dmluZyBmaWxlcyBvdmVyLCBGaWxlU3RyZWFtIGhhcyBiZWVuIGNoYW5nZWQgdG8gcmVtb3ZlCisg
ICAgICAgIEV4Y2VwdGlvbkNvZGUgZGVwZW5kZW5jeS4gQWxzbyB1cGRhdGUgRmlsZVN0cmVhbVBy
b3h5IGFuZCBGaWxlUmVhZCB0bworICAgICAgICBhY2NvdW50IGZvciB0aGlzIGNoYW5nZS4KKwor
ICAgICAgICAqIEFuZHJvaWQubWs6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIFdlYkNv
cmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL0ZpbGVSZWFkZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RmlsZVJlYWRlcjo6ZGlkT3Blbik6CisgICAgICAgICogaHRtbC9GaWxlUmVhZGVy
Lmg6CisgICAgICAgICogaHRtbC9GaWxlU3RyZWFtLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBo
dG1sL0ZpbGVTdHJlYW0uaDogUmVtb3ZlZC4KKyAgICAgICAgKiBodG1sL0ZpbGVTdHJlYW1DbGll
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1DbGllbnQ6OmRpZFRydW5jYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1DbGllbnQ6OmRpZE9wZW4pOgorICAgICAgICAq
IGh0bWwvRmlsZVN0cmVhbVByb3h5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmRpZE9wZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZE9uRmlsZVRocmVh
ZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JXcml0ZU9uRmls
ZVRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpGaWxlU3RyZWFtUHJveHk6OndyaXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGlkVHJ1bmNhdGUpOgorICAgICAgICAoV2ViQ29yZTo6RmlsZVN0cmVh
bVByb3h5Ojp0cnVuY2F0ZU9uRmlsZVRocmVhZCk6CisgICAgICAgICogaHRtbC9GaWxlU3RyZWFt
UHJveHkuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcDogUmVuYW1lZCBmcm9t
IFdlYkNvcmUvRmlsZVN0cmVhbS5jcHAgYW5kIHVwZGF0ZWQuCisgICAgICAgICogcGxhdGZvcm0v
RmlsZVN0cmVhbS5oOiBSZW5hbWVkIGZyb20gV2ViQ29yZS9GaWxlU3RyZWFtLmggYW5kIHVwZGF0
ZWQuCisKKzIwMTAtMDgtMTggIEppYW4gTGkgIDxqaWFubGlAY2hyb21pdW0ub3JnPgorCiAgICAg
ICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KIAogICAgICAgICBDaHJvbWl1bSBzaWRlIGlt
cGxlbWVudGF0aW9uIG9mIGJsb2IgZGF0YSBhbmQgYmxvYiByZWdpc3RyeS4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGMx
OTE1NzMuLmM2ZDU4MzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIv
V2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTM1Myw4ICsxMzUzLDYgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL2h0bWwvRmlsZUxpc3QuaCBcCiAJV2ViQ29yZS9odG1sL0ZpbGVS
ZWFkZXIuY3BwIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVJlYWRlci5oIFwKLQlXZWJDb3JlL2h0bWwv
RmlsZVN0cmVhbS5jcHAgXAotCVdlYkNvcmUvaHRtbC9GaWxlU3RyZWFtLmggXAogCVdlYkNvcmUv
aHRtbC9GaWxlU3RyZWFtQ2xpZW50LmggXAogCVdlYkNvcmUvaHRtbC9GaWxlU3RyZWFtUHJveHku
Y3BwIFwKIAlXZWJDb3JlL2h0bWwvRmlsZVN0cmVhbVByb3h5LmggXApAQCAtMTkwMSw2ICsxODk5
LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3JtL0V2ZW50TG9vcC5o
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwIFwKKwlX
ZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggXAogCVdlYkNvcmUvcGxh
dGZvcm0vRmxvYXRDb252ZXJzaW9uLmggXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkOTA2Mzg1Li4zMmIyZmUxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAt
MTUxOCw4ICsxNTE4LDYgQEAKICAgICAgICAgICAgICdodG1sL0ZpbGVMaXN0LmgnLAogICAgICAg
ICAgICAgJ2h0bWwvRmlsZVJlYWRlci5jcHAnLAogICAgICAgICAgICAgJ2h0bWwvRmlsZVJlYWRl
ci5oJywKLSAgICAgICAgICAgICdodG1sL0ZpbGVTdHJlYW0uY3BwJywKLSAgICAgICAgICAgICdo
dG1sL0ZpbGVTdHJlYW0uaCcsCiAgICAgICAgICAgICAnaHRtbC9GaWxlU3RyZWFtQ2xpZW50Lmgn
LAogICAgICAgICAgICAgJ2h0bWwvRmlsZVN0cmVhbVByb3h5LmNwcCcsCiAgICAgICAgICAgICAn
aHRtbC9GaWxlU3RyZWFtUHJveHkuaCcsCkBAIC0zMDYwLDYgKzMwNTgsOCBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL0V2ZW50TG9vcC5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS9GaWxlQ2hv
b3Nlci5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmgnLAorICAgICAg
ICAgICAgJ3BsYXRmb3JtL0ZpbGVTdHJlYW0uY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS9G
aWxlU3RyZWFtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL0ZpbGVTeXN0ZW0uY3BwJywKICAg
ICAgICAgICAgICdwbGF0Zm9ybS9GaWxlU3lzdGVtLmgnLAogICAgICAgICAgICAgJ3BsYXRmb3Jt
L0Zsb2F0Q29udmVyc2lvbi5oJywKZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS5wcm8gYi9X
ZWJDb3JlL1dlYkNvcmUucHJvCmluZGV4IDQyY2E5NWYuLjZjNmUyODkgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvV2ViQ29yZS5wcm8KKysrIGIvV2ViQ29yZS9XZWJDb3JlLnBybwpAQCAtNjM2LDcgKzYz
Niw2IEBAIFNPVVJDRVMgKz0gXAogICAgIGh0bWwvRmlsZS5jcHAgXAogICAgIGh0bWwvRmlsZUxp
c3QuY3BwIFwKICAgICBodG1sL0ZpbGVSZWFkZXIuY3BwIFwKLSAgICBodG1sL0ZpbGVTdHJlYW0u
Y3BwIFwKICAgICBodG1sL0ZpbGVTdHJlYW1Qcm94eS5jcHAgXAogICAgIGh0bWwvRmlsZVRocmVh
ZC5jcHAgXAogICAgIGh0bWwvRm9ybURhdGFMaXN0LmNwcCBcCkBAIC04NzUsNiArODc0LDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9E
cmFnSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXAorICAgIHBsYXRm
b3JtL0ZpbGVTdHJlYW0uY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlU3lzdGVtLmNwcCBcCiAgICAg
cGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwIFwKQEAgLTE0MTAsNyArMTQxMCw2IEBAIEhFQURF
UlMgKz0gXAogICAgIGh0bWwvRmlsZUVycm9yLmggXAogICAgIGh0bWwvRmlsZUxpc3QuaCBcCiAg
ICAgaHRtbC9GaWxlUmVhZGVyLmggXAotICAgIGh0bWwvRmlsZVN0cmVhbS5oIFwKICAgICBodG1s
L0ZpbGVTdHJlYW1DbGllbnQuaCBcCiAgICAgaHRtbC9GaWxlU3RyZWFtUHJveHkuaCBcCiAgICAg
aHRtbC9GaWxlVGhyZWFkLmggXApAQCAtMTY1Myw2ICsxNjUyLDcgQEAgSEVBREVSUyArPSBcCiAg
ICAgcGxhdGZvcm0vRHJhZ0RhdGEuaCBcCiAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmggXAogICAg
IHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXAorICAgIHBsYXRmb3JtL0ZpbGVTdHJlYW0uaCBcCiAg
ICAgcGxhdGZvcm0vRmlsZVN5c3RlbS5oIFwKICAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZp
Y2UuaCBcCiAgICAgcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVyLmggXApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1dlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKaW5kZXggZDUxY2I0MC4uYmViYzNmOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagorKysgYi9XZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCkBAIC0yNDAxMyw2ICsyNDAxMywxNCBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
bGF0Zm9ybVxGaWxlU3RyZWFtLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXEZpbGVTdHJlYW0uaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3JtXEZpbGVT
eXN0ZW0uY3BwIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTM3MTE3LDE0ICszNzEyNSw2IEBA
CiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0
bWxcRmlsZVN0cmVhbS5jcHAiDQotCQkJCT4NCi0JCQk8L0ZpbGU+DQotCQkJPEZpbGUNCi0JCQkJ
UmVsYXRpdmVQYXRoPSIuLlxodG1sXEZpbGVTdHJlYW0uaCINCi0JCQkJPg0KLQkJCTwvRmlsZT4N
Ci0JCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGh0bWxcRmlsZVN0cmVhbUNsaWVudC5o
Ig0KIAkJCQk+DQogCQkJPC9GaWxlPg0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggMjk1M2I5Ni4uOGNlMmEwNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcyMCw2ICs3MjAsOCBAQAogCQkyRUVENTc1NjEyMTA5
RUQwMDA3NjU2QkIgLyogQmxvYlVSTC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMkVFRDU3NTExMjEwOUVEMDAwNzY1NkJCIC8qIEJsb2JVUkwuaCAqLzsg
fTsKIAkJMkVFRDU3RkQxMjE0QTlDMjAwNzY1NkJCIC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnku
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVFRDU3
RkIxMjE0QTlDMjAwNzY1NkJCIC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuY3BwICovOyB9Owog
CQkyRUVENTdGRTEyMTRBOUMyMDA3NjU2QkIgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVFRDU3RkMxMjE0
QTlDMjAwNzY1NkJCIC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAqLzsgfTsKKwkJMkVGMUJG
RUExMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVGMUJGRTgxMjFDOUY0MjAwQzI3NjI3IC8qIEZp
bGVTdHJlYW0uY3BwICovOyB9OworCQkyRUYxQkZFQjEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0
cmVhbS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMkVG
MUJGRTkxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJlYW0uaCAqLzsgfTsKIAkJMzEyODhFNzIw
RTMwMDVENjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVsZS5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4OEU2RTBFMzAwNUQ2MDAzNjE5
QUUgLyogV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCAqLzsgfTsKIAkJMzEyODhFNzMwRTMwMDVE
NjAwMzYxOUFFIC8qIFdlYktpdENTU0tleWZyYW1lUnVsZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMzEyODhFNkYwRTMwMDVENjAwMzYxOUFFIC8qIFdl
YktpdENTU0tleWZyYW1lUnVsZS5oICovOyB9OwogCQkzMTI4OEU3NDBFMzAwNUQ2MDAzNjE5QUUg
LyogV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAzMTI4OEU3MDBFMzAwNUQ2MDAzNjE5QUUgLyogV2ViS2l0Q1NT
S2V5ZnJhbWVzUnVsZS5jcHAgKi87IH07CkBAIC0yMzc2LDggKzIzNzgsNiBAQAogCQk4NjI0M0Qw
MTExQkMzMUY3MDBDQzAwNkEgLyogSlNBcnJheUJ1ZmZlclZpZXdIZWxwZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDg2MjQzRDAwMTFCQzMxRjcwMEND
MDA2QSAvKiBKU0FycmF5QnVmZmVyVmlld0hlbHBlci5oICovOyB9OwogCQk4OTUyNTM1MjExNjQx
QjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTM1MDExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVh
ZC5jcHAgKi87IH07CiAJCTg5NTI1MzUzMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTM1MTEx
NjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVhZC5oICovOyB9OwotCQk4OTUyNTNENzExNkM0QzY4
MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTNENDExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5j
cHAgKi87IH07Ci0JCTg5NTI1M0Q4MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4OTUyNTNENTExNkM0
QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5oICovOyB9OwogCQk4OTUyNTNEOTExNkM0QzY4MDBD
QUJGMDAgLyogRmlsZVN0cmVhbUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gODk1MjUzRDYxMTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1D
bGllbnQuaCAqLzsgfTsKIAkJODk1MjUzREMxMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Q
cm94eS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA4
OTUyNTNEQTExNkM0RUY1MDBDQUJGMDAgLyogRmlsZVN0cmVhbVByb3h5LmNwcCAqLzsgfTsKIAkJ
ODk1MjUzREQxMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gODk1MjUzREIxMTZDNEVGNTAwQ0FC
RjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5oICovOyB9OwpAQCAtNjUzMyw2ICs2NTMzLDggQEAKIAkJ
MkVFRDU3NTExMjEwOUVEMDAwNzY1NkJCIC8qIEJsb2JVUkwuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQmxvYlVSTC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQky
RUVENTdGQjEyMTRBOUMyMDA3NjU2QkIgLyogVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRhYmxlQmxvYlJlZ2lzdHJ5
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMkVFRDU3RkMxMjE0QTlDMjAwNzY1
NkJCIC8qIFRocmVhZGFibGVCbG9iUmVnaXN0cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGhyZWFkYWJsZUJsb2JSZWdpc3RyeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQkyRUYxQkZFODEyMUM5RjQyMDBDMjc2MjcgLyogRmlsZVN0cmVhbS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3RyZWFtLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMkVGMUJGRTkxMjFDOUY0MjAwQzI3NjI3IC8qIEZpbGVTdHJl
YW0uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmlsZVN0cmVhbS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkzMTI4OEU2RTBFMzAwNUQ2MDAzNjE5QUUgLyogV2Vi
S2l0Q1NTS2V5ZnJhbWVSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYktpdENTU0tleWZyYW1lUnVsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTMxMjg4RTZGMEUzMDA1RDYwMDM2MTlBRSAvKiBXZWJLaXRDU1NLZXlmcmFtZVJ1bGUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTMxMjg4RTcwMEUzMDA1RDYwMDM2MTlBRSAv
KiBXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFdlYktpdENTU0tleWZyYW1lc1J1bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtODIyNCw4ICs4MjI2LDYgQEAKIAkJODYyNDNEMDAxMUJDMzFGNzAwQ0MwMDZB
IC8qIEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTQXJyYXlCdWZmZXJWaWV3SGVscGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTg5NTI1MzUwMTE2NDFCMzQwMENBQkYwMCAvKiBGaWxlVGhyZWFkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVUaHJlYWQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk4OTUyNTM1MTExNjQxQjM0MDBDQUJGMDAgLyogRmlsZVRocmVh
ZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGaWxlVGhyZWFkLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTg5NTI1M0Q0MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxl
U3RyZWFtLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEZpbGVTdHJl
YW0uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk4OTUyNTNENTExNkM0QzY4MDBD
QUJGMDAgLyogRmlsZVN0cmVhbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBG
aWxlU3RyZWFtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTg5NTI1M0Q2MTE2QzRD
NjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEZpbGVTdHJlYW1DbGllbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJODk1MjUzREExMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Qcm94eS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWxlU3RyZWFtUHJveHkuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk4OTUyNTNEQjExNkM0RUY1MDBDQUJGMDAgLyogRmls
ZVN0cmVhbVByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbGVTdHJl
YW1Qcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQwMDksOCArMTQwMDks
NiBAQAogCQkJCTJFOTRGM0NCMTE4QjkwOEUwMEI3Rjc1RCAvKiBGaWxlUmVhZGVyLmNwcCAqLywK
IAkJCQkyRTk0RjNDQzExOEI5MDhFMDBCN0Y3NUQgLyogRmlsZVJlYWRlci5oICovLAogCQkJCTJF
OTRGNDI3MTE5MjA1QjMwMEI3Rjc1RCAvKiBGaWxlUmVhZGVyLmlkbCAqLywKLQkJCQk4OTUyNTNE
NDExNkM0QzY4MDBDQUJGMDAgLyogRmlsZVN0cmVhbS5jcHAgKi8sCi0JCQkJODk1MjUzRDUxMTZD
NEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW0uaCAqLywKIAkJCQk4OTUyNTNENjExNkM0QzY4MDBD
QUJGMDAgLyogRmlsZVN0cmVhbUNsaWVudC5oICovLAogCQkJCTg5NTI1M0RBMTE2QzRFRjUwMENB
QkYwMCAvKiBGaWxlU3RyZWFtUHJveHkuY3BwICovLAogCQkJCTg5NTI1M0RCMTE2QzRFRjUwMENB
QkYwMCAvKiBGaWxlU3RyZWFtUHJveHkuaCAqLywKQEAgLTE2NTk0LDYgKzE2NTkyLDggQEAKIAkJ
CQkxQ0ExOUUxNTBEQzI1NUNBMDA2NUE5OTQgLyogRXZlbnRMb29wLmggKi8sCiAJCQkJOTM0RkU5
RTQwQjVDQTUzOTAwM0U0QTczIC8qIEZpbGVDaG9vc2VyLmNwcCAqLywKIAkJCQkwNjZDNzcyQTBB
QjYwM0I3MDAyMzhDQzQgLyogRmlsZUNob29zZXIuaCAqLywKKwkJCQkyRUYxQkZFODEyMUM5RjQy
MDBDMjc2MjcgLyogRmlsZVN0cmVhbS5jcHAgKi8sCisJCQkJMkVGMUJGRTkxMjFDOUY0MjAwQzI3
NjI3IC8qIEZpbGVTdHJlYW0uaCAqLywKIAkJCQlDNTdGRURFMDEyMTJFRTlDMDA5N0JFNjUgLyog
RmlsZVN5c3RlbS5jcHAgKi8sCiAJCQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVT
eXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJz
aW9uLmggKi8sCkBAIC0xODY3Myw3ICsxODY3Myw2IEBACiAJCQkJMkUzQkMwQkQxMTdEM0E0RjAw
Qjk0MDlBIC8qIEZpbGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkNEQkI4QUMwRTA4OENB
NTAwQzYwRkY2IC8qIEZpbGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTk0RjQ1MTExOTIw
OTZBMDBCN0Y3NUQgLyogRmlsZVJlYWRlci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJODk1MjUzRDgx
MTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTg5NTI1
M0Q5MTE2QzRDNjgwMENBQkYwMCAvKiBGaWxlU3RyZWFtQ2xpZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk4OTUyNTNERDExNkM0RUY1MDBDQUJGMDAgLyogRmlsZVN0cmVhbVByb3h5LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk1MTRCM0Y3MzBDNzIyMDQ3MDAwNTMwREYgLyogRmlsZVN5c3RlbS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0yMDMyMCw2ICsyMDMxOSw3IEBACiAJCQkJMkVERUYxRjUxMjFCMEVG
QzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkVERUYxRjcx
MjFCMEVGQzAwNzI2REIyIC8qIEJsb2JSZWdpc3RyeUltcGwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFREVGMUY4MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iU3RvcmFnZURhdGEuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTJFRjFCRkVCMTIxQzlGNDIwMEMyNzYyNyAvKiBGaWxlU3RyZWFtLmggaW4gSGVh
ZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0g
MDsKIAkJfTsKQEAgLTIwMzc5LDcgKzIwMzc5LDYgQEAKIAkJCWlzYSA9IFBCWFByb2plY3Q7CiAJ
CQlidWlsZENvbmZpZ3VyYXRpb25MaXN0ID0gMTQ5QzI4NDMwODkwMkIxMTAwOEE5RUZDIC8qIEJ1
aWxkIGNvbmZpZ3VyYXRpb24gbGlzdCBmb3IgUEJYUHJvamVjdCAiV2ViQ29yZSIgKi87CiAJCQlj
b21wYXRpYmlsaXR5VmVyc2lvbiA9ICJYY29kZSAyLjQiOwotCQkJZGV2ZWxvcG1lbnRSZWdpb24g
PSBFbmdsaXNoOwogCQkJaGFzU2Nhbm5lZEZvckVuY29kaW5ncyA9IDE7CiAJCQlrbm93blJlZ2lv
bnMgPSAoCiAJCQkJRW5nbGlzaCwKQEAgLTIxMTc1LDcgKzIxMTc0LDYgQEAKIAkJCQkwNjZDNzcy
RDBBQjYwM0QyMDAyMzhDQzQgLyogRmlsZUNob29zZXJNYWMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQlCQ0RCQjhBRDBFMDg4Q0E1MDBDNjBGRjYgLyogRmlsZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMkU5NEY0NTAxMTkyMDk2NDAwQjdGNzVEIC8qIEZpbGVSZWFkZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCi0JCQkJODk1MjUzRDcxMTZDNEM2ODAwQ0FCRjAwIC8qIEZpbGVTdHJlYW0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJODk1MjUzREMxMTZDNEVGNTAwQ0FCRjAwIC8qIEZpbGVTdHJlYW1Q
cm94eS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTYwMzA2QzBDQzQzNjIzMDBDOEFDMjUgLyog
RmlsZVN5c3RlbUNGLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxNEIzRjc2MEM3MjIwNTUwMDA1
MzBERiAvKiBGaWxlU3lzdGVtTWFjLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0yMjc3MSw2ICsyMjc2
OSw3IEBACiAJCQkJQzU3RkVERTExMjEyRUU5QzAwOTdCRTY1IC8qIEZpbGVTeXN0ZW0uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMkVERUYxRjMxMjFCMEVGQzAwNzI2REIyIC8qIEJsb2JEYXRhLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTJFREVGMUY2MTIxQjBFRkMwMDcyNkRCMiAvKiBCbG9iUmVn
aXN0cnlJbXBsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTJFRjFCRkVBMTIxQzlGNDIwMEMyNzYy
NyAvKiBGaWxlU3RyZWFtLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0ZpbGVSZWFkZXIuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXIuY3BwCmluZGV4IGU5
OWZkYzQuLmQ2MDBkNDAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyLmNwcAor
KysgYi9XZWJDb3JlL2h0bWwvRmlsZVJlYWRlci5jcHAKQEAgLTE4OSwxMCArMTg5LDEwIEBAIHZv
aWQgRmlsZVJlYWRlcjo6ZGlkR2V0U2l6ZShsb25nIGxvbmcgc2l6ZSkKICAgICBtX3N0cmVhbVBy
b3h5LT5vcGVuRm9yUmVhZChtX2ZpbGVCbG9iLT5wYXRoKCksIHN0YXJ0LCBtX3RvdGFsQnl0ZXMp
OwogfQogCi12b2lkIEZpbGVSZWFkZXI6OmRpZE9wZW4oRXhjZXB0aW9uQ29kZSBlYykKK3ZvaWQg
RmlsZVJlYWRlcjo6ZGlkT3Blbihib29sIHN1Y2Nlc3MpCiB7Ci0gICAgaWYgKGVjKSB7Ci0gICAg
ICAgIGRpZEZhaWwoZWMpOworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBkaWRGYWlsKE5P
VF9SRUFEQUJMRV9FUlIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIApkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0ZpbGVSZWFkZXIuaCBiL1dlYkNvcmUvaHRtbC9GaWxlUmVhZGVyLmgK
aW5kZXggMjIzN2FmNS4uZWUxNTk2OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0ZpbGVSZWFk
ZXIuaAorKysgYi9XZWJDb3JlL2h0bWwvRmlsZVJlYWRlci5oCkBAIC04OSw3ICs4OSw3IEBAIHB1
YmxpYzoKICAgICAvLyBGaWxlU3RyZWFtQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZEdldFNpemUobG9uZyBsb25nKTsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkT3BlbihFeGNlcHRpb25Db2RlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkT3Blbihi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVhZChpbnQpOwogCiAgICAgdXNpbmcgUmVmQ291
bnRlZDxGaWxlUmVhZGVyPjo6cmVmOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVTdHJl
YW0uY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBhODljNjdhLi4wMDAwMDAwCi0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFt
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0g
KiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
ICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIK
LQotI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9XUklURVIpCi0KLSNpbmNsdWRlICJG
aWxlU3RyZWFtLmgiCi0KLSNpbmNsdWRlICJCbG9iLmgiCi0jaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1GaWxlU3RyZWFtOjpGaWxlU3RyZWFtKCkK
LSAgICA6IG1faGFuZGxlKGludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUpCi0gICAgLCBtX2J5dGVz
UHJvY2Vzc2VkKDApCi0gICAgLCBtX3RvdGFsQnl0ZXNUb1JlYWQoMCkKLXsKLX0KLQotRmlsZVN0
cmVhbTo6fkZpbGVTdHJlYW0oKQotewotICAgIEFTU0VSVCghaXNIYW5kbGVWYWxpZChtX2hhbmRs
ZSkpOwotfQotCi0vLyBGSVhNRTogVG8gYmUgcmVtb3ZlZCB3aGVuIHdlIHN3aXRjaCB0byB1c2lu
ZyBCbG9iRGF0YS4KLXZvaWQgRmlsZVN0cmVhbTo6c3RhcnQoKQotewotfQotCi12b2lkIEZpbGVT
dHJlYW06OnN0b3AoKQotewotICAgIGNsb3NlKCk7Ci19Ci0KLWxvbmcgbG9uZyBGaWxlU3RyZWFt
OjpnZXRTaXplKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kaWZpY2F0aW9u
VGltZSkKLXsKLSAgICAvLyBDaGVjayB0aGUgbW9kaWZpY2F0aW9uIHRpbWUgZm9yIHRoZSBwb3Nz
aWJsZSBmaWxlIGNoYW5nZS4KLSAgICB0aW1lX3QgbW9kaWZpY2F0aW9uVGltZTsKLSAgICBpZiAo
IWdldEZpbGVNb2RpZmljYXRpb25UaW1lKHBhdGgsIG1vZGlmaWNhdGlvblRpbWUpKQotICAgICAg
ICByZXR1cm4gLTE7Ci0gICAgaWYgKGV4cGVjdGVkTW9kaWZpY2F0aW9uVGltZSkgewotICAgICAg
ICBpZiAoc3RhdGljX2Nhc3Q8dGltZV90PihleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpICE9IG1v
ZGlmaWNhdGlvblRpbWUpCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgLy8g
Tm93IGdldCB0aGUgZmlsZSBzaXplLgotICAgIGxvbmcgbG9uZyBsZW5ndGg7Ci0gICAgaWYgKCFn
ZXRGaWxlU2l6ZShwYXRoLCBsZW5ndGgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICByZXR1
cm4gbGVuZ3RoOwotfQotCi1FeGNlcHRpb25Db2RlIEZpbGVTdHJlYW06Om9wZW5Gb3JSZWFkKGNv
bnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKLXsK
LSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgLy8gT3BlbiB0aGUgZmlsZS4KLSAgICBtX2hhbmRsZSA9IG9wZW5GaWxlKHBhdGgsIE9wZW5G
b3JSZWFkKTsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQotICAgICAgICByZXR1
cm4gTk9UX1JFQURBQkxFX0VSUjsKLQotICAgIC8vIEp1bXAgdG8gdGhlIGJlZ2lubmluZyBwb3Np
dGlvbiBpZiB0aGUgZmlsZSBoYXMgYmVlbiBzbGljZWQuCi0gICAgaWYgKG9mZnNldCA+IDApIHsK
LSAgICAgICAgaWYgKHNlZWtGaWxlKG1faGFuZGxlLCBvZmZzZXQsIFNlZWtGcm9tQmVnaW5uaW5n
KSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTk9UX1JFQURBQkxFX0VSUjsKLSAgICB9Ci0KLSAg
ICBtX3RvdGFsQnl0ZXNUb1JlYWQgPSBsZW5ndGg7Ci0gICAgbV9ieXRlc1Byb2Nlc3NlZCA9IDA7
Ci0KLSAgICByZXR1cm4gMDsKLX0KLQotRXhjZXB0aW9uQ29kZSBGaWxlU3RyZWFtOjpvcGVuRm9y
V3JpdGUoY29uc3QgU3RyaW5nJikKLXsKLSAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQu
Ci0gICAgcmV0dXJuIE5PVF9TVVBQT1JURURfRVJSOwotfQotCi12b2lkIEZpbGVTdHJlYW06OmNs
b3NlKCkKLXsKLSAgICBpZiAoaXNIYW5kbGVWYWxpZChtX2hhbmRsZSkpIHsKLSAgICAgICAgY2xv
c2VGaWxlKG1faGFuZGxlKTsKLSAgICAgICAgbV9oYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxl
SGFuZGxlOwotICAgIH0KLX0KLQotaW50IEZpbGVTdHJlYW06OnJlYWQoY2hhciogYnVmZmVyLCBp
bnQgYnVmZmVyU2l6ZSkKLXsKLSAgICBpZiAoIWlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQotICAg
ICAgICByZXR1cm4gLTE7Ci0KLSAgICBsb25nIGxvbmcgcmVtYWluaW5nID0gbV90b3RhbEJ5dGVz
VG9SZWFkIC0gbV9ieXRlc1Byb2Nlc3NlZDsKLSAgICBpbnQgYnl0ZXNUb1JlYWQgPSAocmVtYWlu
aW5nIDwgYnVmZmVyU2l6ZSkgPyBzdGF0aWNfY2FzdDxpbnQ+KHJlbWFpbmluZykgOiBidWZmZXJT
aXplOwotICAgIGludCBieXRlc1JlYWQgPSAwOwotICAgIGlmIChieXRlc1RvUmVhZCA+IDApCi0g
ICAgICAgIGJ5dGVzUmVhZCA9IHJlYWRGcm9tRmlsZShtX2hhbmRsZSwgYnVmZmVyLCBieXRlc1Rv
UmVhZCk7Ci0gICAgaWYgKGJ5dGVzUmVhZCA8IDApCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBp
ZiAoYnl0ZXNSZWFkID4gMCkKLSAgICAgICAgbV9ieXRlc1Byb2Nlc3NlZCArPSBieXRlc1JlYWQ7
Ci0KLSAgICByZXR1cm4gYnl0ZXNSZWFkOwotfQotCi1pbnQgRmlsZVN0cmVhbTo6d3JpdGUoQmxv
YiosIGxvbmcgbG9uZywgaW50KQotewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4K
LSAgICByZXR1cm4gLTE7Ci19Ci0KLUV4Y2VwdGlvbkNvZGUgRmlsZVN0cmVhbTo6dHJ1bmNhdGUo
bG9uZyBsb25nKQotewotICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KLSAgICByZXR1
cm4gTk9UX1NVUFBPUlRFRF9FUlI7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2Vu
ZGlmIC8vIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9XUklURVIpCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2h0bWwvRmlsZVN0cmVhbS5oIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW0uaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI5OWZlNC4uMDAwMDAwMAotLS0gYS9XZWJDb3Jl
L2h0bWwvRmlsZVN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRp
c3RyaWJ1dGlvbi4KLSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRl
ZiBGaWxlU3RyZWFtX2gKLSNkZWZpbmUgRmlsZVN0cmVhbV9oCi0KLSNpZiBFTkFCTEUoQkxPQikg
fHwgRU5BQkxFKEZJTEVfV1JJVEVSKQotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2lu
Y2x1ZGUgIkZpbGVTeXN0ZW0uaCIKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNw
YWNlIFdlYkNvcmUgewotCi1jbGFzcyBCbG9iOwotCi0vLyBBbGwgbWV0aG9kcyBhcmUgc3luY2hy
b25vdXMuCi1jbGFzcyBGaWxlU3RyZWFtIDogcHVibGljIFJlZkNvdW50ZWQ8RmlsZVN0cmVhbT4g
ewotcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEZpbGVTdHJlYW0+IGNyZWF0ZSgpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEZpbGVTdHJlYW0oKSk7Ci0gICAgfQot
ICAgIHZpcnR1YWwgfkZpbGVTdHJlYW0oKTsKLQotICAgIC8vIEZJWE1FOiBUbyBiZSByZW1vdmVk
IHdoZW4gd2Ugc3dpdGNoIHRvIHVzaW5nIEJsb2JEYXRhLgotICAgIHZvaWQgc3RhcnQoKTsKLQot
ICAgIC8vIEFib3J0cyB0aGUgb3BlcmF0aW9uLgotICAgIHZvaWQgc3RvcCgpOwotCi0gICAgLy8g
R2V0cyB0aGUgc2l6ZSBvZiBhIGZpbGUuIEFsc28gdmFsaWRhdGVzIGlmIHRoZSBmaWxlIGhhcyBi
ZWVuIGNoYW5nZWQgb3Igbm90IGlmIHRoZSBleHBlY3RlZCBtb2RpZmljYXRpb24gdGltZSBpcyBw
cm92aWRlZCwgaS5lLiBub24temVyby4KLSAgICAvLyBSZXR1cm5zIHRvdGFsIG51bWJlciBvZiBi
eXRlcyBpZiBzdWNjZXNzZnVsLiAtMSBvdGhlcndpc2UuCi0gICAgbG9uZyBsb25nIGdldFNpemUo
Y29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwZWN0ZWRNb2RpZmljYXRpb25UaW1lKTsKLQot
ICAgIC8vIE9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy4gVGhlIHJlYWRpbmcgc3RhcnRzIGF0IHRo
ZSBzcGVjaWZpZWQgb2Zmc2V0IGFuZCBsYXN0cyB0aWxsIHRoZSBzcGVjaWZpZWQgbGVuZ3RoLgot
ICAgIC8vIFJldHVybnMgMCBvbiBzdWNjZXNzLiBFeGNlcHRpb24gY29kZSBvdGhlcndpc2UuCi0g
ICAgRXhjZXB0aW9uQ29kZSBvcGVuRm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9u
ZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpOwotCi0gICAgLy8gT3BlbnMgYSBmaWxlIGZvciB3
cml0aW5nLgotICAgIC8vIFJldHVybnMgMCBvbiBzdWNjZXNzLiBFeGNlcHRpb24gY29kZSBvdGhl
cndpc2UuCi0gICAgRXhjZXB0aW9uQ29kZSBvcGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRo
KTsKLQotICAgIC8vIENsb3NlcyB0aGUgZmlsZS4KLSAgICB2b2lkIGNsb3NlKCk7Ci0KLSAgICAv
LyBSZWFkcyBhIGZpbGUgaW50byB0aGUgcHJvdmlkZWQgZGF0YSBidWZmZXIuCi0gICAgLy8gUmV0
dXJucyBudW1iZXIgb2YgYnl0ZXMgYmVpbmcgcmVhZCBvbiBzdWNjZXNzLiAtMSBvdGhlcndpc2Uu
Ci0gICAgLy8gSWYgMCBpcyByZXR1cm5lZCwgaXQgbWVhbnMgdGhhdCB0aGUgcmVhZGluZyBpcyBj
b21wbGV0ZWQuCi0gICAgaW50IHJlYWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKLQotICAg
IC8vIFdyaXRlcyBhIGJsb2IgdG8gdGhlIGZpbGUuCi0gICAgLy8gUmV0dXJucyBudW1iZXIgb2Yg
Ynl0ZXMgYmVpbmcgd3JpdHRlbiBvbiBzdWNjZXNzLiAtMSBvdGhlcndpc2UuCi0gICAgaW50IHdy
aXRlKEJsb2IqLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpOwotCi0gICAgLy8gVHJ1
bmNhdGVzIHRoZSBmaWxlIHRvIHRoZSBzcGVjaWZpZWQgcG9zaXRpb24uCi0gICAgLy8gUmV0dXJu
cyAwIG9uIHN1Y2Nlc3MuIEV4Y2VwdGlvbiBjb2RlIG90aGVyd2lzZS4KLSAgICBFeGNlcHRpb25D
b2RlIHRydW5jYXRlKGxvbmcgbG9uZyBwb3NpdGlvbik7Ci0KLXByaXZhdGU6Ci0gICAgRmlsZVN0
cmVhbSgpOwotCi0gICAgUGxhdGZvcm1GaWxlSGFuZGxlIG1faGFuZGxlOwotICAgIGxvbmcgbG9u
ZyBtX2J5dGVzUHJvY2Vzc2VkOwotICAgIGxvbmcgbG9uZyBtX3RvdGFsQnl0ZXNUb1JlYWQ7Ci19
OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoQkxPQikgfHwg
RU5BQkxFKEZJTEVfV1JJVEVSKQotCi0jZW5kaWYgLy8gRmlsZVN0cmVhbV9oCmRpZmYgLS1naXQg
YS9XZWJDb3JlL2h0bWwvRmlsZVN0cmVhbUNsaWVudC5oIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJl
YW1DbGllbnQuaAppbmRleCA0NDBkMmZiLi5iM2QxZmZmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0
bWwvRmlsZVN0cmVhbUNsaWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtQ2xpZW50
LmgKQEAgLTMzLDggKzMzLDYgQEAKIAogI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9X
UklURVIpCiAKLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0KIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRmlsZVN0cmVhbUNsaWVudCB7CkBAIC00NCwxMyArNDIsMTMgQEAgcHVibGlj
OgogCiAgICAgLy8gRm9yIHdyaXRpbmcuCiAgICAgdmlydHVhbCB2b2lkIGRpZFdyaXRlKGludCkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZFRydW5jYXRlKEV4Y2VwdGlvbkNvZGUpIHsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRUcnVuY2F0ZShib29sKSB7IH0KIAogICAgIC8vIEZJWE1FOiBUbyBi
ZSByZW1vdmVkIHdoZW4gd2Ugc3dpdGNoIHRvIHVzaW5nIEJsb2JEYXRhLgogICAgIHZpcnR1YWwg
dm9pZCBkaWRTdGFydCgpIHsgfQogCiAgICAgLy8gRm9yIGJvdGggcmVhZGluZyBhbmQgd3JpdGlu
Zy4KLSAgICB2aXJ0dWFsIHZvaWQgZGlkT3BlbihFeGNlcHRpb25Db2RlKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkT3Blbihib29sKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RvcCgpIHsg
fQogICAgIHZpcnR1YWwgdm9pZCBkaWRHZXRTaXplKGxvbmcgbG9uZykgeyB9CiAKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtUHJveHkuY3BwIGIvV2ViQ29yZS9odG1sL0ZpbGVT
dHJlYW1Qcm94eS5jcHAKaW5kZXggZjUwYjdlOC4uZjI4OWM4NCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9odG1sL0ZpbGVTdHJlYW1Qcm94eS5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW1Q
cm94eS5jcHAKQEAgLTEyNiwxMCArMTI2LDEwIEBAIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpnZXRT
aXplT25GaWxlVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGVjdGVkTW9kCiAg
ICAgbV9jb250ZXh0LT5wb3N0VGFzayhjcmVhdGVDYWxsYmFja1Rhc2soJmRpZEdldFNpemUsIHRo
aXMsIHNpemUpKTsKIH0KIAotc3RhdGljIHZvaWQgZGlkT3BlbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgRXhjZXB0aW9uQ29kZSBlYykKK3N0YXRpYyB2
b2lkIGRpZE9wZW4oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIEZpbGVTdHJlYW1Qcm94eSogcHJv
eHksIGJvb2wgc3VjY2VzcykKIHsKICAgICBpZiAocHJveHktPmNsaWVudCgpKQotICAgICAgICBw
cm94eS0+Y2xpZW50KCktPmRpZE9wZW4oZWMpOworICAgICAgICBwcm94eS0+Y2xpZW50KCktPmRp
ZE9wZW4oc3VjY2Vzcyk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9yUmVhZChj
b25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBsZW5ndGgpCkBA
IC0xMzksOCArMTM5LDggQEAgdm9pZCBGaWxlU3RyZWFtUHJveHk6Om9wZW5Gb3JSZWFkKGNvbnN0
IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb24KIAogdm9pZCBGaWxlU3Ry
ZWFtUHJveHk6Om9wZW5Gb3JSZWFkT25GaWxlVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCwgbG9u
ZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCkKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVj
ID0gbV9zdHJlYW0tPm9wZW5Gb3JSZWFkKHBhdGgsIG9mZnNldCwgbGVuZ3RoKTsKLSAgICBtX2Nv
bnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgdGhpcywgZWMpKTsK
KyAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+b3BlbkZvclJlYWQocGF0aCwgb2Zmc2V0LCBs
ZW5ndGgpOworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRP
cGVuLCB0aGlzLCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpvcGVuRm9y
V3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKQpAQCAtMTUwLDggKzE1MCw4IEBAIHZvaWQgRmlsZVN0
cmVhbVByb3h5OjpvcGVuRm9yV3JpdGUoY29uc3QgU3RyaW5nJiBwYXRoKQogCiB2b2lkIEZpbGVT
dHJlYW1Qcm94eTo6b3BlbkZvcldyaXRlT25GaWxlVGhyZWFkKGNvbnN0IFN0cmluZyYgcGF0aCkK
IHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gbV9zdHJlYW0tPm9wZW5Gb3JXcml0ZShwYXRoKTsK
LSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkT3BlbiwgdGhp
cywgZWMpKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX3N0cmVhbS0+b3BlbkZvcldyaXRlKHBhdGgp
OworICAgIG1fY29udGV4dC0+cG9zdFRhc2soY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRPcGVuLCB0
aGlzLCBzdWNjZXNzKSk7CiB9CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5OjpjbG9zZSgpCkBAIC0x
ODcsMjEgKzE4NywyMSBAQCBzdGF0aWMgdm9pZCBkaWRXcml0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwgaW50IGJ5dGVzVwogICAgICAgICBwcm94eS0+
Y2xpZW50KCktPmRpZFdyaXRlKGJ5dGVzV3JpdHRlbik7CiB9CiAKLXZvaWQgRmlsZVN0cmVhbVBy
b3h5Ojp3cml0ZShCbG9iKiBibG9iLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpCit2
b2lkIEZpbGVTdHJlYW1Qcm94eTo6d3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25n
IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogewotICAgIGZpbGVUaHJlYWQoKS0+cG9zdFRhc2soY3Jl
YXRlRmlsZVRocmVhZFRhc2sodGhpcywgJkZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJl
YWQsIGJsb2IsIHBvc2l0aW9uLCBsZW5ndGgpKTsKKyAgICBmaWxlVGhyZWFkKCktPnBvc3RUYXNr
KGNyZWF0ZUZpbGVUaHJlYWRUYXNrKHRoaXMsICZGaWxlU3RyZWFtUHJveHk6OndyaXRlT25GaWxl
VGhyZWFkLCBibG9iVVJMLCBwb3NpdGlvbiwgbGVuZ3RoKSk7CiB9CiAKLXZvaWQgRmlsZVN0cmVh
bVByb3h5Ojp3cml0ZU9uRmlsZVRocmVhZChCbG9iKiBibG9iLCBsb25nIGxvbmcgcG9zaXRpb24s
IGludCBsZW5ndGgpCit2b2lkIEZpbGVTdHJlYW1Qcm94eTo6d3JpdGVPbkZpbGVUaHJlYWQoY29u
c3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQgbGVuZ3RoKQogewotICAg
IGludCBieXRlc1dyaXR0ZW4gPSBtX3N0cmVhbS0+d3JpdGUoYmxvYiwgcG9zaXRpb24sIGxlbmd0
aCk7CisgICAgaW50IGJ5dGVzV3JpdHRlbiA9IG1fc3RyZWFtLT53cml0ZShibG9iVVJMLCBwb3Np
dGlvbiwgbGVuZ3RoKTsKICAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxiYWNrVGFz
aygmZGlkV3JpdGUsIHRoaXMsIGJ5dGVzV3JpdHRlbikpOwogfQogCi1zdGF0aWMgdm9pZCBkaWRU
cnVuY2F0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgRmlsZVN0cmVhbVByb3h5KiBwcm94eSwg
RXhjZXB0aW9uQ29kZSBlYykKK3N0YXRpYyB2b2lkIGRpZFRydW5jYXRlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqLCBGaWxlU3RyZWFtUHJveHkqIHByb3h5LCBib29sIHN1Y2Nlc3MpCiB7CiAgICAg
aWYgKHByb3h5LT5jbGllbnQoKSkKLSAgICAgICAgcHJveHktPmNsaWVudCgpLT5kaWRUcnVuY2F0
ZShlYyk7CisgICAgICAgIHByb3h5LT5jbGllbnQoKS0+ZGlkVHJ1bmNhdGUoc3VjY2Vzcyk7CiB9
CiAKIHZvaWQgRmlsZVN0cmVhbVByb3h5Ojp0cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pCkBA
IC0yMTEsOCArMjExLDggQEAgdm9pZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlKGxvbmcgbG9u
ZyBwb3NpdGlvbikKIAogdm9pZCBGaWxlU3RyZWFtUHJveHk6OnRydW5jYXRlT25GaWxlVGhyZWFk
KGxvbmcgbG9uZyBwb3NpdGlvbikKIHsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gbV9zdHJlYW0t
PnRydW5jYXRlKHBvc2l0aW9uKTsKLSAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0ZUNhbGxi
YWNrVGFzaygmZGlkVHJ1bmNhdGUsIHRoaXMsIGVjKSk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9z
dHJlYW0tPnRydW5jYXRlKHBvc2l0aW9uKTsKKyAgICBtX2NvbnRleHQtPnBvc3RUYXNrKGNyZWF0
ZUNhbGxiYWNrVGFzaygmZGlkVHJ1bmNhdGUsIHRoaXMsIHN1Y2Nlc3MpKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW1Qcm94
eS5oIGIvV2ViQ29yZS9odG1sL0ZpbGVTdHJlYW1Qcm94eS5oCmluZGV4IDFkMDNhNTguLjZkYzFj
YzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9GaWxlU3RyZWFtUHJveHkuaAorKysgYi9XZWJD
b3JlL2h0bWwvRmlsZVN0cmVhbVByb3h5LmgKQEAgLTQxLDEwICs0MSwxMCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLWNsYXNzIEJsb2I7CiBjbGFzcyBGaWxlU3RyZWFtOwogY2xhc3MgRmls
ZVN0cmVhbUNsaWVudDsKIGNsYXNzIEZpbGVUaHJlYWQ7CitjbGFzcyBLVVJMOwogY2xhc3MgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dDsKIAogLy8gQSBwcm94eSBtb2R1bGUgdGhhdCBhc3luY2hyb25v
dXNseSBjYWxscyBjb3JyZXNwb25kaW5nIEZpbGVTdHJlYW0gbWV0aG9kcyBvbiB0aGUgZmlsZSB0
aHJlYWQuICBOb3RlOiB5b3UgbXVzdCBjYWxsIHN0b3AoKSBmaXJzdCBhbmQgdGhlbiByZWxlYXNl
IHRoZSByZWZlcmVuY2UgdG8gZGVzdHJ1Y3QgdGhlIEZpbGVTdHJlYW1Qcm94eSBpbnN0YW5jZS4K
QEAgLTU4LDcgKzU4LDcgQEAgcHVibGljOgogICAgIHZvaWQgb3BlbkZvcldyaXRlKGNvbnN0IFN0
cmluZyYgcGF0aCk7CiAgICAgdm9pZCBjbG9zZSgpOwogICAgIHZvaWQgcmVhZChjaGFyKiBidWZm
ZXIsIGludCBsZW5ndGgpOwotICAgIHZvaWQgd3JpdGUoQmxvYiosIGxvbmcgbG9uZyBwb3NpdGlv
biwgaW50IGxlbmd0aCk7CisgICAgdm9pZCB3cml0ZShjb25zdCBLVVJMJiBibG9iVVJMLCBsb25n
IGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpOwogICAgIHZvaWQgdHJ1bmNhdGUobG9uZyBsb25n
IHBvc2l0aW9uKTsKIAogICAgIC8vIFN0b3BzIHRoZSBwcm94eSBhbmQgc2NlZHVsZXMgaXQgdG8g
YmUgZGVzdHJ1Y3RlZC4gIEFsbCB0aGUgcGVuZGluZyB0YXNrcyB3aWxsIGJlIGFib3J0ZWQgYW5k
IHRoZSBmaWxlIHN0cmVhbSB3aWxsIGJlIGNsb3NlZC4KQEAgLTgwLDcgKzgwLDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIG9wZW5Gb3JXcml0ZU9uRmlsZVRocmVhZChjb25zdCBTdHJpbmcmIHBhdGgp
OwogICAgIHZvaWQgY2xvc2VPbkZpbGVUaHJlYWQoKTsKICAgICB2b2lkIHJlYWRPbkZpbGVUaHJl
YWQoY2hhciogYnVmZmVyLCBpbnQgbGVuZ3RoKTsKLSAgICB2b2lkIHdyaXRlT25GaWxlVGhyZWFk
KEJsb2IqLCBsb25nIGxvbmcgcG9zaXRpb24sIGludCBsZW5ndGgpOworICAgIHZvaWQgd3JpdGVP
bkZpbGVUaHJlYWQoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9uLCBpbnQg
bGVuZ3RoKTsKICAgICB2b2lkIHRydW5jYXRlT25GaWxlVGhyZWFkKGxvbmcgbG9uZyBwb3NpdGlv
bik7CiAKICAgICBSZWZQdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4gbV9jb250ZXh0OwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3RyZWFtLmNwcCBiL1dlYkNvcmUvcGxhdGZv
cm0vRmlsZVN0cmVhbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVm
NDM1ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRmlsZVN0cmVhbS5jcHAK
QEAgLTAsMCArMSwxNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKEJMT0Ip
IHx8IEVOQUJMRShGSUxFX1dSSVRFUikKKworI2luY2x1ZGUgIkZpbGVTdHJlYW0uaCIKKworI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsZVN0
cmVhbTo6RmlsZVN0cmVhbSgpCisgICAgOiBtX2hhbmRsZShpbnZhbGlkUGxhdGZvcm1GaWxlSGFu
ZGxlKQorICAgICwgbV9ieXRlc1Byb2Nlc3NlZCgwKQorICAgICwgbV90b3RhbEJ5dGVzVG9SZWFk
KDApCit7Cit9CisKK0ZpbGVTdHJlYW06On5GaWxlU3RyZWFtKCkKK3sKKyAgICBBU1NFUlQoIWlz
SGFuZGxlVmFsaWQobV9oYW5kbGUpKTsKK30KKworLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgd2hl
biB3ZSBzd2l0Y2ggdG8gdXNpbmcgQmxvYkRhdGEuCit2b2lkIEZpbGVTdHJlYW06OnN0YXJ0KCkK
K3sKK30KKwordm9pZCBGaWxlU3RyZWFtOjpzdG9wKCkKK3sKKyAgICBjbG9zZSgpOworfQorCits
b25nIGxvbmcgRmlsZVN0cmVhbTo6Z2V0U2l6ZShjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBl
eHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpCit7CisgICAgLy8gQ2hlY2sgdGhlIG1vZGlmaWNhdGlv
biB0aW1lIGZvciB0aGUgcG9zc2libGUgZmlsZSBjaGFuZ2UuCisgICAgdGltZV90IG1vZGlmaWNh
dGlvblRpbWU7CisgICAgaWYgKCFnZXRGaWxlTW9kaWZpY2F0aW9uVGltZShwYXRoLCBtb2RpZmlj
YXRpb25UaW1lKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChleHBlY3RlZE1vZGlmaWNh
dGlvblRpbWUpIHsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHRpbWVfdD4oZXhwZWN0ZWRNb2Rp
ZmljYXRpb25UaW1lKSAhPSBtb2RpZmljYXRpb25UaW1lKQorICAgICAgICAgICAgcmV0dXJuIC0x
OworICAgIH0KKworICAgIC8vIE5vdyBnZXQgdGhlIGZpbGUgc2l6ZS4KKyAgICBsb25nIGxvbmcg
bGVuZ3RoOworICAgIGlmICghZ2V0RmlsZVNpemUocGF0aCwgbGVuZ3RoKSkKKyAgICAgICAgcmV0
dXJuIC0xOworCisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworYm9vbCBGaWxlU3RyZWFtOjpvcGVu
Rm9yUmVhZChjb25zdCBTdHJpbmcmIHBhdGgsIGxvbmcgbG9uZyBvZmZzZXQsIGxvbmcgbG9uZyBs
ZW5ndGgpCit7CisgICAgaWYgKGlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIC8vIE9wZW4gdGhlIGZpbGUuCisgICAgbV9oYW5kbGUgPSBvcGVuRmls
ZShwYXRoLCBPcGVuRm9yUmVhZCk7CisgICAgaWYgKCFpc0hhbmRsZVZhbGlkKG1faGFuZGxlKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgLy8gSnVtcCB0byB0aGUgYmVnaW5uaW5nIHBv
c2l0aW9uIGlmIHRoZSBmaWxlIGhhcyBiZWVuIHNsaWNlZC4KKyAgICBpZiAob2Zmc2V0ID4gMCkg
eworICAgICAgICBpZiAoc2Vla0ZpbGUobV9oYW5kbGUsIG9mZnNldCwgU2Vla0Zyb21CZWdpbm5p
bmcpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtX3RvdGFs
Qnl0ZXNUb1JlYWQgPSBsZW5ndGg7CisgICAgbV9ieXRlc1Byb2Nlc3NlZCA9IDA7CisKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBGaWxlU3RyZWFtOjpvcGVuRm9yV3JpdGUoY29uc3QgU3Ry
aW5nJikKK3sKKyAgICAvLyBGSVhNRTogdG8gYmUgaW1wbGVtZW50ZWQuCisgICAgcmV0dXJuIGZh
bHNlOworfQorCit2b2lkIEZpbGVTdHJlYW06OmNsb3NlKCkKK3sKKyAgICBpZiAoaXNIYW5kbGVW
YWxpZChtX2hhbmRsZSkpIHsKKyAgICAgICAgY2xvc2VGaWxlKG1faGFuZGxlKTsKKyAgICAgICAg
bV9oYW5kbGUgPSBpbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlOworICAgIH0KK30KKworaW50IEZp
bGVTdHJlYW06OnJlYWQoY2hhciogYnVmZmVyLCBpbnQgYnVmZmVyU2l6ZSkKK3sKKyAgICBpZiAo
IWlzSGFuZGxlVmFsaWQobV9oYW5kbGUpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBsb25n
IGxvbmcgcmVtYWluaW5nID0gbV90b3RhbEJ5dGVzVG9SZWFkIC0gbV9ieXRlc1Byb2Nlc3NlZDsK
KyAgICBpbnQgYnl0ZXNUb1JlYWQgPSAocmVtYWluaW5nIDwgYnVmZmVyU2l6ZSkgPyBzdGF0aWNf
Y2FzdDxpbnQ+KHJlbWFpbmluZykgOiBidWZmZXJTaXplOworICAgIGludCBieXRlc1JlYWQgPSAw
OworICAgIGlmIChieXRlc1RvUmVhZCA+IDApCisgICAgICAgIGJ5dGVzUmVhZCA9IHJlYWRGcm9t
RmlsZShtX2hhbmRsZSwgYnVmZmVyLCBieXRlc1RvUmVhZCk7CisgICAgaWYgKGJ5dGVzUmVhZCA8
IDApCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoYnl0ZXNSZWFkID4gMCkKKyAgICAgICAg
bV9ieXRlc1Byb2Nlc3NlZCArPSBieXRlc1JlYWQ7CisKKyAgICByZXR1cm4gYnl0ZXNSZWFkOwor
fQorCitpbnQgRmlsZVN0cmVhbTo6d3JpdGUoY29uc3QgS1VSTCYsIGxvbmcgbG9uZywgaW50KQor
eworICAgIC8vIEZJWE1FOiB0byBiZSBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gLTE7Cit9CisK
K2Jvb2wgRmlsZVN0cmVhbTo6dHJ1bmNhdGUobG9uZyBsb25nKQoreworICAgIC8vIEZJWE1FOiB0
byBiZSBpbXBsZW1lbnRlZC4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9XUklURVIp
CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaCBiL1dlYkNvcmUvcGxh
dGZvcm0vRmlsZVN0cmVhbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZj
M2EyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL0ZpbGVTdHJlYW0uaApA
QCAtMCwwICsxLDEwMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEZpbGVTdHJlYW1faAorI2RlZmluZSBGaWxlU3RyZWFt
X2gKKworI2lmIEVOQUJMRShCTE9CKSB8fCBFTkFCTEUoRklMRV9XUklURVIpCisKKyNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNpbmNsdWRlIDx3dGYv
UGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgS1VSTDsKKworLy8gQWxsIG1ldGhvZHMgYXJlIHN5bmNocm9ub3Vz
LgorY2xhc3MgRmlsZVN0cmVhbSA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbGVTdHJlYW0+IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxGaWxlU3RyZWFtPiBjcmVhdGUoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBGaWxlU3RyZWFtKCkpOworICAgIH0KKyAgICB+
RmlsZVN0cmVhbSgpOworCisgICAgLy8gRklYTUU6IFRvIGJlIHJlbW92ZWQgd2hlbiB3ZSBzd2l0
Y2ggdG8gdXNpbmcgQmxvYkRhdGEuCisgICAgdm9pZCBzdGFydCgpOworCisgICAgLy8gQWJvcnRz
IHRoZSBvcGVyYXRpb24uCisgICAgdm9pZCBzdG9wKCk7CisKKyAgICAvLyBHZXRzIHRoZSBzaXpl
IG9mIGEgZmlsZS4gQWxzbyB2YWxpZGF0ZXMgaWYgdGhlIGZpbGUgaGFzIGJlZW4gY2hhbmdlZCBv
ciBub3QgaWYgdGhlIGV4cGVjdGVkIG1vZGlmaWNhdGlvbiB0aW1lIGlzIHByb3ZpZGVkLCBpLmUu
IG5vbi16ZXJvLgorICAgIC8vIFJldHVybnMgdG90YWwgbnVtYmVyIG9mIGJ5dGVzIGlmIHN1Y2Nl
c3NmdWwuIC0xIG90aGVyd2lzZS4KKyAgICBsb25nIGxvbmcgZ2V0U2l6ZShjb25zdCBTdHJpbmcm
IHBhdGgsIGRvdWJsZSBleHBlY3RlZE1vZGlmaWNhdGlvblRpbWUpOworCisgICAgLy8gT3BlbnMg
YSBmaWxlIGZvciByZWFkaW5nLiBUaGUgcmVhZGluZyBzdGFydHMgYXQgdGhlIHNwZWNpZmllZCBv
ZmZzZXQgYW5kIGxhc3RzIHRpbGwgdGhlIHNwZWNpZmllZCBsZW5ndGguCisgICAgLy8gUmV0dXJu
cyB0cnVlIG9uIHN1Y2Nlc3MuIEZhbHNlIG90aGVyd2lzZS4KKyAgICBib29sIG9wZW5Gb3JSZWFk
KGNvbnN0IFN0cmluZyYgcGF0aCwgbG9uZyBsb25nIG9mZnNldCwgbG9uZyBsb25nIGxlbmd0aCk7
CisKKyAgICAvLyBPcGVucyBhIGZpbGUgZm9yIHdyaXRpbmcuCisgICAgLy8gUmV0dXJucyB0cnVl
IG9uIHN1Y2Nlc3MuIEZhbHNlIG90aGVyd2lzZS4KKyAgICBib29sIG9wZW5Gb3JXcml0ZShjb25z
dCBTdHJpbmcmIHBhdGgpOworCisgICAgLy8gQ2xvc2VzIHRoZSBmaWxlLgorICAgIHZvaWQgY2xv
c2UoKTsKKworICAgIC8vIFJlYWRzIGEgZmlsZSBpbnRvIHRoZSBwcm92aWRlZCBkYXRhIGJ1ZmZl
ci4KKyAgICAvLyBSZXR1cm5zIG51bWJlciBvZiBieXRlcyBiZWluZyByZWFkIG9uIHN1Y2Nlc3Mu
IC0xIG90aGVyd2lzZS4KKyAgICAvLyBJZiAwIGlzIHJldHVybmVkLCBpdCBtZWFucyB0aGF0IHRo
ZSByZWFkaW5nIGlzIGNvbXBsZXRlZC4KKyAgICBpbnQgcmVhZChjaGFyKiBidWZmZXIsIGludCBs
ZW5ndGgpOworCisgICAgLy8gV3JpdGVzIGEgYmxvYiB0byB0aGUgZmlsZS4KKyAgICAvLyBSZXR1
cm5zIG51bWJlciBvZiBieXRlcyBiZWluZyB3cml0dGVuIG9uIHN1Y2Nlc3MuIC0xIG90aGVyd2lz
ZS4KKyAgICBpbnQgd3JpdGUoY29uc3QgS1VSTCYgYmxvYlVSTCwgbG9uZyBsb25nIHBvc2l0aW9u
LCBpbnQgbGVuZ3RoKTsKKworICAgIC8vIFRydW5jYXRlcyB0aGUgZmlsZSB0byB0aGUgc3BlY2lm
aWVkIHBvc2l0aW9uLgorICAgIC8vIFJldHVybnMgdHJ1ZSBvbiBzdWNjZXNzLiBGYWxzZSBvdGhl
cndpc2UuCisgICAgYm9vbCB0cnVuY2F0ZShsb25nIGxvbmcgcG9zaXRpb24pOworCitwcml2YXRl
OgorICAgIEZpbGVTdHJlYW0oKTsKKworICAgIFBsYXRmb3JtRmlsZUhhbmRsZSBtX2hhbmRsZTsK
KyAgICBsb25nIGxvbmcgbV9ieXRlc1Byb2Nlc3NlZDsKKyAgICBsb25nIGxvbmcgbV90b3RhbEJ5
dGVzVG9SZWFkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5B
QkxFKEJMT0IpIHx8IEVOQUJMRShGSUxFX1dSSVRFUikKKworI2VuZGlmIC8vIEZpbGVTdHJlYW1f
aAo=
</data>
<flag name="review"
          id="53424"
          type_id="1"
          status="+"
          setter="levin"
    />
    <flag name="commit-queue"
          id="53425"
          type_id="3"
          status="-"
          setter="jianli"
    />
          </attachment>
      

    </bug>

</bugzilla>