<?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>23417</bug_id>
          
          <creation_ts>2009-01-19 03:48:59 -0800</creation_ts>
          <short_desc>Implement application cache obsolete state</short_desc>
          <delta_ts>2009-01-19 11:15:41 -0800</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>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="Alexey Proskuryakov">ap</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>106239</commentid>
    <comment_count>0</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-19 03:48:59 -0800</bug_when>
    <thetext>If a 404 or 410 response is received for manifest while updating, the cache group should be marked as obsolete, and no longer be used for loading new documents.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106241</commentid>
    <comment_count>1</comment_count>
      <attachid>26840</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-19 04:49:59 -0800</bug_when>
    <thetext>Created attachment 26840
proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106257</commentid>
    <comment_count>2</comment_count>
      <attachid>26840</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2009-01-19 10:27:31 -0800</bug_when>
    <thetext>Comment on attachment 26840
proposed patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106260</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-01-19 11:15:41 -0800</bug_when>
    <thetext>Committed revision 40032.

</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26840</attachid>
            <date>2009-01-19 04:49:59 -0800</date>
            <delta_ts>2009-01-19 10:27:31 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>CacheRemoving3.txt</filename>
            <type>text/plain</type>
            <size>47229</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA0MDAyNSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODcgQEAKKzIwMDktMDEtMTkgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJr
aXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzQxNworICAgICAgICBJ
bXBsZW1lbnQgYXBwbGljYXRpb24gY2FjaGUgb2Jzb2xldGUgc3RhdGUKKworICAgICAgICBUZXN0
OiBodHRwL3Rlc3RzL2FwcGNhY2hlL3JlbW92ZS1jYWNoZS5odG1sCisKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01BcHBsaWNhdGlvbkNhY2hlOjptYXJrKToKKyAgICAgICAgKiBkb20vRXZlbnROYW1l
cy5oOgorICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpTdGF0dXMpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25vYnNvbGV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpvbm9ic29sZXRlKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGw6CisgICAgICAgIEFkZGVkICJvYnNv
bGV0ZSIgZXZlbnQgYW5kIHN0YXR1cy4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBs
aWNhdGlvbkNhY2hlR3JvdXAuaDoKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6c2F2ZWROZXdlc3RDYWNoZVBvaW50ZXIpOiBSZW1vdmVkLCB0aGVyZSBpcyBubyBsb25n
ZXIKKyAgICAgICAgYW55IG5lZWQgdG8gdHJhY2sgd2hhdCB0aGUgbmV3ZXN0IGNhY2hlIHdhcyBk
dXJpbmcgdGVhcmRvd24uCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6
OnVwZGF0ZVN0YXR1cyk6IFJlbmFtZWQgU3RhdHVzIHRvIFVwZGF0ZVN0YXR1cywgcmVkdWNpbmcK
KyAgICAgICAgY29uZnVzaW9uIHdpdGggY2FjaGUgZ3JvdXAgbGlmZWN5Y2xlIHN0YXR1cy4KKyAg
ICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6bV9pc09ic29sZXRlKTogQWRk
ZWQgYW4gb2Jzb2xldGUgc3RhdGUgZmxhZy4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9B
cHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25D
YWNoZUdyb3VwOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXApOiBJbml0aWFsaXplIG1faXNPYnNvbGV0
ZS4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVGb3JNYWlu
UmVxdWVzdCk6IEFzc2VydCB0aGF0IHRoZSByZXR1cm5lZCBjYWNoZSBkb2VzCisgICAgICAgIG5v
dCBiZWxvbmcgdG8gYW4gb2Jzb2xldGUgZ3JvdXAuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmZhbGxiYWNrQ2FjaGVGb3JNYWluUmVxdWVzdCk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVEb2N1bWVu
dExvYWRlcik6IERpc2Fzc29jaWF0aW9uIGNhbiBub3cgaGFwcGVuCisgICAgICAgIHZpYSBhIEpT
IHN3YXBDYWNoZSgpIGNhbGwsIG5vdCBvbmx5IHdoZW4gdGhlIGxvYWRlciBpcyBkZXN0cm95ZWQu
CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmNhY2hlRGVzdHJveWVk
KTogRG9uJ3QgdHJhY2sgbV9zYXZlZE5ld2VzdENhY2hlUG9pbnRlci4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2V0TmV3ZXN0Q2FjaGUpOiBSZW1vdmUgb2xkIG5l
d2VzdCBjYWNoZSBmcm9tIHN0b3JhZ2UgaXMKKyAgICAgICAgYSBjYWxsZXIgcmVzcG9uc2liaWxp
dHksIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMgYWxzbyB1c2VkIHdoZW4gbG9hZGluZyBjYWNoZXMg
ZnJvbSBkaXNrLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjptYWtl
T2Jzb2xldGUpOiBBZGRlZC4gTWFyayB0aGUgY2FjaGUgZ3JvdXAgYXMgb2Jzb2xldGUsIGFuZAor
ICAgICAgICBpbmZvcm0gY2FjaGUgc3RvcmFnZSwgc28gdGhhdCBpdCBjb3VsZCBiZSByZW1vdmVk
LgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsVG9Mb2Fk
TWFuaWZlc3QpOiBSZW1vdmVkLCBhcyBhbGwgdGhpcyBtZXRob2QgZGlkCisgICAgICAgIHdhcyBj
YWxsIGNhY2hlVXBkYXRlRmFpbGVkKCkuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZSk6IEFkZGVkIGEgRklYTUUgYWJvdXQgY29ycmVj
dCBmYWlsdXJlCisgICAgICAgIGhhbmRpbmcuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OmRpZEZhaWwpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9uc2UpOiBDYWxsIGEgbmV3IG1h
bmlmZXN0Tm90Rm91bmQoKQorICAgICAgICBtZXRob2QgZm9yIDQwNCBhbmQgNDEwIHJlc3BvbnNl
cy4KKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmluaXNoTG9h
ZGluZ01hbmlmZXN0KTogQ2FsbCBjYWNoZVVwZGF0ZUZhaWxlZCgpCisgICAgICAgIGRpcmVjdGx5
LCBpbnN0ZWFkIG9mIHRoZSByZW1vdmVkIGRpZEZhaWxUb0xvYWRNYW5pZmVzdCgpLgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjptYW5pZmVzdE5vdEZvdW5kKTogSW1w
bGVtZW50ICJyZW1vdmUgYSBjYWNoZSIgYWxnb3JpdGhtLgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUpOiBSZW1vdmUgc3VwZXJj
ZWRlZCBjYWNoZSBmcm9tIHN0b3JhZ2UKKyAgICAgICAgYWZ0ZXIgdXBkYXRlIHN1Y2Nlc3NmdWxs
eSBmaW5pc2hlcyAobW92ZWQgZnJvbSBzZXROZXdlc3RDYWNoZSgpKS4KKyAgICAgICAgKFdlYkNv
cmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXJXaXRoQ2Fj
aGUpOiBSZXZpdmUgdGhlIGdyb3VwIHVzaW5nCisgICAgICAgIGFuIGV4cGxpY2l0bHkgcGFzc2Vk
IHBvaW50ZXIsIHdpdGhvdXQgdGhlIG5lZWQgdG8gc2F2ZSBpdCBkdXJpbmcgdGVhcmRvd24uCisK
KyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwOiAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6On5Eb2N1bWVudExvYWRlcik6CisgICAgICAgIENhbGwgdGhlIGdlbmVyYWwgQXBwbGlj
YXRpb25DYWNoZUdyb3VwOjpkaXNhc3NvY2lhdGVEb2N1bWVudExvYWRlcigpIG1ldGhvZC4KKwor
ICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oOiBBZGRl
ZCBhIGNhY2hlR3JvdXBPYnNvbGV0ZWQoKSBtZXRob2QsIHVwZGF0ZWQKKyAgICAgICAgc29tZSBj
b21tZW50cy4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3Rv
cmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6Y2Fj
aGVHcm91cEZvclVSTCk6IEFzc2VydCB0aGF0IGl0ZXJhdGVkIGNhY2hlcyBhcmUgbm90CisgICAg
ICAgIG9ic29sZXRlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6
OmZhbGxiYWNrQ2FjaGVHcm91cEZvclVSTCk6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6QXBw
bGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3JvdXBEZXN0cm95ZWQpOiBEb24ndCBkbyBhbnl0
aGluZyBmb3Igb2Jzb2xldGUKKyAgICAgICAgZ3JvdXBzLCBhcyB0aGV5IGNhbm5vdCBiZSBpbiBz
dG9yYWdlLgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hl
R3JvdXBPYnNvbGV0ZWQpOiBSZW1vdmUgdGhlIGNhY2hlIGdyb3VwIGZyb20gc3RvcmFnZQorICAg
ICAgICBjb21wbGV0ZWx5LCBzbyB0aGF0IGEgbmV3IG9uZSBjb3VsZCByZXBsYWNlIGl0LCBpZiBu
ZWNlc3NhcnkuCisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c3Rv
cmVOZXdlc3RDYWNoZSk6IEFkZGVkIGFzc2VydGlvbnMuCisgICAgICAgIChXZWJDb3JlOjpBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZTo6cmVtb3ZlKTogUmVtb3ZlIGNhY2hlIGdyb3VwIGlmIGl0cyBu
ZXdlc3QgY2FjaGUgaXMgcmVtb3ZlZC4KKworICAgICAgICAqIGxvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2Fj
aGU6OnN0YXR1cyk6IEFkZGVkIHN1cHBvcnQgZm9yIE9CU09MRVRFIHN0YXRlLgorICAgICAgICAo
V2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6c3dhcENhY2hlKTogRGlzYXNzb2NpYXRlIGRv
Y3VtZW50IGxvYWRlciBmcm9tIGNhY2hlIGlmIHRoZQorICAgICAgICBhcHBsaWNhdGlvbiB3YXMg
cmVtb3ZlZCBzZXJ2ZXItc2lkZS4KKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2Fj
aGU6OmNhbGxPYnNvbGV0ZUxpc3RlbmVyKTogQWRkZWQgc3VwcG9ydCBmb3Igb2Jzb2xldGUgZXZl
bnQuCisKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6U3RhdHVzKToKKyAgICAgICAg
KFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ub2Jzb2xldGUpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6b25vYnNvbGV0ZSk6CisgICAgICAgIEFkZGVk
IHN1cHBvcnQgZm9yIE9CU09MRVRFIHN0YXRlIGFuZCBvYnNvbGV0ZSBldmVudC4KKworICAgICAg
ICAqIGxvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmlkbDogRGl0dG8uCisKIDIw
MDktMDEtMTggIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBDYW1lcm9uIFp3YXJpY2guCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQXBw
bGljYXRpb25DYWNoZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCShyZXZpc2lvbiA0MDAyNCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjcsNiArNjcsOSBAQCB2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6bWFy
aygpCiAgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRp
Y19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbmNhY2hlZCgpKSkK
ICAgICAgICAgbGlzdGVuZXItPm1hcmsoKTsKIAorICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cio+KG1faW1wbC0+b25vYnNvbGV0ZSgpKSkKKyAgICAgICAgbGlzdGVuZXItPm1hcmsoKTsKKwog
ICAgIHR5cGVkZWYgRE9NQXBwbGljYXRpb25DYWNoZTo6RXZlbnRMaXN0ZW5lcnNNYXAgRXZlbnRM
aXN0ZW5lcnNNYXA7CiAgICAgdHlwZWRlZiBET01BcHBsaWNhdGlvbkNhY2hlOjpMaXN0ZW5lclZl
Y3RvciBMaXN0ZW5lclZlY3RvcjsKICAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5l
cnMgPSBtX2ltcGwtPmV2ZW50TGlzdGVuZXJzKCk7CkluZGV4OiBXZWJDb3JlL2RvbS9FdmVudE5h
bWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCShyZXZpc2lvbiA0
MDAyNCkKKysrIFdlYkNvcmUvZG9tL0V2ZW50TmFtZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjgs
NiArNjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgbWFjcm8obW91c2V1cCkgXAogICAg
IG1hY3JvKG1vdXNld2hlZWwpIFwKICAgICBtYWNybyhub3VwZGF0ZSkgXAorICAgIG1hY3JvKG9i
c29sZXRlKSBcCiAgICAgbWFjcm8ob2ZmbGluZSkgXAogICAgIG1hY3JvKG9ubGluZSkgXAogICAg
IG1hY3JvKG92ZXJmbG93Y2hhbmdlZCkgXApJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cAkocmV2aXNpb24gNDAwMjQpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MSw5ICsxNzEsOSBAQCBEb2N1bWVudExvYWRlcjo6fkRvY3Vt
ZW50TG9hZGVyKCkKICAgICAKICNpZiBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQog
ICAgIGlmIChtX2FwcGxpY2F0aW9uQ2FjaGUpCi0gICAgICAgIG1fYXBwbGljYXRpb25DYWNoZS0+
Z3JvdXAoKS0+ZG9jdW1lbnRMb2FkZXJEZXN0cm95ZWQodGhpcyk7CisgICAgICAgIG1fYXBwbGlj
YXRpb25DYWNoZS0+Z3JvdXAoKS0+ZGlzYXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIodGhpcyk7CiAg
ICAgZWxzZSBpZiAobV9jYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXApCi0gICAgICAgIG1f
Y2FuZGlkYXRlQXBwbGljYXRpb25DYWNoZUdyb3VwLT5kb2N1bWVudExvYWRlckRlc3Ryb3llZCh0
aGlzKTsKKyAgICAgICAgbV9jYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAtPmRpc2Fzc29j
aWF0ZURvY3VtZW50TG9hZGVyKHRoaXMpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFdlYkNvcmUvbG9h
ZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAkocmV2aXNpb24g
NDAwMjQpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00NiwxMCArNDYsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cChjb25zdCBLVVJM
JiBtYW5pZmVzdFVSTCwgYm9vbCBpc0NvcHkpCiAgICAgOiBtX21hbmlmZXN0VVJMKG1hbmlmZXN0
VVJMKQotICAgICwgbV9zdGF0dXMoSWRsZSkKLSAgICAsIG1fc2F2ZWROZXdlc3RDYWNoZVBvaW50
ZXIoMCkKKyAgICAsIG1fdXBkYXRlU3RhdHVzKElkbGUpCiAgICAgLCBtX2ZyYW1lKDApCiAgICAg
LCBtX3N0b3JhZ2VJRCgwKQorICAgICwgbV9pc09ic29sZXRlKGZhbHNlKQogICAgICwgbV9pc0Nv
cHkoaXNDb3B5KQogewogfQpAQCAtODMsNiArODMsNyBAQCBBcHBsaWNhdGlvbkNhY2hlKiBBcHBs
aWNhdGlvbkNhY2hlR3JvdXA6CiAKICAgICBpZiAoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91
cCA9IGNhY2hlU3RvcmFnZSgpLmNhY2hlR3JvdXBGb3JVUkwocmVxdWVzdC51cmwoKSkpIHsKICAg
ICAgICAgQVNTRVJUKGdyb3VwLT5uZXdlc3RDYWNoZSgpKTsKKyAgICAgICAgQVNTRVJUKCFncm91
cC0+aXNPYnNvbGV0ZSgpKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBncm91cC0+bmV3ZXN0
Q2FjaGUoKTsKICAgICB9CkBAIC05Nyw3ICs5OCw4IEBAIEFwcGxpY2F0aW9uQ2FjaGUqIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cDoKIAogICAgIGlmIChBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdyb3Vw
ID0gY2FjaGVTdG9yYWdlKCkuZmFsbGJhY2tDYWNoZUdyb3VwRm9yVVJMKHJlcXVlc3QudXJsKCkp
KSB7CiAgICAgICAgIEFTU0VSVChncm91cC0+bmV3ZXN0Q2FjaGUoKSk7Ci0gICAgICAgIAorICAg
ICAgICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOworCiAgICAgICAgIHJldHVybiBncm91
cC0+bmV3ZXN0Q2FjaGUoKTsKICAgICB9CiAgICAgCkBAIC0xNTcsMTIgKzE1OSwxMiBAQCB2b2lk
IEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoCiAgICAgfQogICAgICAgICAgICAg
CiAgICAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGNhY2hlU3RvcmFnZSgpLmZpbmRP
ckNyZWF0ZUNhY2hlR3JvdXAobWFuaWZlc3RVUkwpOwotICAgICAgICAgICAgCisKICAgICBpZiAo
QXBwbGljYXRpb25DYWNoZSogY2FjaGUgPSBncm91cC0+bmV3ZXN0Q2FjaGUoKSkgewogICAgICAg
ICBBU1NFUlQoY2FjaGUtPm1hbmlmZXN0UmVzb3VyY2UoKSk7Ci0gICAgICAgICAgICAgICAgCisK
ICAgICAgICAgZ3JvdXAtPmFzc29jaWF0ZURvY3VtZW50TG9hZGVyV2l0aENhY2hlKGZyYW1lLT5s
b2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSwgY2FjaGUpOwotICAgICAgICAgICAgICAKKwogICAg
ICAgICBpZiAoIWZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKS0+aXNMb2FkaW5nTWFp
blJlc291cmNlKCkpCiAgICAgICAgICAgICBncm91cC0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291
cmNlKGZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSk7CiAKQEAgLTIzMyw3ICsyMzUs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZmluaXNoZWRMb2FkCiAgICAgbV9jYWNo
ZUJlaW5nVXBkYXRlZC0+YWRkUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZSgpKTsKICAgICAKICAg
ICBtX3BlbmRpbmdFbnRyaWVzLnJlbW92ZShpdCk7Ci0gICAgCisKICAgICBjaGVja0lmTG9hZElz
Q29tcGxldGUoKTsKIH0KIApAQCAtMjY3LDIzICsyNjksMjggQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OnN0b3BMb2FkaW5nKAogICAgIG1fY2FjaGVCZWluZ1VwZGF0ZWQgPSAwOwogfSAg
ICAKIAotdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRvY3VtZW50TG9hZGVyRGVzdHJveWVk
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlz
YXNzb2NpYXRlRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBI
YXNoU2V0PERvY3VtZW50TG9hZGVyKj46Oml0ZXJhdG9yIGl0ID0gbV9hc3NvY2lhdGVkRG9jdW1l
bnRMb2FkZXJzLmZpbmQobG9hZGVyKTsKICAgICAKICAgICBpZiAoaXQgIT0gbV9hc3NvY2lhdGVk
RG9jdW1lbnRMb2FkZXJzLmVuZCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9jYWNoZUNhbmRpZGF0
ZXMuY29udGFpbnMobG9hZGVyKSk7Ci0gICAgCiAgICAgICAgIG1fYXNzb2NpYXRlZERvY3VtZW50
TG9hZGVycy5yZW1vdmUoaXQpOworCisgICAgICAgIC8vIEVpdGhlciB0aGUgbG9hZGVyIGlzIGJl
aW5nIGRlc3Ryb3llZCwgb3IgRE9NQXBwbGljYXRpb25DYWNoZTo6c3dhcENhY2hlKCkgd2FzIGNh
bGxlZCBmb3IgYW4gb2Jzb2xldGUgY2FjaGUgZ3JvdXAuCisgICAgICAgIEFTU0VSVCghbG9hZGVy
LT5jYW5kaWRhdGVBcHBsaWNhdGlvbkNhY2hlR3JvdXAoKSk7CisgICAgICAgIGxvYWRlci0+c2V0
QXBwbGljYXRpb25DYWNoZSgwKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9jYWNo
ZUNhbmRpZGF0ZXMuY29udGFpbnMobG9hZGVyKSk7CiAgICAgICAgIG1fY2FjaGVDYW5kaWRhdGVz
LnJlbW92ZShsb2FkZXIpOworCisgICAgICAgIC8vIFRoZSBkb2N1bWVudCBsb2FkZXIgaXMgYmVp
bmcgZGVzdHJveWVkLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHJlc2V0IGl0cyBjYWNoZSByZWZl
cmVuY2VzLgogICAgIH0KLSAgICAKKwogICAgIGlmICghbV9hc3NvY2lhdGVkRG9jdW1lbnRMb2Fk
ZXJzLmlzRW1wdHkoKSB8fCAhbV9jYWNoZUNhbmRpZGF0ZXMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAobV9jYWNoZXMuc2l6ZSgpID09IDApIHsKKyAgICBpZiAobV9jYWNo
ZXMuaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIGFuIGluaXRpYWwgY2FjaGUgYXR0
ZW1wdCBpbiBwcm9ncmVzcy4KICAgICAgICAgQVNTRVJUKG1fY2FjaGVCZWluZ1VwZGF0ZWQpOwog
ICAgICAgICBBU1NFUlQoIW1fbmV3ZXN0Q2FjaGUpOwpAQCAtMjk2LDcgKzMwMyw2IEBAIHZvaWQg
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkb2N1bWVudExvYWQKIAogICAgIC8vIFJlbGVhc2Ugb3Vy
IHJlZmVyZW5jZSB0byB0aGUgbmV3ZXN0IGNhY2hlLiBUaGlzIGNvdWxkIGNhdXNlIHVzIHRvIGJl
IGRlbGV0ZWQuCiAgICAgLy8gQW55IG9uZ29pbmcgdXBkYXRlcyB3aWxsIGJlIHN0b3BwZWQgZnJv
bSBkZXN0cnVjdG9yLgotICAgIG1fc2F2ZWROZXdlc3RDYWNoZVBvaW50ZXIgPSBtX25ld2VzdENh
Y2hlLmdldCgpOwogICAgIG1fbmV3ZXN0Q2FjaGUucmVsZWFzZSgpOwogfQogCkBAIC0zMDYsMTIg
KzMxMiwxMSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2FjaGVEZXN0cm95CiAgICAg
CiAgICAgbV9jYWNoZXMucmVtb3ZlKGNhY2hlKTsKIAotICAgIC8vIElmIG5vIG9uZSBob2xkcyBh
IHJlZmVyZW5jZSB0byB0aGUgbmV3ZXN0IGNhY2hlLCB0aGVuIHRoZSBjYWNoZSBncm91cCB3b24n
dCBiZSByZXZpdmVkLgotICAgIGlmIChjYWNoZSA9PSBtX3NhdmVkTmV3ZXN0Q2FjaGVQb2ludGVy
KQotICAgICAgICBtX3NhdmVkTmV3ZXN0Q2FjaGVQb2ludGVyID0gMDsKLQotICAgIGlmIChtX2Nh
Y2hlcy5pc0VtcHR5KCkpCisgICAgaWYgKG1fY2FjaGVzLmlzRW1wdHkoKSkgeworICAgICAgICBB
U1NFUlQobV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmlzRW1wdHkoKSk7CisgICAgICAgIEFT
U0VSVChtX2NhY2hlQ2FuZGlkYXRlcy5pc0VtcHR5KCkpOwogICAgICAgICBkZWxldGUgdGhpczsK
KyAgICB9CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpzZXROZXdlc3RDYWNoZShQ
YXNzUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IG5ld2VzdENhY2hlKQpAQCAtMzE5LDI1ICszMjQs
MzEgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNldE5ld2VzdENhYwogICAgIEFTU0VS
VCghbV9jYWNoZXMuY29udGFpbnMobmV3ZXN0Q2FjaGUuZ2V0KCkpKTsKICAgICBBU1NFUlQoIW5l
d2VzdENhY2hlLT5ncm91cCgpKTsKIAotICAgIGlmIChtX25ld2VzdENhY2hlKSB7Ci0gICAgICAg
IGNhY2hlU3RvcmFnZSgpLnJlbW92ZShtX25ld2VzdENhY2hlLmdldCgpKTsKLSAgICAgICAgbV9u
ZXdlc3RDYWNoZS0+Y2xlYXJTdG9yYWdlSUQoKTsKLSAgICB9CisgICAgbV9uZXdlc3RDYWNoZSA9
IG5ld2VzdENhY2hlOwogCi0gICAgbV9uZXdlc3RDYWNoZSA9IG5ld2VzdENhY2hlOyAKICAgICBt
X2NhY2hlcy5hZGQobV9uZXdlc3RDYWNoZS5nZXQoKSk7CiAgICAgbV9uZXdlc3RDYWNoZS0+c2V0
R3JvdXAodGhpcyk7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYWtlT2Jzb2xl
dGUoKQoreworICAgIGlmIChpc09ic29sZXRlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
aXNPYnNvbGV0ZSA9IHRydWU7CisgICAgY2FjaGVTdG9yYWdlKCkuY2FjaGVHcm91cE9ic29sZXRl
ZCh0aGlzKTsKKyAgICBBU1NFUlQoIW1fc3RvcmFnZUlEKTsKK30KKwogdm9pZCBBcHBsaWNhdGlv
bkNhY2hlR3JvdXA6OnVwZGF0ZShGcmFtZSogZnJhbWUpCiB7Ci0gICAgaWYgKG1fc3RhdHVzID09
IENoZWNraW5nIHx8IG1fc3RhdHVzID09IERvd25sb2FkaW5nKSAKKyAgICBpZiAobV91cGRhdGVT
dGF0dXMgPT0gQ2hlY2tpbmcgfHwgbV91cGRhdGVTdGF0dXMgPT0gRG93bmxvYWRpbmcpIAogICAg
ICAgICByZXR1cm47CiAKICAgICBBU1NFUlQoIW1fZnJhbWUpOwogICAgIG1fZnJhbWUgPSBmcmFt
ZTsKIAotICAgIG1fc3RhdHVzID0gQ2hlY2tpbmc7CisgICAgbV91cGRhdGVTdGF0dXMgPSBDaGVj
a2luZzsKIAogICAgIGNhbGxMaXN0ZW5lcnNPbkFzc29jaWF0ZWREb2N1bWVudHMoJkRPTUFwcGxp
Y2F0aW9uQ2FjaGU6OmNhbGxDaGVja2luZ0xpc3RlbmVyKTsKICAgICAKQEAgLTM2MCw5ICszNzEs
MTAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZQogICAgIH0KICAg
ICAKICAgICBBU1NFUlQoaGFuZGxlID09IG1fY3VycmVudEhhbmRsZSk7Ci0gICAgCisKICAgICBp
bnQgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgLyAxMDA7CiAgICAgaWYg
KHN0YXR1c0NvZGUgPT0gNCB8fCBzdGF0dXNDb2RlID09IDUpIHsKKyAgICAgICAgLy8gRklYTUU6
IEZhaWxpbmcgdG8gbG9hZCByZXNvdXJjZXMgdGhhdCBhcmUgbm90IG1hcmtlZCBhcyBleHBsaWNp
dCBvciBmYWxsYmFjayBzaG91bGQgbm90IGJlIGZhdGFsLgogICAgICAgICAvLyBOb3RlIHRoYXQg
Y2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1c2UgdGhlIGNhY2hlIGdyb3VwIHRvIGJlIGRlbGV0
ZWQuCiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTQy
NCwyMSArNDM2LDI1IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2EK
IHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsKFJlc291cmNlSGFuZGxlKiBoYW5k
bGUsIGNvbnN0IFJlc291cmNlRXJyb3ImKQogewogICAgIGlmIChoYW5kbGUgPT0gbV9tYW5pZmVz
dEhhbmRsZSkgewotICAgICAgICBkaWRGYWlsVG9Mb2FkTWFuaWZlc3QoKTsKKyAgICAgICAgY2Fj
aGVVcGRhdGVGYWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAgICAvLyBO
b3RlIHRoYXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1c2UgdGhlIGNhY2hlIGdyb3VwIHRv
IGJlIGRlbGV0ZWQuCisgICAgLy8gRklYTUU6IEZhaWxpbmcgdG8gbG9hZCByZXNvdXJjZXMgdGhh
dCBhcmUgbm90IG1hcmtlZCBhcyBleHBsaWNpdCBvciBmYWxsYmFjayBzaG91bGQgbm90IGJlIGZh
dGFsLgogICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNo
ZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSkKIHsKLSAgICBpbnQgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0dHBTdGF0dXND
b2RlKCkgLyAxMDA7CisgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDA0IHx8
IHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPT0gNDEwKSB7CisgICAgICAgIG1hbmlmZXN0Tm90
Rm91bmQoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KIAotICAgIGlmIChzdGF0dXNDb2RlID09
IDQgfHwgc3RhdHVzQ29kZSA9PSA1IHx8IAotICAgICAgICAhZXF1YWxJZ25vcmluZ0Nhc2UocmVz
cG9uc2UubWltZVR5cGUoKSwgInRleHQvY2FjaGUtbWFuaWZlc3QiKSkgewotICAgICAgICBkaWRG
YWlsVG9Mb2FkTWFuaWZlc3QoKTsKKyAgICBpbnQgc3RhdHVzQ29kZSA9IHJlc3BvbnNlLmh0dHBT
dGF0dXNDb2RlKCkgLyAxMDA7CisgICAgaWYgKHN0YXR1c0NvZGUgPT0gNCB8fCBzdGF0dXNDb2Rl
ID09IDUgfHwgIWVxdWFsSWdub3JpbmdDYXNlKHJlc3BvbnNlLm1pbWVUeXBlKCksICJ0ZXh0L2Nh
Y2hlLW1hbmlmZXN0IikpIHsKKyAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKQEAgLTQ1Nyw3ICs0NzMsNyBAQCB2b2lkIEFwcGxpY2F0aW9u
Q2FjaGVHcm91cDo6ZGlkUmVjZWl2ZU1hCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlk
RmluaXNoTG9hZGluZ01hbmlmZXN0KCkKIHsKICAgICBpZiAoIW1fbWFuaWZlc3RSZXNvdXJjZSkg
ewotICAgICAgICBkaWRGYWlsVG9Mb2FkTWFuaWZlc3QoKTsKKyAgICAgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDcyLDEwICs0ODgsMTAgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYQogICAgIAogICAgICAgICBp
ZiAobmV3ZXN0TWFuaWZlc3QtPmRhdGEoKS0+c2l6ZSgpID09IG1fbWFuaWZlc3RSZXNvdXJjZS0+
ZGF0YSgpLT5zaXplKCkgJiYKICAgICAgICAgICAgICFtZW1jbXAobmV3ZXN0TWFuaWZlc3QtPmRh
dGEoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLCBuZXdlc3RN
YW5pZmVzdC0+ZGF0YSgpLT5zaXplKCkpKSB7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAg
Y2FsbExpc3RlbmVyc09uQXNzb2NpYXRlZERvY3VtZW50cygmRE9NQXBwbGljYXRpb25DYWNoZTo6
Y2FsbE5vVXBkYXRlTGlzdGVuZXIpOwogICAgICAgICAgCi0gICAgICAgICAgICBtX3N0YXR1cyA9
IElkbGU7CisgICAgICAgICAgICBtX3VwZGF0ZVN0YXR1cyA9IElkbGU7CiAgICAgICAgICAgICBt
X2ZyYW1lID0gMDsKICAgICAgICAgICAgIG1fbWFuaWZlc3RSZXNvdXJjZSA9IDA7CiAgICAgICAg
ICAgICByZXR1cm47CkBAIC00ODQsMTIgKzUwMCwxMiBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVH
cm91cDo6ZGlkRmluaXNoTG9hCiAgICAgCiAgICAgTWFuaWZlc3QgbWFuaWZlc3Q7CiAgICAgaWYg
KCFwYXJzZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgp
LT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLT5zaXplKCksIG1hbmlmZXN0KSkg
ewotICAgICAgICBkaWRGYWlsVG9Mb2FkTWFuaWZlc3QoKTsKKyAgICAgICAgY2FjaGVVcGRhdGVG
YWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAgICAgCiAgICAgLy8gV2UgaGF2
ZSB0aGUgbWFuaWZlc3QsIG5vdyBkb3dubG9hZCB0aGUgcmVzb3VyY2VzLgotICAgIG1fc3RhdHVz
ID0gRG93bmxvYWRpbmc7CisgICAgbV91cGRhdGVTdGF0dXMgPSBEb3dubG9hZGluZzsKICAgICAK
ICAgICBjYWxsTGlzdGVuZXJzT25Bc3NvY2lhdGVkRG9jdW1lbnRzKCZET01BcHBsaWNhdGlvbkNh
Y2hlOjpjYWxsRG93bmxvYWRpbmdMaXN0ZW5lcik7CiAKQEAgLTU0NiwxOSArNTYyLDQxIEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpjYWNoZVVwZGF0ZUYKICAgICAgICAgbV9jYWNoZUNh
bmRpZGF0ZXMucmVtb3ZlKGl0KTsKICAgICB9CiAgICAgCi0gICAgbV9zdGF0dXMgPSBJZGxlOyAg
ICAKKyAgICBtX3VwZGF0ZVN0YXR1cyA9IElkbGU7ICAgIAogICAgIG1fZnJhbWUgPSAwOwogICAg
IAotICAgIC8vIElmIHRoZXJlIGFyZSBubyBhc3NvY2lhdGVkIGNhY2hlcywgZGVsZXRlIG91cnNl
bHZlcwotICAgIGlmIChtX2Fzc29jaWF0ZWREb2N1bWVudExvYWRlcnMuaXNFbXB0eSgpKQorICAg
IGlmIChtX2NhY2hlcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgQVNTRVJUKG1fYXNzb2NpYXRlZERv
Y3VtZW50TG9hZGVycy5pc0VtcHR5KCkpOwogICAgICAgICBkZWxldGUgdGhpczsKKyAgICB9CiB9
CiAgICAgCi0gICAgCi12b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbFRvTG9hZE1h
bmlmZXN0KCkKK3ZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjptYW5pZmVzdE5vdEZvdW5kKCkK
IHsKLSAgICAvLyBOb3RlIHRoYXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1c2UgdGhlIGNh
Y2hlIGdyb3VwIHRvIGJlIGRlbGV0ZWQuCi0gICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKKyAgICBz
dG9wTG9hZGluZygpOworICAgICAgICAKKyAgICBjYWxsTGlzdGVuZXJzT25Bc3NvY2lhdGVkRG9j
dW1lbnRzKCZET01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsT2Jzb2xldGVMaXN0ZW5lcik7CisKKyAg
ICBtX3BlbmRpbmdFbnRyaWVzLmNsZWFyKCk7CisgICAgbV9tYW5pZmVzdFJlc291cmNlID0gMDsK
KworICAgIHdoaWxlICghbV9jYWNoZUNhbmRpZGF0ZXMuaXNFbXB0eSgpKSB7CisgICAgICAgIEhh
c2hTZXQ8RG9jdW1lbnRMb2FkZXIqPjo6aXRlcmF0b3IgaXQgPSBtX2NhY2hlQ2FuZGlkYXRlcy5i
ZWdpbigpOworICAgICAgICAKKyAgICAgICAgQVNTRVJUKCgqaXQpLT5jYW5kaWRhdGVBcHBsaWNh
dGlvbkNhY2hlR3JvdXAoKSA9PSB0aGlzKTsKKyAgICAgICAgKCppdCktPnNldENhbmRpZGF0ZUFw
cGxpY2F0aW9uQ2FjaGVHcm91cCgwKTsKKyAgICAgICAgbV9jYWNoZUNhbmRpZGF0ZXMucmVtb3Zl
KGl0KTsKKyAgICB9CisKKyAgICBtYWtlT2Jzb2xldGUoKTsKKworICAgIG1fdXBkYXRlU3RhdHVz
ID0gSWRsZTsgICAgCisgICAgbV9mcmFtZSA9IDA7CisgICAgCisgICAgaWYgKG1fY2FjaGVzLmlz
RW1wdHkoKSkgeworICAgICAgICBBU1NFUlQobV9hc3NvY2lhdGVkRG9jdW1lbnRMb2FkZXJzLmlz
RW1wdHkoKSk7CisgICAgICAgIGRlbGV0ZSB0aGlzOworICAgIH0KIH0KIAogdm9pZCBBcHBsaWNh
dGlvbkNhY2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCkBAIC01OTcsMTYgKzYzNSwx
OSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJZkxvYWRJCiAgICAgICAgICAg
ICBtX2NhY2hlQ2FuZGlkYXRlcy5yZW1vdmUoaXQpOwogICAgICAgICB9CiAgICAgfQotICAgIAor
CisgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IG9sZE5ld2VzdENhY2hlID0gKG1fbmV3ZXN0
Q2FjaGUgPT0gbV9jYWNoZUJlaW5nVXBkYXRlZCkgPyAwIDogbV9uZXdlc3RDYWNoZTsKKwogICAg
IHNldE5ld2VzdENhY2hlKG1fY2FjaGVCZWluZ1VwZGF0ZWQucmVsZWFzZSgpKTsKLSAgICAgICAg
Ci0gICAgLy8gU3RvcmUgdGhlIGNhY2hlIAogICAgIGNhY2hlU3RvcmFnZSgpLnN0b3JlTmV3ZXN0
Q2FjaGUodGhpcyk7Ci0gICAgCisKKyAgICBpZiAob2xkTmV3ZXN0Q2FjaGUpCisgICAgICAgIGNh
Y2hlU3RvcmFnZSgpLnJlbW92ZShvbGROZXdlc3RDYWNoZS5nZXQoKSk7CisKICAgICBjYWxsTGlz
dGVuZXJzKGlzVXBncmFkZUF0dGVtcHQgPyAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbFVwZGF0
ZVJlYWR5TGlzdGVuZXIgOiAmRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbENhY2hlZExpc3RlbmVy
LCAKICAgICAgICAgICAgICAgICAgIGRvY3VtZW50TG9hZGVycyk7CiAKLSAgICBtX3N0YXR1cyA9
IElkbGU7CisgICAgbV91cGRhdGVTdGF0dXMgPSBJZGxlOwogICAgIG1fZnJhbWUgPSAwOwogfQog
CkBAIC02NzQsMTEgKzcxNSwxMCBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YWRkRW50
cnkoY29uCiB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6YXNzb2NpYXRlRG9jdW1lbnRMb2Fk
ZXJXaXRoQ2FjaGUoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgQXBwbGljYXRpb25DYWNoZSogY2Fj
aGUpCiB7CiAgICAgLy8gSWYgdGVhcmRvd24gc3RhcnRlZCBhbHJlYWR5LCByZXZpdmUgdGhlIGdy
b3VwLgotICAgIGlmIChtX3NhdmVkTmV3ZXN0Q2FjaGVQb2ludGVyKSB7Ci0gICAgICAgIEFTU0VS
VChjYWNoZSA9PSBtX3NhdmVkTmV3ZXN0Q2FjaGVQb2ludGVyKTsKLSAgICAgICAgbV9uZXdlc3RD
YWNoZSA9IG1fc2F2ZWROZXdlc3RDYWNoZVBvaW50ZXI7Ci0gICAgICAgIG1fc2F2ZWROZXdlc3RD
YWNoZVBvaW50ZXIgPSAwOwotICAgIH0KKyAgICBpZiAoIW1fbmV3ZXN0Q2FjaGUpCisgICAgICAg
IG1fbmV3ZXN0Q2FjaGUgPSBjYWNoZTsKKworICAgIEFTU0VSVCghbV9pc09ic29sZXRlKTsKIAog
ICAgIGxvYWRlci0+c2V0QXBwbGljYXRpb25DYWNoZShjYWNoZSk7CiAKSW5kZXg6IFdlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5oCShyZXZpc2lvbiA0
MDAyNCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAoY29uc3QgS1VSTCYgbWFuaWZlc3RVUkwsIGJvb2wgaXNDb3B5ID0gZmFsc2UpOyAg
ICAKICAgICB+QXBwbGljYXRpb25DYWNoZUdyb3VwKCk7CiAgICAgCi0gICAgZW51bSBTdGF0dXMg
eyBJZGxlLCBDaGVja2luZywgRG93bmxvYWRpbmcgfTsKKyAgICBlbnVtIFVwZGF0ZVN0YXR1cyB7
IElkbGUsIENoZWNraW5nLCBEb3dubG9hZGluZyB9OwogCiAgICAgc3RhdGljIEFwcGxpY2F0aW9u
Q2FjaGUqIGNhY2hlRm9yTWFpblJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgRG9jdW1l
bnRMb2FkZXIqKTsKICAgICBzdGF0aWMgQXBwbGljYXRpb25DYWNoZSogZmFsbGJhY2tDYWNoZUZv
ck1haW5SZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIERvY3VtZW50TG9hZGVyKik7CkBA
IC02MSwyNSArNjEsMjggQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIHNlbGVjdENhY2hlV2l0
aG91dE1hbmlmZXN0VVJMKEZyYW1lKik7CiAgICAgCiAgICAgY29uc3QgS1VSTCYgbWFuaWZlc3RV
UkwoKSBjb25zdCB7IHJldHVybiBtX21hbmlmZXN0VVJMOyB9Ci0gICAgU3RhdHVzIHN0YXR1cygp
IGNvbnN0IHsgcmV0dXJuIG1fc3RhdHVzOyB9Ci0gICAgCisgICAgVXBkYXRlU3RhdHVzIHVwZGF0
ZVN0YXR1cygpIGNvbnN0IHsgcmV0dXJuIG1fdXBkYXRlU3RhdHVzOyB9CisKICAgICB2b2lkIHNl
dFN0b3JhZ2VJRCh1bnNpZ25lZCBzdG9yYWdlSUQpIHsgbV9zdG9yYWdlSUQgPSBzdG9yYWdlSUQ7
IH0KICAgICB1bnNpZ25lZCBzdG9yYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2VJRDsg
fQogICAgIHZvaWQgY2xlYXJTdG9yYWdlSUQoKTsKICAgICAKICAgICB2b2lkIHVwZGF0ZShGcmFt
ZSopOwogICAgIHZvaWQgY2FjaGVEZXN0cm95ZWQoQXBwbGljYXRpb25DYWNoZSopOwotICAgICAg
ICAKKwogICAgIEFwcGxpY2F0aW9uQ2FjaGUqIG5ld2VzdENhY2hlKCkgY29uc3QgeyByZXR1cm4g
bV9uZXdlc3RDYWNoZS5nZXQoKTsgfQotICAgIEFwcGxpY2F0aW9uQ2FjaGUqIHNhdmVkTmV3ZXN0
Q2FjaGVQb2ludGVyKCkgY29uc3QgeyByZXR1cm4gbV9zYXZlZE5ld2VzdENhY2hlUG9pbnRlcjsg
fQotICAgIAorICAgIHZvaWQgc2V0TmV3ZXN0Q2FjaGUoUGFzc1JlZlB0cjxBcHBsaWNhdGlvbkNh
Y2hlPik7CisKKyAgICB2b2lkIG1ha2VPYnNvbGV0ZSgpOworICAgIGJvb2wgaXNPYnNvbGV0ZSgp
IGNvbnN0IHsgcmV0dXJuIG1faXNPYnNvbGV0ZTsgfQorCiAgICAgdm9pZCBmaW5pc2hlZExvYWRp
bmdNYWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGZhaWxlZExvYWRpbmdN
YWluUmVzb3VyY2UoRG9jdW1lbnRMb2FkZXIqKTsKLSAgICB2b2lkIGRvY3VtZW50TG9hZGVyRGVz
dHJveWVkKERvY3VtZW50TG9hZGVyKik7CiAKLSAgICB2b2lkIHNldE5ld2VzdENhY2hlKFBhc3NS
ZWZQdHI8QXBwbGljYXRpb25DYWNoZT4gbmV3ZXN0Q2FjaGUpOworICAgIHZvaWQgZGlzYXNzb2Np
YXRlRG9jdW1lbnRMb2FkZXIoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIGJvb2wgaXNDb3B5KCkg
Y29uc3QgeyByZXR1cm4gbV9pc0NvcHk7IH0KKwogcHJpdmF0ZToKICAgICB0eXBlZGVmIHZvaWQg
KERPTUFwcGxpY2F0aW9uQ2FjaGU6OipMaXN0ZW5lckZ1bmN0aW9uKSgpOwogICAgIHZvaWQgY2Fs
bExpc3RlbmVyc09uQXNzb2NpYXRlZERvY3VtZW50cyhMaXN0ZW5lckZ1bmN0aW9uKTsKQEAgLTkz
LDExICs5NiwxMSBAQCBwcml2YXRlOgogICAgIHZvaWQgZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9u
c2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpOwogICAgIHZvaWQgZGlkUmVjZWl2ZU1hbmlmZXN0
RGF0YShjb25zdCBjaGFyKiwgaW50KTsKICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdNYW5pZmVz
dCgpOwotICAgIHZvaWQgZGlkRmFpbFRvTG9hZE1hbmlmZXN0KCk7CiAgICAgCiAgICAgdm9pZCBz
dGFydExvYWRpbmdFbnRyeSgpOwogICAgIHZvaWQgY2hlY2tJZkxvYWRJc0NvbXBsZXRlKCk7CiAg
ICAgdm9pZCBjYWNoZVVwZGF0ZUZhaWxlZCgpOworICAgIHZvaWQgbWFuaWZlc3ROb3RGb3VuZCgp
OwogICAgIAogICAgIHZvaWQgYWRkRW50cnkoY29uc3QgU3RyaW5nJiwgdW5zaWduZWQgdHlwZSk7
CiAgICAgCkBAIC0xMDYsMTkgKzEwOSwxNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc3RvcExvYWRp
bmcoKTsKICAgICAKICAgICBLVVJMIG1fbWFuaWZlc3RVUkw7Ci0gICAgU3RhdHVzIG1fc3RhdHVz
OworICAgIFVwZGF0ZVN0YXR1cyBtX3VwZGF0ZVN0YXR1czsKICAgICAKICAgICAvLyBUaGlzIGlz
IHRoZSBuZXdlc3QgY2FjaGUgaW4gdGhlIGdyb3VwLgogICAgIFJlZlB0cjxBcHBsaWNhdGlvbkNh
Y2hlPiBtX25ld2VzdENhY2hlOwogICAgIAotICAgIC8vIER1cmluZyB0ZWFyLWRvd24gd2Ugc2F2
ZSB0aGUgcG9pbnRlciB0byB0aGUgbmV3ZXN0IGNhY2hlIHRvIHByZXZlbnQgcmVmZXJlbmNlIGN5
Y2xlcy4KLSAgICBBcHBsaWNhdGlvbkNhY2hlKiBtX3NhdmVkTmV3ZXN0Q2FjaGVQb2ludGVyOwot
ICAgIAogICAgIC8vIFRoZSBjYWNoZXMgaW4gdGhpcyBjYWNoZSBncm91cC4KICAgICBIYXNoU2V0
PEFwcGxpY2F0aW9uQ2FjaGUqPiBtX2NhY2hlczsKICAgICAKICAgICAvLyBUaGUgY2FjaGUgYmVp
bmcgdXBkYXRlZCAoaWYgYW55KS4gTm90ZSB0aGF0IGNhY2hlIHVwZGF0aW5nIGRvZXMgbm90IGlt
bWVkaWF0ZWx5IGNyZWF0ZSBhIG5ldwotICAgIC8vIEFwcGxpY2F0aW9uQ2FjaGUgb2JqZWN0LCBz
byB0aGlzIG1heSBiZSBudWxsIGV2ZW4gd2hlbiBzdGF0dXMgaXMgbm90IElkbGUuCisgICAgLy8g
QXBwbGljYXRpb25DYWNoZSBvYmplY3QsIHNvIHRoaXMgbWF5IGJlIG51bGwgZXZlbiB3aGVuIHVw
ZGF0ZSBzdGF0dXMgaXMgbm90IElkbGUuCiAgICAgUmVmUHRyPEFwcGxpY2F0aW9uQ2FjaGU+IG1f
Y2FjaGVCZWluZ1VwZGF0ZWQ7CiAKICAgICAvLyBXaGVuIGEgY2FjaGUgZ3JvdXAgZG9lcyBub3Qg
eWV0IGhhdmUgYSBjb21wbGV0ZSBjYWNoZSwgdGhpcyBjb250YWlucyB0aGUgZG9jdW1lbnQgbG9h
ZGVycwpAQCAtMTMyLDEwICsxMzIsMTMgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8
U3RyaW5nLCB1bnNpZ25lZD4gRW50cnlNYXA7CiAgICAgRW50cnlNYXAgbV9wZW5kaW5nRW50cmll
czsKIAotICAgIC8vIEZyYW1lIHVzZWQgZm9yIGZldGNoaW5nIHJlc291cmNlcyB3aGVuIHVwZGF0
aW5nCisgICAgLy8gRnJhbWUgdXNlZCBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzIHdoZW4gdXBkYXRp
bmcuCisgICAgLy8gRklYTUU6IEFuIHVwZGF0ZSBzdGFydGVkIGJ5IGEgcGFydGljdWxhciBmcmFt
ZSBzaG91bGQgbm90IHN0b3AgaWYgaXQgaXMgZGVzdHJveWVkLCBidXQgdGhlcmUgYXJlIG90aGVy
IGZyYW1lcyBhc3NvY2lhdGVkIHdpdGggdGhlIHNhbWUgY2FjaGUgZ3JvdXAuCiAgICAgRnJhbWUq
IG1fZnJhbWU7CiAgIAorICAgIC8vIEFuIG9ic29sZXRlIGNhY2hlIGdyb3VwIGlzIG5ldmVyIHN0
b3JlZCwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZSAtIHN0b3JpbmcgbWF5IGZhaWwgZm9y
IG11bHRpcGxlIHJlYXNvbnMsIHN1Y2ggYXMgZXhjZWVkaW5nIGRpc2sgcXVvdGEuCiAgICAgdW5z
aWduZWQgbV9zdG9yYWdlSUQ7CisgICAgYm9vbCBtX2lzT2Jzb2xldGU7CiAgIAogICAgIC8vIFdo
ZXRoZXIgdGhpcyBjYWNoZSBncm91cCBpcyBhIGNvcHkgdGhhdCdzIG9ubHkgdXNlZCBmb3IgdHJh
bnNmZXJyaW5nIHRoZSBjYWNoZSB0byBhbm90aGVyIGZpbGUuCiAgICAgYm9vbCBtX2lzQ29weTsK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hl
U3RvcmFnZS5jcHAJKHJldmlzaW9uIDQwMDI0KQorKysgV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUv
QXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNDcsNyArMTQ3LDkg
QEAgQXBwbGljYXRpb25DYWNoZUdyb3VwKiBBcHBsaWNhdGlvbkNhY2hlUwogICAgIENhY2hlR3Jv
dXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fY2FjaGVzSW5NZW1vcnkuZW5kKCk7CiAgICAg
Zm9yIChDYWNoZUdyb3VwTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fY2FjaGVzSW5NZW1vcnku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cCogZ3JvdXAgPSBpdC0+c2Vjb25kOwotICAgICAgICAKKworICAgICAgICBBU1NFUlQoIWdyb3Vw
LT5pc09ic29sZXRlKCkpOworCiAgICAgICAgIGlmICghcHJvdG9jb2xIb3N0QW5kUG9ydEFyZUVx
dWFsKHVybCwgZ3JvdXAtPm1hbmlmZXN0VVJMKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgIApAQCAtMjEzLDYgKzIxNSw4IEBAIEFwcGxpY2F0aW9uQ2FjaGVHcm91cCogQXBwbGlj
YXRpb25DYWNoZVMKICAgICBmb3IgKENhY2hlR3JvdXBNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
bV9jYWNoZXNJbk1lbW9yeS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgQXBw
bGljYXRpb25DYWNoZUdyb3VwKiBncm91cCA9IGl0LT5zZWNvbmQ7CiAgICAgICAgIAorICAgICAg
ICBBU1NFUlQoIWdyb3VwLT5pc09ic29sZXRlKCkpOworCiAgICAgICAgIGlmIChBcHBsaWNhdGlv
bkNhY2hlKiBjYWNoZSA9IGdyb3VwLT5uZXdlc3RDYWNoZSgpKSB7CiAgICAgICAgICAgICBLVVJM
IGZhbGxiYWNrVVJMOwogICAgICAgICAgICAgaWYgKCFjYWNoZS0+dXJsTWF0Y2hlc0ZhbGxiYWNr
TmFtZXNwYWNlKHVybCwgJmZhbGxiYWNrVVJMKSkKQEAgLTI3MSwxNSArMjc1LDMzIEBAIEFwcGxp
Y2F0aW9uQ2FjaGVHcm91cCogQXBwbGljYXRpb25DYWNoZVMKIAogdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlU3RvcmFnZTo6Y2FjaGVHcm91cERlc3Ryb3llZChBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGdy
b3VwKQogeworICAgIGlmIChncm91cC0+aXNPYnNvbGV0ZSgpKSB7CisgICAgICAgIEFTU0VSVCgh
Z3JvdXAtPnN0b3JhZ2VJRCgpKTsKKyAgICAgICAgQVNTRVJUKG1fY2FjaGVzSW5NZW1vcnkuZ2V0
KGdyb3VwLT5tYW5pZmVzdFVSTCgpKSAhPSBncm91cCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKICAgICBBU1NFUlQobV9jYWNoZXNJbk1lbW9yeS5nZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCkp
ID09IGdyb3VwKTsKIAogICAgIG1fY2FjaGVzSW5NZW1vcnkucmVtb3ZlKGdyb3VwLT5tYW5pZmVz
dFVSTCgpKTsKICAgICAKLSAgICAvLyBJZiB0aGUgY2FjaGUgaXMgaGFsZi1jcmVhdGVkLCB3ZSBk
b24ndCB3YW50IGl0IGluIHRoZSBzYXZlZCBzZXQuCisgICAgLy8gSWYgdGhlIGNhY2hlIGdyb3Vw
IGlzIGhhbGYtY3JlYXRlZCwgd2UgZG9uJ3Qgd2FudCBpdCBpbiB0aGUgc2F2ZWQgc2V0IChhcyBp
dCBpcyBub3Qgc3RvcmVkIGluIGRhdGFiYXNlKS4KICAgICBpZiAoIWdyb3VwLT5zdG9yYWdlSUQo
KSkKICAgICAgICAgbV9jYWNoZUhvc3RTZXQucmVtb3ZlKHVybEhvc3RIYXNoKGdyb3VwLT5tYW5p
ZmVzdFVSTCgpKSk7CiB9CiAKK3ZvaWQgQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OmNhY2hlR3Jv
dXBPYnNvbGV0ZWQoQXBwbGljYXRpb25DYWNoZUdyb3VwKiBncm91cCkKK3sKKyAgICBBU1NFUlQo
bV9jYWNoZXNJbk1lbW9yeS5nZXQoZ3JvdXAtPm1hbmlmZXN0VVJMKCkpID09IGdyb3VwKTsKKyAg
ICBBU1NFUlQobV9jYWNoZUhvc3RTZXQuY29udGFpbnModXJsSG9zdEhhc2goZ3JvdXAtPm1hbmlm
ZXN0VVJMKCkpKSk7CisKKyAgICBpZiAoQXBwbGljYXRpb25DYWNoZSogbmV3ZXN0Q2FjaGUgPSBn
cm91cC0+bmV3ZXN0Q2FjaGUoKSkKKyAgICAgICAgcmVtb3ZlKG5ld2VzdENhY2hlKTsKKworICAg
IG1fY2FjaGVzSW5NZW1vcnkucmVtb3ZlKGdyb3VwLT5tYW5pZmVzdFVSTCgpKTsKKyAgICBtX2Nh
Y2hlSG9zdFNldC5yZW1vdmUodXJsSG9zdEhhc2goZ3JvdXAtPm1hbmlmZXN0VVJMKCkpKTsKK30K
Kwogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6c2V0Q2FjaGVEaXJlY3RvcnkoY29uc3Qg
U3RyaW5nJiBjYWNoZURpcmVjdG9yeSkKIHsKICAgICBBU1NFUlQobV9jYWNoZURpcmVjdG9yeS5p
c051bGwoKSk7CkBAIC01OTMsNiArNjE1LDcgQEAgYm9vbCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFn
ZTo6c3RvcmVOZXdlcwogICAgIH0KICAgICAKICAgICBBU1NFUlQoZ3JvdXAtPm5ld2VzdENhY2hl
KCkpOworICAgIEFTU0VSVCghZ3JvdXAtPmlzT2Jzb2xldGUoKSk7CiAgICAgQVNTRVJUKCFncm91
cC0+bmV3ZXN0Q2FjaGUoKS0+c3RvcmFnZUlEKCkpOwogICAgIAogICAgIC8vIFN0b3JlIHRoZSBu
ZXdlc3QgY2FjaGUKQEAgLTczMCw2ICs3NTMsOSBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVTdG9y
YWdlOjpyZW1vdmUoQXBwCiAgICAgaWYgKCFtX2RhdGFiYXNlLmlzT3BlbigpKQogICAgICAgICBy
ZXR1cm47CiAKKyAgICBBU1NFUlQoY2FjaGUtPmdyb3VwKCkpOworICAgIEFTU0VSVChjYWNoZS0+
Z3JvdXAoKS0+c3RvcmFnZUlEKCkpOworCiAgICAgLy8gQWxsIGFzc29jaWF0ZWQgZGF0YSB3aWxs
IGJlIGRlbGV0ZWQgYnkgZGF0YWJhc2UgdHJpZ2dlcnMuCiAgICAgU1FMaXRlU3RhdGVtZW50IHN0
YXRlbWVudChtX2RhdGFiYXNlLCAiREVMRVRFIEZST00gQ2FjaGVzIFdIRVJFIGlkPT8iKTsKICAg
ICBpZiAoc3RhdGVtZW50LnByZXBhcmUoKSAhPSBTUUxSZXN1bHRPaykKQEAgLTczNyw2ICs3NjMs
MjAgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6cmVtb3ZlKEFwcAogICAgIAogICAg
IHN0YXRlbWVudC5iaW5kSW50NjQoMSwgY2FjaGUtPnN0b3JhZ2VJRCgpKTsKICAgICBleGVjdXRl
U3RhdGVtZW50KHN0YXRlbWVudCk7CisKKyAgICBjYWNoZS0+Y2xlYXJTdG9yYWdlSUQoKTsKKwor
ICAgIGlmIChjYWNoZS0+Z3JvdXAoKS0+bmV3ZXN0Q2FjaGUoKSA9PSBjYWNoZSkgeworICAgICAg
ICAvLyBDdXJyZW50bHksIHRoZXJlIGFyZSBubyB0cmlnZ2VycyBvbiB0aGUgY2FjaGUgZ3JvdXAs
IHdoaWNoIGlzIHdoeSB0aGUgY2FjaGUgaGFkIHRvIGJlIHJlbW92ZWQgc2VwYXJhdGVseSBhYm92
ZS4KKyAgICAgICAgU1FMaXRlU3RhdGVtZW50IGdyb3VwU3RhdGVtZW50KG1fZGF0YWJhc2UsICJE
RUxFVEUgRlJPTSBDYWNoZUdyb3VwcyBXSEVSRSBpZD0/Iik7CisgICAgICAgIGlmIChncm91cFN0
YXRlbWVudC5wcmVwYXJlKCkgIT0gU1FMUmVzdWx0T2spCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgICAgICBncm91cFN0YXRlbWVudC5iaW5kSW50NjQoMSwgY2FjaGUtPmdyb3Vw
KCktPnN0b3JhZ2VJRCgpKTsKKyAgICAgICAgZXhlY3V0ZVN0YXRlbWVudChncm91cFN0YXRlbWVu
dCk7CisKKyAgICAgICAgY2FjaGUtPmdyb3VwKCktPmNsZWFyU3RvcmFnZUlEKCk7CisgICAgfQog
fSAgICAKIAogdm9pZCBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6ZW1wdHkoKQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZVN0b3JhZ2UuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oCShy
ZXZpc2lvbiA0MDAyNCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMyBAQCBwdWJsaWM6CiAK
ICAgICBBcHBsaWNhdGlvbkNhY2hlR3JvdXAqIGZpbmRPckNyZWF0ZUNhY2hlR3JvdXAoY29uc3Qg
S1VSTCYgbWFuaWZlc3RVUkwpOwogICAgIHZvaWQgY2FjaGVHcm91cERlc3Ryb3llZChBcHBsaWNh
dGlvbkNhY2hlR3JvdXAqKTsKKyAgICB2b2lkIGNhY2hlR3JvdXBPYnNvbGV0ZWQoQXBwbGljYXRp
b25DYWNoZUdyb3VwKik7CiAgICAgICAgIAotICAgIGJvb2wgc3RvcmVOZXdlc3RDYWNoZShBcHBs
aWNhdGlvbkNhY2hlR3JvdXAqKTsKKyAgICBib29sIHN0b3JlTmV3ZXN0Q2FjaGUoQXBwbGljYXRp
b25DYWNoZUdyb3VwKik7IC8vIFVwZGF0ZXMgdGhlIGNhY2hlIGdyb3VwLCBidXQgZG9lc24ndCBy
ZW1vdmUgb2xkIGNhY2hlLgogICAgIHZvaWQgc3RvcmUoQXBwbGljYXRpb25DYWNoZVJlc291cmNl
KiwgQXBwbGljYXRpb25DYWNoZSopOwogICAgIGJvb2wgc3RvcmVVcGRhdGVkVHlwZShBcHBsaWNh
dGlvbkNhY2hlUmVzb3VyY2UqLCBBcHBsaWNhdGlvbkNhY2hlKik7CiAKKyAgICAvLyBSZW1vdmVz
IHRoZSBncm91cCBpZiB0aGUgY2FjaGUgdG8gYmUgcmVtb3ZlZCBpcyB0aGUgbmV3ZXN0IG9uZSAo
c28sIHN0b3JlTmV3ZXN0Q2FjaGUoKSBuZWVkcyB0byBiZSBjYWxsZWQgYmVmb3JlaGFuZCB3aGVu
IHVwZGF0aW5nKS4KICAgICB2b2lkIHJlbW92ZShBcHBsaWNhdGlvbkNhY2hlKik7CiAgICAgCiAg
ICAgdm9pZCBlbXB0eSgpOwpAQCAtODQsMTEgKzg2LDExIEBAIHByaXZhdGU6CiAgICAgU1FMaXRl
RGF0YWJhc2UgbV9kYXRhYmFzZTsKIAogICAgIC8vIEluIG9yZGVyIHRvIHF1aWNrbHkgZGV0ZXJt
aW5lIGlmIGEgZ2l2ZW4gcmVzb3VyY2UgZXhpc3RzIGluIGFuIGFwcGxpY2F0aW9uIGNhY2hlLAot
ICAgIC8vIHdlIGtlZXAgYSBoYXNoIHNldCBvZiB0aGUgaG9zdHMgb2YgdGhlIG1hbmlmZXN0IFVS
THMgb2YgYWxsIGNhY2hlIGdyb3Vwcy4KKyAgICAvLyB3ZSBrZWVwIGEgaGFzaCBzZXQgb2YgdGhl
IGhvc3RzIG9mIHRoZSBtYW5pZmVzdCBVUkxzIG9mIGFsbCBub24tb2Jzb2xldGUgY2FjaGUgZ3Jv
dXBzLgogICAgIEhhc2hDb3VudGVkU2V0PHVuc2lnbmVkLCBBbHJlYWR5SGFzaGVkPiBtX2NhY2hl
SG9zdFNldDsKICAgICAKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXAqPiBDYWNoZUdyb3VwTWFwOwotICAgIENhY2hlR3JvdXBNYXAgbV9jYWNoZXNJbk1l
bW9yeTsKKyAgICBDYWNoZUdyb3VwTWFwIG1fY2FjaGVzSW5NZW1vcnk7IC8vIEV4Y2x1ZGVzIG9i
c29sZXRlIGNhY2hlIGdyb3Vwcy4KIH07CiAgCiBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZSYgY2Fj
aGVTdG9yYWdlKCk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlv
bkNhY2hlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBs
aWNhdGlvbkNhY2hlLmNwcAkocmV2aXNpb24gNDAwMjQpCisrKyBXZWJDb3JlL2xvYWRlci9hcHBj
YWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjUsMjIgKzY1LDIy
IEBAIHVuc2lnbmVkIHNob3J0IERPTUFwcGxpY2F0aW9uQ2FjaGU6OnN0YXQKICAgICBBcHBsaWNh
dGlvbkNhY2hlKiBjYWNoZSA9IGFzc29jaWF0ZWRDYWNoZSgpOyAgICAKICAgICBpZiAoIWNhY2hl
KQogICAgICAgICByZXR1cm4gVU5DQUNIRUQ7Ci0gICAgCi0gICAgc3dpdGNoIChjYWNoZS0+Z3Jv
dXAoKS0+c3RhdHVzKCkpIHsKKworICAgIHN3aXRjaCAoY2FjaGUtPmdyb3VwKCktPnVwZGF0ZVN0
YXR1cygpKSB7CiAgICAgICAgIGNhc2UgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpDaGVja2luZzoK
ICAgICAgICAgICAgIHJldHVybiBDSEVDS0lORzsKICAgICAgICAgY2FzZSBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OkRvd25sb2FkaW5nOgogICAgICAgICAgICAgcmV0dXJuIERPV05MT0FESU5HOwog
ICAgICAgICBjYXNlIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6SWRsZTogeworICAgICAgICAgICAg
aWYgKGNhY2hlLT5ncm91cCgpLT5pc09ic29sZXRlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IE9CU09MRVRFOwogICAgICAgICAgICAgaWYgKGNhY2hlICE9IGNhY2hlLT5ncm91cCgpLT5uZXdl
c3RDYWNoZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBVUERBVEVSRUFEWTsKLSAgICAgICAg
ICAgIAogICAgICAgICAgICAgcmV0dXJuIElETEU7CiAgICAgICAgIH0KLSAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICAKKworICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0xMDMsOCArMTAz
LDE0IEBAIGJvb2wgRE9NQXBwbGljYXRpb25DYWNoZTo6c3dhcENhY2hlKCkKICAgICBBcHBsaWNh
dGlvbkNhY2hlKiBjYWNoZSA9IG1fZnJhbWUtPmxvYWRlcigpLT5kb2N1bWVudExvYWRlcigpLT5h
cHBsaWNhdGlvbkNhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIAotICAgIC8vIENoZWNrIGlmIHdlIGFscmVhZHkgaGF2ZSB0aGUgbmV3ZXN0IGNhY2hl
CisKKyAgICAvLyBJZiB0aGUgZ3JvdXAgb2YgYXBwbGljYXRpb24gY2FjaGVzIHRvIHdoaWNoIGNh
Y2hlIGJlbG9uZ3MgaGFzIHRoZSBsaWZlY3ljbGUgc3RhdHVzIG9ic29sZXRlLCB1bmFzc29jaWF0
ZSBkb2N1bWVudCBmcm9tIGNhY2hlLgorICAgIGlmIChjYWNoZS0+Z3JvdXAoKS0+aXNPYnNvbGV0
ZSgpKSB7CisgICAgICAgIGNhY2hlLT5ncm91cCgpLT5kaXNhc3NvY2lhdGVEb2N1bWVudExvYWRl
cihtX2ZyYW1lLT5sb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIoKSk7CisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIElmIHRoZXJlIGlzIG5vIG5ld2VyIGNhY2hlLCByYWlzZSBh
biBJTlZBTElEX1NUQVRFX0VSUiBleGNlcHRpb24uCiAgICAgQXBwbGljYXRpb25DYWNoZSogbmV3
ZXN0Q2FjaGUgPSBjYWNoZS0+Z3JvdXAoKS0+bmV3ZXN0Q2FjaGUoKTsKICAgICBpZiAoY2FjaGUg
PT0gbmV3ZXN0Q2FjaGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4Nyw2ICsyOTMsMTEg
QEAgdm9pZCBET01BcHBsaWNhdGlvbkNhY2hlOjpjYWxsQ2FjaGVkTGlzdAogICAgIGNhbGxMaXN0
ZW5lcihldmVudE5hbWVzKCkuY2FjaGVkRXZlbnQsIG1fb25DYWNoZWRMaXN0ZW5lci5nZXQoKSk7
CiB9CiAKK3ZvaWQgRE9NQXBwbGljYXRpb25DYWNoZTo6Y2FsbE9ic29sZXRlTGlzdGVuZXIoKQor
eworICAgIGNhbGxMaXN0ZW5lcihldmVudE5hbWVzKCkub2Jzb2xldGVFdmVudCwgbV9vbk9ic29s
ZXRlTGlzdGVuZXIuZ2V0KCkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQpJbmRleDogV2ViQ29yZS9sb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
bG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAkocmV2aXNpb24gNDAwMjQpCisr
KyBXZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTU2LDYgKzU2LDcgQEAgcHVibGljOgogICAgICAgICBDSEVDS0lORyA9IDIsCiAgICAg
ICAgIERPV05MT0FESU5HID0gMywKICAgICAgICAgVVBEQVRFUkVBRFkgPSA0LAorICAgICAgICBP
QlNPTEVURSA9IDUKICAgICB9OwogCiAgICAgdW5zaWduZWQgc2hvcnQgc3RhdHVzKCkgY29uc3Q7
CkBAIC0xMDAsNiArMTAxLDkgQEAgcHVibGljOgogICAgIHZvaWQgc2V0T25jYWNoZWQoUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25DYWNoZWRMaXN0ZW5lciA9
IGV2ZW50TGlzdGVuZXI7IH0KICAgICBFdmVudExpc3RlbmVyKiBvbmNhY2hlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fb25DYWNoZWRMaXN0ZW5lci5nZXQoKTsgfQogCisgICAgdm9pZCBzZXRPbm9ic29s
ZXRlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uT2Jzb2xl
dGVMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICBFdmVudExpc3RlbmVyKiBvbm9ic29s
ZXRlKCkgY29uc3QgeyByZXR1cm4gbV9vbk9ic29sZXRlTGlzdGVuZXIuZ2V0KCk7IH0KKwogICAg
IHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
IGNvbnN0OwogICAgIERPTUFwcGxpY2F0aW9uQ2FjaGUqIHRvRE9NQXBwbGljYXRpb25DYWNoZSgp
IHsgcmV0dXJuIHRoaXM7IH0KIApAQCAtMTEwLDYgKzExNCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IGNhbGxQcm9ncmVzc0xpc3RlbmVyKCk7CiAgICAgdm9pZCBjYWxsVXBkYXRlUmVhZHlMaXN0ZW5l
cigpOwogICAgIHZvaWQgY2FsbENhY2hlZExpc3RlbmVyKCk7CisgICAgdm9pZCBjYWxsT2Jzb2xl
dGVMaXN0ZW5lcigpOwogICAgIAogcHJpdmF0ZToKICAgICBET01BcHBsaWNhdGlvbkNhY2hlKEZy
YW1lKik7CkBAIC0xMjgsNiArMTMzLDcgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gbV9vblByb2dyZXNzTGlzdGVuZXI7CiAgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1f
b25VcGRhdGVSZWFkeUxpc3RlbmVyOwogICAgIFJlZlB0cjxFdmVudExpc3RlbmVyPiBtX29uQ2Fj
aGVkTGlzdGVuZXI7CisgICAgUmVmUHRyPEV2ZW50TGlzdGVuZXI+IG1fb25PYnNvbGV0ZUxpc3Rl
bmVyOwogICAgIAogICAgIEV2ZW50TGlzdGVuZXJzTWFwIG1fZXZlbnRMaXN0ZW5lcnM7CiAKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRs
CShyZXZpc2lvbiA0MDAyNCkKKysrIFdlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxpY2F0
aW9uQ2FjaGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHly
aWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSw3IEBAIG1vZHVsZSBvZmZsaW5l
IHsKICAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgQ0hFQ0tJTkcgPSAyOwogICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBET1dOTE9BRElORyA9IDM7CiAgICAgICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFVQREFURVJFQURZID0gNDsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQg
T0JTT0xFVEUgPSA1OwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQg
c3RhdHVzOwogCiAgICAgICAgIHZvaWQgdXBkYXRlKCkKQEAgLTYxLDYgKzYyLDcgQEAgbW9kdWxl
IG9mZmxpbmUgewogICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOwog
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnVwZGF0ZXJlYWR5OwogICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNhY2hlZDsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25vYnNvbGV0ZTsKIAogICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UK
ICAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBl
LCAKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDQwMDI1KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDktMDEtMTkgIEFsZXhleSBQcm9za3Vy
eWFrb3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzQxNworICAgICAgICBJbXBsZW1lbnQgYXBwbGljYXRpb24gY2FjaGUgb2Jzb2xldGUgc3RhdGUK
KworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVzb3VyY2VzL2ZhaWwtb24tdXBkYXRl
LnBocDogVGhpcyBzY3JpcHQgdXNlZCB0byBhbHRlcm5hdGUgYmV0d2VlbgorICAgICAgICAyMDAg
YW5kIDQwNCByZXNwb25zZXMsIHdoaWNoIGlzIG5vdCBjb3JyZWN0LCBiZWNhdXNlIHVwZGF0ZSBw
cm9jZXNzIHNob3VsZCBjaGVjayB0aGUKKyAgICAgICAgbWFuaWZlc3QgdHdpY2UgKFdlYktpdCBk
b2Vzbid0IGltcGxlbWVudCB0aGF0IHlldCkuIENoYW5nZWQgaXQgdG8gdGFrZSBleHBsaWNpdCBj
b21tYW5kcy4KKworICAgICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvZmFpbC1vbi11cGRhdGUu
aHRtbDogVXBkYXRlZCB0byAiZGVsZXRlIiB0aGUgbWFuaWZlc3QgZXhwbGljaXRseS4KKworICAg
ICAgICAqIGh0dHAvdGVzdHMvYXBwY2FjaGUvcmVtb3ZlLWNhY2hlLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZW1vdmUtY2FjaGUuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcmVtb3ZlLWNhY2hl
LWZyYW1lLTIuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNv
dXJjZXMvcmVtb3ZlLWNhY2hlLWZyYW1lLmh0bWw6IEFkZGVkLgorICAgICAgICBBZGRlZCBhIHRl
c3QgZm9yIG1hbmlmZXN0IG9ic29sZXNjZW5jZS4KKwogMjAwOS0wMS0xNyAgRXJpYyBDYXJsc29u
ICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQ
ZXRlcnNvbgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9mYWlsLW9uLXVw
ZGF0ZS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
ZmFpbC1vbi11cGRhdGUuaHRtbAkocmV2aXNpb24gNDAwMjQpCisrKyBMYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2FwcGNhY2hlL2ZhaWwtb24tdXBkYXRlLmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTUs
OCArNSwxOCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CiAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOwogfQogCitmdW5jdGlvbiBzZXRNYW5pZmVz
dERlbGV0ZWQoc3RhdGUpCit7CisgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAg
ICByZXEub3BlbigiR0VUIiwgInJlc291cmNlcy9mYWlsLW9uLXVwZGF0ZS5waHA/Y29tbWFuZD0i
ICsgKHN0YXRlID8gImRlbGV0ZSIgOiAicmVzZXQiKSwgZmFsc2UpOworICAgIHJlcS5zZW5kKG51
bGwpOworfQorCiBmdW5jdGlvbiB0ZXN0KCkKIHsKKyAgICBjbGVhclRpbWVvdXQodGltZW91dElk
KTsKKworICAgIHNldE1hbmlmZXN0RGVsZXRlZCh0cnVlKTsKICAgICBhcHBsaWNhdGlvbkNhY2hl
LnVwZGF0ZSgpOwogICAgIHdpbmRvdy5sb2NhdGlvbiA9ICdkYXRhOnRleHQvaHRtbCw8cD5TVUND
RVNTOiBObyBjcmFzaC48L3A+JyArIAogICAgICAgICAnPHNjcmlwdD4nICsKQEAgLTE0LDkgKzI0
LDIzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAnPC9zY3JpJyArICdwdD4nOwogfQogCitm
dW5jdGlvbiByZXNldE1hbmlmZXN0KCkKK3sKKyAgICBpZiAoYXBwbGljYXRpb25DYWNoZS5zdGF0
dXMgIT0gYXBwbGljYXRpb25DYWNoZS5VTkNBQ0hFRCAmJiBhcHBsaWNhdGlvbkNhY2hlLnN0YXR1
cyAhPSBhcHBsaWNhdGlvbkNhY2hlLk9CU09MRVRFKSB7CisgICAgICAgIHRpbWVvdXRJZCA9IHNl
dFRpbWVvdXQocmVzZXRNYW5pZmVzdCwgMTAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIHNldE1hbmlmZXN0RGVsZXRlZChmYWxzZSk7CisgICAgbG9jYXRpb24ucmVsb2FkKCk7Cit9
CisKIGFwcGxpY2F0aW9uQ2FjaGUuYWRkRXZlbnRMaXN0ZW5lcignbm91cGRhdGUnLCBmdW5jdGlv
bigpIHsgc2V0VGltZW91dCh0ZXN0LCAwKSB9LCBmYWxzZSk7CiBhcHBsaWNhdGlvbkNhY2hlLmFk
ZEV2ZW50TGlzdGVuZXIoJ2NhY2hlZCcsIGZ1bmN0aW9uKCkgeyBzZXRUaW1lb3V0KHRlc3QsIDAp
IH0sIGZhbHNlKTsKIAorLy8gSWYgdGhlIG1hbmlmZXN0IHNjcmlwdCBoYXBwZW5lZCB0byBiZSBp
biBhIHdyb25nIHN0YXRlLCByZXNldCBpdC4KK3ZhciB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KHJl
c2V0TWFuaWZlc3QsIDEwMCk7CisKIDwvc2NyaXB0PgogPHA+VGVzdCBmb3IgYSBwYXJ0aWN1bGFy
IGluY29ycmVjdCBhc3NlcnRpb24gZmFpbHVyZS48L3A+CiAKSW5kZXg6IExheW91dFRlc3RzL2h0
dHAvdGVzdHMvYXBwY2FjaGUvcmVtb3ZlLWNhY2hlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3JlbW92ZS1jYWNoZS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3JlbW92
ZS1jYWNoZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOSBAQAorVGVzdCB0
aGF0IGEgNDA0IHJlc3BvbnNlIGZvciBtYW5pZmVzdCByZXN1bHRzIGluIGNhY2hlIHJlbW92YWwu
CisKK0ZyYW1lIDE6IE1hbmlmZXN0IGxvYWRpbmcgcmVzdWx0cyBpbiA0MDQgcmVzcG9uc2UsIHRv
IHRoZSBjYWNoZSBncm91cCBiZWNvbWVzIG9ic29sZXRlLgorRnJhbWUgMjogTWFuaWZlc3QgaXMg
c3RpbGwgNDA0IC0gdGhlIGRvY3VtZW50IGlzIG5ldmVyIGFzc29jaWF0ZWQgd2l0aCBhIGNhY2hl
LgorRnJhbWUgMzogTWFuaWZlc3QgaXMgbm93IGF2YWlsYWJsZSwgc28gdGhlIGRvY3VtZW50IGdl
dHMgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGUgaW4gYSBuZXdseSBjcmVhdGVkIGdyb3VwOyB0aGUg
b2Jzb2xldGUgY2FjaGUgZ3JvdXAgaXMgbm90IGFmZmVjdGVkLgorU2hvdWxkIHNheSBTVUNDRVNT
OgorCitTVUNDRVNTCisKClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVz
dHMvYXBwY2FjaGUvcmVtb3ZlLWNhY2hlLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2
bjptaW1lLXR5cGUKICAgKyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRp
dmUKCkluZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3JlbW92ZS1jYWNoZS5o
dG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVtb3Zl
LWNhY2hlLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNh
Y2hlL3JlbW92ZS1jYWNoZS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEwNSBAQAorPGh0
bWwgbWFuaWZlc3Q9InJlc291cmNlcy9mYWlsLW9uLXVwZGF0ZS5waHAiPgorPHA+VGVzdCB0aGF0
IGEgNDA0IHJlc3BvbnNlIGZvciBtYW5pZmVzdCByZXN1bHRzIGluIGNhY2hlIHJlbW92YWwuPC9w
PgorPGJvZHk+Cis8dWw+Cis8bGk+RnJhbWUgMTogTWFuaWZlc3QgbG9hZGluZyByZXN1bHRzIGlu
IDQwNCByZXNwb25zZSwgdG8gdGhlIGNhY2hlIGdyb3VwIGJlY29tZXMgb2Jzb2xldGUuCis8bGk+
RnJhbWUgMjogTWFuaWZlc3QgaXMgc3RpbGwgNDA0IC0gdGhlIGRvY3VtZW50IGlzIG5ldmVyIGFz
c29jaWF0ZWQgd2l0aCBhIGNhY2hlLgorPGxpPkZyYW1lIDM6IE1hbmlmZXN0IGlzIG5vdyBhdmFp
bGFibGUsIHNvIHRoZSBkb2N1bWVudCBnZXRzIGFzc29jaWF0ZWQgd2l0aCBhIGNhY2hlIGluIGEg
bmV3bHkgY3JlYXRlZCBncm91cDsgdGhlIG9ic29sZXRlIGNhY2hlIGdyb3VwIGlzIG5vdCBhZmZl
Y3RlZC4KKzwvdWw+Cis8cD5TaG91bGQgc2F5IFNVQ0NFU1M6PC9wPgorPGRpdiBpZD1yZXN1bHQ+
PC9kaXY+CisKKzxzY3JpcHQ+CitpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxheW91dFRlc3RDb250
cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdl
ICsgIjxicj4iOworfQorCitmdW5jdGlvbiBzZXRNYW5pZmVzdERlbGV0ZWQoc3RhdGUpCit7Cisg
ICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICByZXEub3BlbigiR0VUIiwgInJl
c291cmNlcy9mYWlsLW9uLXVwZGF0ZS5waHA/Y29tbWFuZD0iICsgKHN0YXRlID8gImRlbGV0ZSIg
OiAicmVzZXQiKSwgZmFsc2UpOworICAgIHJlcS5zZW5kKG51bGwpOworfQorCitmdW5jdGlvbiB0
ZXN0KCkKK3sKKyAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTsKKyAgICBhcHBsaWNhdGlvbkNh
Y2hlLm9ubm91cGRhdGUgPSBudWxsOworICAgIGFwcGxpY2F0aW9uQ2FjaGUub25jYWNoZWQgPSBu
dWxsOworCisgICAgc2V0TWFuaWZlc3REZWxldGVkKHRydWUpOworICAgIC8vIFRoZSBmcmFtZSB3
aWxsIGJlIGFzc29jaWF0ZWQgdG8gYSBjYWNoZSwgYnV0IHVwZGF0ZSB3aWxsIG9ic29sZXRlIGl0
LgorICAgIHZhciBpZnIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBp
ZnIuc2V0QXR0cmlidXRlKCJzcmMiLCAicmVzb3VyY2VzL3JlbW92ZS1jYWNoZS1mcmFtZS5odG1s
Iik7CisgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChpZnIpOworICAgIHdpbmRvdy5hZGRF
dmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdDIsIGZhbHNlKTsKK30KKworZnVuY3Rpb24gdGVz
dDIoKQoreworICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdDIs
IGZhbHNlKTsKKworICAgIGFwcGxpY2F0aW9uQ2FjaGUub251cGRhdGVyZWFkeSA9IGZ1bmN0aW9u
KCkgeyBsb2coIlVuZXhwZWN0ZWQgdXBkYXRlcmVhZHkgZXZlbnQgYWZ0ZXIgb2Jzb2xldGUgZXZl
bnQiKSB9CisgICAgYXBwbGljYXRpb25DYWNoZS5vbmVycm9yID0gZnVuY3Rpb24oKSB7IGxvZygi
VW5leHBlY3RlZCBlcnJvciBldmVudCBhZnRlciBvYnNvbGV0ZSBldmVudCIpIH0KKyAgICBhcHBs
aWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgbG9nKCJVbmV4cGVjdGVkIG5v
dXBkYXRlIGV2ZW50IGFmdGVyIG9ic29sZXRlIGV2ZW50IikgfQorICAgIGFwcGxpY2F0aW9uQ2Fj
aGUub25jYWNoZWQgPSBmdW5jdGlvbigpIHsgbG9nKCJVbmV4cGVjdGVkIGNhY2hlZCBldmVudCBh
ZnRlciBvYnNvbGV0ZSBldmVudCIpIH0KKworICAgIC8vIFRoZSBmcmFtZSB3aWxsIG5vdCBiZSBh
c3NvY2lhdGVkIHRvIGEgY2FjaGUuCisgICAgdmFyIGlmciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImlmcmFtZSIpOworICAgIGlmci5zZXRBdHRyaWJ1dGUoInNyYyIsICJyZXNvdXJjZXMvcmVt
b3ZlLWNhY2hlLWZyYW1lLmh0bWwiKTsKKyAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlm
cik7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCB0ZXN0MywgZmFsc2Up
OworfQorCitmdW5jdGlvbiB0ZXN0MygpCit7CisgICAgc2V0TWFuaWZlc3REZWxldGVkKGZhbHNl
KTsKKworICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgdGVzdDMsIGZh
bHNlKTsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9udXBkYXRlcmVhZHkgPSBudWxsOworCisgICAg
Ly8gVGhlIGZyYW1lIHdpbGwgYmUgYXNzb2NpYXRlZCB0byBhIGNhY2hlLgorICAgIHZhciBpZnIg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKTsKKyAgICBpZnIuc2V0QXR0cmlidXRl
KCJzcmMiLCAicmVzb3VyY2VzL3JlbW92ZS1jYWNoZS1mcmFtZS0yLmh0bWwiKTsKKyAgICBkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcik7CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
Im1lc3NhZ2UiLCB0ZXN0NCwgZmFsc2UpOworfQorCitmdW5jdGlvbiB0ZXN0NCgpCit7CisgICAg
bG9nKG9ic29sZXRlID8gIlNVQ0NFU1MiIDogIkZBSUw6IFRlc3RzIHN0ZXBzIGhhdmUgZmluaXNo
ZWQsIGJ1dCBtYWluIGZyYW1lIG5ldmVyIHJlY2VpdmVkIGFuIG9ic29sZXRlIGV2ZW50Iik7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitmdW5jdGlvbiByZXNldE1hbmlmZXN0KCkKK3sK
KyAgICBpZiAoYXBwbGljYXRpb25DYWNoZS5zdGF0dXMgIT0gYXBwbGljYXRpb25DYWNoZS5VTkNB
Q0hFRCAmJiBhcHBsaWNhdGlvbkNhY2hlLnN0YXR1cyAhPSBhcHBsaWNhdGlvbkNhY2hlLk9CU09M
RVRFKSB7CisgICAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQocmVzZXRNYW5pZmVzdCwgMTAw
KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNldE1hbmlmZXN0RGVsZXRlZChmYWxz
ZSk7CisgICAgbG9jYXRpb24ucmVsb2FkKCk7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUub251cGRh
dGVyZWFkeSA9IGZ1bmN0aW9uKCkgeyBsb2coIlVuZXhwZWN0ZWQgdXBkYXRlcmVhZHkgZXZlbnQi
KSB9CithcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlvbigpIHsgbG9nKCJVbmV4cGVj
dGVkIGVycm9yIGV2ZW50IikgfQorYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rp
b24oKSB7IHNldFRpbWVvdXQodGVzdCwgMCkgfQorYXBwbGljYXRpb25DYWNoZS5vbmNhY2hlZCA9
IGZ1bmN0aW9uKCkgeyBzZXRUaW1lb3V0KHRlc3QsIDApIH0KKwordmFyIG9ic29sZXRlID0gZmFs
c2U7CithcHBsaWNhdGlvbkNhY2hlLm9ub2Jzb2xldGUgPSBmdW5jdGlvbigpIHsgb2Jzb2xldGUg
PSB0cnVlOyB9CisKKy8vIElmIHRoZSBtYW5pZmVzdCBzY3JpcHQgaGFwcGVuZWQgdG8gYmUgaW4g
YSB3cm9uZyBzdGF0ZSwgcmVzZXQgaXQuCit2YXIgdGltZW91dElkID0gc2V0VGltZW91dChyZXNl
dE1hbmlmZXN0LCAxMDApOworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5
IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVtb3ZlLWNhY2hl
Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fXwpOYW1lOiBzdm46bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRl
eDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvZmFpbC1vbi11cGRh
dGUucGhwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUvcmVz
b3VyY2VzL2ZhaWwtb24tdXBkYXRlLnBocAkocmV2aXNpb24gNDAwMjQpCisrKyBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9mYWlsLW9uLXVwZGF0ZS5waHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNyArMSw3IEBACiA8P3BocAogcmVxdWlyZV9vbmNlICcuLi8uLi9yZXNv
dXJjZXMvcG9ydGFiaWxpdHlMYXllci5waHAnOwogCi0kdG1wRmlsZSA9IHN5c19nZXRfdGVtcF9k
aXIoKSAuICIvIiAuICJhYm9ydF91cGRhdGVfc3RhdGUiOworJHRtcEZpbGUgPSBzeXNfZ2V0X3Rl
bXBfZGlyKCkgLiAiLyIgLiAiZmFpbF9vbl91cGRhdGVfc3RhdGUiOwogCiBmdW5jdGlvbiBzZXRT
dGF0ZSgkbmV3U3RhdGUsICRmaWxlKQogewpAQCAtMTYsMTggKzE2LDIzIEBAIGZ1bmN0aW9uIGdl
dFN0YXRlKCRmaWxlKQogICAgIHJldHVybiBmaWxlX2dldF9jb250ZW50cygkZmlsZSk7CiB9CiAK
KyRjb21tYW5kID0gJF9HRVRbJ2NvbW1hbmQnXTsKICRzdGF0ZSA9IGdldFN0YXRlKCR0bXBGaWxl
KTsKIAogaGVhZGVyKCJFeHBpcmVzOiBUaHUsIDAxIERlYyAyMDAzIDE2OjAwOjAwIEdNVCIpOwot
aGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1zdG9yZSwgbm8tY2FjaGUsIG11c3QtcmV2YWxpZGF0
ZSIpOworaGVhZGVyKCJDYWNoZS1Db250cm9sOiBuby1jYWNoZSwgbXVzdC1yZXZhbGlkYXRlIik7
CiBoZWFkZXIoIlByYWdtYTogbm8tY2FjaGUiKTsKIAotaWYgKCRzdGF0ZSA9PSAiVW5pbml0aWFs
aXplZCIpIHsKLSAgICBzZXRTdGF0ZSgiTWFuaWZlc3RTZW50IiwgJHRtcEZpbGUpOworaWYgKCRj
b21tYW5kID09ICJyZXNldCIpIHsKKyAgICB1bmxpbmsoJHRtcEZpbGUpOworfSBlbHNlIGlmICgk
Y29tbWFuZCA9PSAiZGVsZXRlIikgeworICAgIHNldFN0YXRlKCJEZWxldGVkIiwgJHRtcEZpbGUp
OworfSBlbHNlIGlmICgkc3RhdGUgPT0gIlVuaW5pdGlhbGl6ZWQiKSB7CiAgICAgaGVhZGVyKCJD
b250ZW50LVR5cGU6IHRleHQvY2FjaGUtbWFuaWZlc3QiKTsKICAgICBwcmludCgiQ0FDSEUgTUFO
SUZFU1RcbiIpOwotfSBlbHNlIGlmICgkc3RhdGUgPT0gIk1hbmlmZXN0U2VudCIpIHsKLSAgICB1
bmxpbmsoJHRtcEZpbGUpOworICAgIHByaW50KCJORVRXT1JLOlxuIik7CisgICAgcHJpbnQoImZh
aWwtb24tdXBkYXRlLnBocD9jb21tYW5kPVxuIik7Cit9IGVsc2UgaWYgKCRzdGF0ZSA9PSAiRGVs
ZXRlZCIpIHsKICAgICBoZWFkZXIoJ0hUVFAvMS4wIDQwNCBOb3QgRm91bmQnKTsKIH0KID8+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9yZW1vdmUtY2Fj
aGUtZnJhbWUtMi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBw
Y2FjaGUvcmVzb3VyY2VzL3JlbW92ZS1jYWNoZS1mcmFtZS0yLmh0bWwJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hlL3Jlc291cmNlcy9yZW1vdmUtY2FjaGUt
ZnJhbWUtMi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACis8aHRtbCBtYW5pZmVz
dD0iZmFpbC1vbi11cGRhdGUucGhwIj4KKzxib2R5PgorPGRpdiBpZD1yZXN1bHQ+PC9kaXY+Cis8
c2NyaXB0PgorZnVuY3Rpb24gbG9nKG1lc3NhZ2UpCit7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoInJlc3VsdCIpLmlubmVySFRNTCArPSBtZXNzYWdlICsgIjxicj4iOworfQorCitmdW5j
dGlvbiB0ZXN0KCkKK3sKKyAgICBsb2coImNhY2hlZCIpCisgICAgbG9nKCJzdGF0dXM9IiArIGFw
cGxpY2F0aW9uQ2FjaGUuc3RhdHVzICsgIiAoZXhwZWN0ZWQgMykiKTsKKyAgICBhcHBsaWNhdGlv
bkNhY2hlLm9ubm91cGRhdGUgPSBudWxsOworCisgICAgLy8gQXNzb2NpYXRlZCB0byBhIGNhY2hl
LCBzbyBsb2FkaW5nIHNob3VsZCBmYWlsCisgICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlcSA9IG5l
dyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAgcmVxLm9wZW4oIkdFVCIsICJlbXB0eS50eHQiLCBm
YWxzZSk7CisgICAgICAgIHJlcS5zZW5kKG51bGwpOworICAgICAgICBhbGVydCgiRkFJTDogWE1M
SHR0cFJlcXVlc3QgZm9yIGFuIHVuY2FjaGVkIHJlc291cmNlIGRpZG4ndCByYWlzZSBhbiBleGNl
cHRpb24iKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgIH0KKyAgICBsb2coIlRoZXJlIHNob3Vs
ZCBiZSBubyBtZXNzYWdlcyBiZWxvdy4iKTsKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2UoImZyYW1l
RG9uZSIsICIqIik7Cit9CisKK2FwcGxpY2F0aW9uQ2FjaGUub251cGRhdGVyZWFkeSA9IGZ1bmN0
aW9uKCkgeyBsb2coInVwZGF0ZXJlYWR5Iik7IGFsZXJ0KCJVbmV4cGVjdGVkIG9udXBkYXRlcmVh
ZHkgZXZlbnQgaW4gZnJhbWUiKSB9CithcHBsaWNhdGlvbkNhY2hlLm9uZXJyb3IgPSBmdW5jdGlv
bigpIHsgbG9nKCJlcnJvciIpOyBhbGVydCgiVW5leHBlY3RlZCBlcnJvciBldmVudCBpbiBmcmFt
ZSIpIH0KK2FwcGxpY2F0aW9uQ2FjaGUub25ub3VwZGF0ZSA9IGZ1bmN0aW9uKCkgeyBsb2coIm5v
dXBkYXRlIik7IGFsZXJ0KCJVbmV4cGVjdGVkIG5vdXBkYXRlIGV2ZW50IGluIGZyYW1lIikgfQor
YXBwbGljYXRpb25DYWNoZS5vbm9ic29sZXRlID0gZnVuY3Rpb24oKSB7IGxvZygib2Jzb2xldGUi
KTsgYWxlcnQoIlVuZXhwZWN0ZWQgb2Jzb2xldGUgZXZlbnQgaW4gZnJhbWUiKSB9CisKK2FwcGxp
Y2F0aW9uQ2FjaGUub25jYWNoZWQgPSB0ZXN0OworCis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRt
bD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMvYXBwY2FjaGUv
cmVzb3VyY2VzL3JlbW92ZS1jYWNoZS1mcmFtZS0yLmh0bWwKX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpOYW1lOiBzdm46
bWltZS10eXBlCiAgICsgdGV4dC9odG1sCgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9h
cHBjYWNoZS9yZXNvdXJjZXMvcmVtb3ZlLWNhY2hlLWZyYW1lLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9hcHBjYWNoZS9yZXNvdXJjZXMvcmVtb3ZlLWNhY2hlLWZy
YW1lLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2FwcGNhY2hl
L3Jlc291cmNlcy9yZW1vdmUtY2FjaGUtZnJhbWUuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw2NyBAQAorPGh0bWwgbWFuaWZlc3Q9ImZhaWwtb24tdXBkYXRlLnBocCI+Cis8Ym9keT4KKzxk
aXYgaWQ9cmVzdWx0PjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQorewor
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhUTUwgKz0gbWVzc2Fn
ZSArICI8YnI+IjsKK30KKworZnVuY3Rpb24gb25PYnNvbGV0ZSgpCit7CisgICAgbG9nKCJvYnNv
bGV0ZSIpCisgICAgbG9nKCJzdGF0dXM9IiArIGFwcGxpY2F0aW9uQ2FjaGUuc3RhdHVzICsgIiAo
ZXhwZWN0ZWQgMikiKTsKKyAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTsKKyAgICBhcHBsaWNh
dGlvbkNhY2hlLm9ub2Jzb2xldGUgPSBmdW5jdGlvbigpIHsgbG9nKCJvYnNvbGV0ZSIpIH0KKyAg
ICBhcHBsaWNhdGlvbkNhY2hlLm9udXBkYXRlcmVhZHkgPSBmdW5jdGlvbigpIHsgbG9nKCJ1cGRh
dGVyZWFkeSIpIH0KKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigp
IHsgbG9nKCJub3VwZGF0ZSIpIH0KKworICAgIC8vIFdlIHN0aWxsIGhhdmUgYSBjYWNoZSwgc28g
bG9hZGluZyBzaG91bGQgZmFpbAorICAgIHRyeSB7CisgICAgICAgIHZhciByZXEgPSBuZXcgWE1M
SHR0cFJlcXVlc3Q7CisgICAgICAgIHJlcS5vcGVuKCJHRVQiLCAiZW1wdHkudHh0IiwgZmFsc2Up
OworICAgICAgICByZXEuc2VuZChudWxsKTsKKyAgICAgICAgYWxlcnQoIkZBSUw6IFhNTEh0dHBS
ZXF1ZXN0IGZvciBhbiB1bmNhY2hlZCByZXNvdXJjZSBkaWRuJ3QgcmFpc2UgYW4gZXhjZXB0aW9u
Iik7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICB9CisgICAgbG9nKCJUaGVyZSBzaG91bGQgYmUg
bm8gbWVzc2FnZXMgYmVsb3cuIik7CisgICAgcGFyZW50LnBvc3RNZXNzYWdlKCJmcmFtZURvbmUg
LSBvYnNvbGV0ZSIsICIqIik7Cit9CisKK2Z1bmN0aW9uIG9uTm9NYW5pZmVzdCgpCit7CisgICAg
aWYgKGFwcGxpY2F0aW9uQ2FjaGUuc3RhdHVzICE9IGFwcGxpY2F0aW9uQ2FjaGUuVU5DQUNIRUQg
JiYgYXBwbGljYXRpb25DYWNoZS5zdGF0dXMgIT0gYXBwbGljYXRpb25DYWNoZS5PQlNPTEVURSkg
eworICAgICAgICB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KG9uTm9NYW5pZmVzdCwgMTAwKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxvZygibm8gY2FsbGJhY2siKTsKKyAgICBjbGVh
clRpbWVvdXQodGltZW91dElkKTsKKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9ub2Jzb2xldGUgPSBm
dW5jdGlvbigpIHsgbG9nKCJvYnNvbGV0ZSIpIH0KKyAgICBhcHBsaWNhdGlvbkNhY2hlLm9udXBk
YXRlcmVhZHkgPSBmdW5jdGlvbigpIHsgbG9nKCJ1cGRhdGVyZWFkeSIpIH0KKyAgICBhcHBsaWNh
dGlvbkNhY2hlLm9ubm91cGRhdGUgPSBmdW5jdGlvbigpIHsgbG9nKCJub3VwZGF0ZSIpIH0KKwor
ICAgIC8vIEVuc3VyZSB0aGF0IHdlIGFyZSBub3QgYXNzb2NpYXRlZCB3aXRoIGEgY2FjaGUuCisg
ICAgdHJ5IHsKKyAgICAgICAgdmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdDsKKyAgICAgICAg
cmVxLm9wZW4oIkdFVCIsICJlbXB0eS50eHQiLCBmYWxzZSk7CisgICAgICAgIHJlcS5zZW5kKG51
bGwpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGFsZXJ0KCJGQUlMOiBYTUxIdHRwUmVx
dWVzdCByYWlzZWQgYW4gZXhjZXB0aW9uLCAiICsgZXgpOworICAgIH0KKyAgICBsb2coIlRoZXJl
IHNob3VsZCBiZSBubyBtZXNzYWdlcyBiZWxvdy4iKTsKKyAgICBwYXJlbnQucG9zdE1lc3NhZ2Uo
ImZyYW1lRG9uZSAtIHRpbWVvdXQiLCAiKiIpOworfQorCithcHBsaWNhdGlvbkNhY2hlLm9udXBk
YXRlcmVhZHkgPSBmdW5jdGlvbigpIHsgbG9nKCJ1cGRhdGVyZWFkeSIpOyBhbGVydCgiVW5leHBl
Y3RlZCB1cGRhdGVyZWFkeSBldmVudCBpbiBmcmFtZSIpIH0KK2FwcGxpY2F0aW9uQ2FjaGUub25l
cnJvciA9IGZ1bmN0aW9uKCkgeyBsb2coImVycm9yIik7IGFsZXJ0KCJVbmV4cGVjdGVkIGVycm9y
IGV2ZW50IGluIGZyYW1lIikgfQorYXBwbGljYXRpb25DYWNoZS5vbm5vdXBkYXRlID0gZnVuY3Rp
b24oKSB7IGxvZygibm91cGRhdGUiKTsgYWxlcnQoIlVuZXhwZWN0ZWQgbm91cGRhdGUgZXZlbnQg
aW4gZnJhbWUiKSB9CithcHBsaWNhdGlvbkNhY2hlLm9uY2FjaGVkID0gZnVuY3Rpb24oKSB7IGxv
ZygiY2FjaGVkIik7IGFsZXJ0KCJVbmV4cGVjdGVkIGNhY2hlZCBldmVudCBpbiBmcmFtZSIpIH0K
KworYXBwbGljYXRpb25DYWNoZS5vbm9ic29sZXRlID0gb25PYnNvbGV0ZTsKKwordmFyIHRpbWVv
dXRJZCA9IHNldFRpbWVvdXQob25Ob01hbmlmZXN0LCAxMDApOworCis8L3NjcmlwdD4KKzwvYm9k
eT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2h0dHAvdGVzdHMv
YXBwY2FjaGUvcmVzb3VyY2VzL3JlbW92ZS1jYWNoZS1mcmFtZS5odG1sCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFt
ZTogc3ZuOm1pbWUtdHlwZQogICArIHRleHQvaHRtbAoK
</data>
<flag name="review"
          id="12826"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>