<?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>111761</bug_id>
          
          <creation_ts>2013-03-07 11:53:53 -0800</creation_ts>
          <short_desc>[BlackBerry] RefCounting ParsedCookie to avoid SegFaults</short_desc>
          <delta_ts>2013-03-07 17:33:15 -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>WebKit BlackBerry</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter>otcheung</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>japhet</cc>
    
    <cc>mifenton</cc>
    
    <cc>rwlbuis</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>850342</commentid>
    <comment_count>0</comment_count>
    <who name="">otcheung</who>
    <bug_when>2013-03-07 11:53:53 -0800</bug_when>
    <thetext>Ref Count ParsedCookie.h to avoid segfaults</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850414</commentid>
    <comment_count>1</comment_count>
      <attachid>192074</attachid>
    <who name="">otcheung</who>
    <bug_when>2013-03-07 13:06:31 -0800</bug_when>
    <thetext>Created attachment 192074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850418</commentid>
    <comment_count>2</comment_count>
      <attachid>192074</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-03-07 13:13:17 -0800</bug_when>
    <thetext>Comment on attachment 192074
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=192074&amp;action=review

&gt; Source/WebCore/platform/blackberry/CookieParser.cpp:193
&gt;          return 0;

Can you use LOG_AND_RETURN here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850448</commentid>
    <comment_count>3</comment_count>
      <attachid>192079</attachid>
    <who name="">otcheung</who>
    <bug_when>2013-03-07 13:35:13 -0800</bug_when>
    <thetext>Created attachment 192079
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850450</commentid>
    <comment_count>4</comment_count>
      <attachid>192079</attachid>
    <who name="Rob Buis">rwlbuis</who>
    <bug_when>2013-03-07 13:39:16 -0800</bug_when>
    <thetext>Comment on attachment 192079
Patch

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850695</commentid>
    <comment_count>5</comment_count>
      <attachid>192079</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 17:33:12 -0800</bug_when>
    <thetext>Comment on attachment 192079
Patch

Clearing flags on attachment: 192079

Committed r145163: &lt;http://trac.webkit.org/changeset/145163&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850696</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-07 17:33:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192074</attachid>
            <date>2013-03-07 13:06:31 -0800</date>
            <delta_ts>2013-03-07 13:35:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111761-20130307160235.patch</filename>
            <type>text/plain</type>
            <size>50968</size>
            <attacher>otcheung</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JiZWRhNzExNTAyYjlm
OTg5Mzc3ZDE1OGJjMDFjNjA5MTNmODcyNC4uYjliOTEzYmMwMGZiNmU1YTMxY2ExMWQyZTNiNzVl
ZWM3NGI2OTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAzLTA3ICBPdHRv
IERlcmVrIENoZXVuZyAgPG90Y2hldW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnld
IFJlZkNvdW50aW5nIFBhcnNlZENvb2tpZSB0byBhdm9pZCBTZWdGYXVsdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTc2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2luZyBuZWNlc3NhcnkgY2hh
bmdlcyB0byByZWYgY291bnQgdGhlIFBhcnNlZENvb2tpZSBvYmplY3QuCisKKyAgICAgICAgVGVz
dGVkIHVzaW5nIHRoZSBvcGVyYSBjb29raWUgdGVzdCBzdWl0ZSBhbmQgdGhlIEJCIEJyb3dzZXIg
Y29va2llIHRlc3Qgc3VpdGUuCisgICAgICAgIFRlc3RlZCB1c2luZyB0aGUgYnJvd3Nlciwgdmlz
aXRpbmcgcG9wdWxhciBzaXRlcyBzdWNoIGFzIGZhY2Vib29rLCByZWRkaXQsIGdvb2dsZSBldGMK
KyAgICAgICAgdG8gZW5zdXJlIGNvb2tpZSBmdW5jdGlvbmFsaXR5IGlzbid0IGNoYW5nZWQuCisK
KyAgICAgICAgKiBsb2FkZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUvQ29va2llRGF0YWJhc2VCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omlu
c2VydCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6dXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjpyZW1v
dmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6OmdldENv
b2tpZXNGcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llRGF0YWJhc2VCYWNr
aW5nU3RvcmU6Omludm9rZUdldENvb2tpZXNXaXRoTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omludm9rZVNlbmRDaGFuZ2VzVG9EYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6YWRkVG9DaGFu
Z2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJh
Y2tpbmdTdG9yZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoQ29va2ll
RGF0YWJhc2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVTb3J0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVNYW5hZ2VyOjpnZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFu
YWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb2tpZU1hbmFnZXI6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2ll
TWFuYWdlcjo6Y2hlY2tBbmRUcmVhdENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVN
YW5hZ2VyOjphZGRDb29raWVUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5hZ2Vy
OjpnZXRCYWNraW5nU3RvcmVDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFn
ZXI6OmZpbmRPckNyZWF0ZUNvb2tpZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5h
Z2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5h
Z2VyOjpjb29raWVMaW1pdENsZWFuVXApOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hcDo6cmVtb3ZlQ29va2llQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWVNYXA6OnJlbW92ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVNYXA6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFw
OjpyZW1vdmVPbGRlc3RDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFwOjpkZWxl
dGVBbGxDb29raWVzQW5kRG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6Omdl
dEFsbENoaWxkQ29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVN
YXAuaDoKKyAgICAgICAgKENvb2tpZU1hcCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVBhcnNlcjo6
cGFyc2VPbmVDb29raWUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFy
c2VyLmg6CisgICAgICAgIChDb29raWVQYXJzZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvUGFyc2VkQ29va2llLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1Bh
cnNlZENvb2tpZS5oOgorICAgICAgICAoUGFyc2VkQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvb2tpZTo6Y3JlYXRlKToKKwogMjAxMy0wMy0wNyAgQW5kcmV5IEx1c2huaWtvdiAg
PGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0FDRV0g
c2V0IGNvcnJlY3QgZm9udApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMTZhM2I2
ZTgxOTQxZDI5M2UyOTVhMmEzODgwZjY1M2VkMTMzMjJjMy4uMTFlYzE4OGNmMzM4ZGNhZWNjZTFj
MDg3YzUwYzQ2YWY3YjdhNzY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTMtMDMtMDcgIE90dG8gRGVyZWsgQ2hldW5nICA8b3RjaGV1bmdAcmlt
LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gUmVmQ291bnRpbmcgUGFyc2VkQ29va2llIHRv
IGF2b2lkIFNlZ0ZhdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTExNzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFraW5nIG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIHJlZi1jb3VudCB0aGUgUGFyc2Vk
Q29va2llIG9iamVjdC4KKworICAgICAgICAqIEFwaS9XZWJDb29raWVKYXIuY3BwOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXMpOgorCiAyMDEzLTAz
LTA2ICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CiAKICAgICAgICAg
W0JsYWNrQmVycnldIFNlbGVjdGlvbiBoYW5kbGVzIGRvbid0IGRyYWcgdG8gZXhwYW5kIGNvcnJl
Y3RseSBmb3IgUlRMIGxhbmd1YWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAppbmRleCA2ZmQ2ZGUyYWZhZjI1
ZmFiN2U1MDUyZmQ3YWRlMzJlMTJjNThmMGIwLi5lOTE5YTFjYTQ5Y2YzZGRiYmFkZWEyZTZhZTFi
ZmUzMjIwMWM5ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxhY2tiZXJy
eS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxh
Y2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKIGJvb2wgZ2V0UmF3Q29va2ll
cyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gTm90ZTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5
IGluc3BlY3RvciBvbmx5LiBObyBuZWVkIHRvIGNoZWNrIGlmIGNvb2tpZSBpcyBlbmFibGVkLgot
ICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiByZXN1bHQ7CisgICAgVmVjdG9yPFJlZlB0cjxQYXJz
ZWRDb29raWU+ID4gcmVzdWx0OwogICAgIGNvb2tpZU1hbmFnZXIoKS5nZXRSYXdDb29raWVzKHJl
c3VsdCwgdXJsLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlc3VsdC5zaXplKCk7IGkrKykKICAgICAgICAgcmVzdWx0W2ldLT5hcHBlbmRXZWJDb3Jl
Q29va2llKHJhd0Nvb2tpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS9Db29raWVEYXRhYmFzZUJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURh
dGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNwcAppbmRleCA5
MDc2MTQ2YTIzYWUzMDIxN2E1ZjI0MDIxYWYxZGQ3MDM2NzFjMDJjLi5mNWE1YmIwMTQ0MGFmNDAz
NDgxOTdjYmI2YjJlMTg4ODQ2MWZlZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNl
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNw
cApAQCAtMTk3LDE5ICsxOTcsMTkgQEAgdm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6
Y2xvc2UoKQogICAgICAgICBtX2RiLmNsb3NlKCk7CiB9CiAKLXZvaWQgQ29va2llRGF0YWJhc2VC
YWNraW5nU3RvcmU6Omluc2VydChjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSkKK3ZvaWQgQ29v
a2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omluc2VydChjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENv
b2tpZT4gY29va2llKQogewogICAgIENvb2tpZUxvZygiQ29va2llQmFja2luZ1N0b3JlIC0gYWRk
aW5nIGluc2VydGluZyBjb29raWUgJXMgdG8gcXVldWUuIiwgY29va2llLT50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIGFkZFRvQ2hhbmdlUXVldWUoY29va2llLCBJbnNlcnQpOwogfQog
Ci12b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjp1cGRhdGUoY29uc3QgUGFyc2VkQ29v
a2llKiBjb29raWUpCit2b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjp1cGRhdGUoY29u
c3QgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IGNvb2tpZSkKIHsKICAgICBDb29raWVMb2coIkNv
b2tpZUJhY2tpbmdTdG9yZSAtIGFkZGluZyB1cGRhdGluZyBjb29raWUgJXMgdG8gcXVldWUuIiwg
Y29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGFkZFRvQ2hhbmdlUXVldWUo
Y29va2llLCBVcGRhdGUpOwogfQogCi12b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjpy
ZW1vdmUoY29uc3QgUGFyc2VkQ29va2llKiBjb29raWUpCit2b2lkIENvb2tpZURhdGFiYXNlQmFj
a2luZ1N0b3JlOjpyZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IGNvb2tpZSkK
IHsKICAgICBDb29raWVMb2coIkNvb2tpZUJhY2tpbmdTdG9yZSAtIGFkZGluZyBkZWxldGluZyBj
b29raWUgJXMgdG8gcXVldWUuIiwgY29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIGFkZFRvQ2hhbmdlUXVldWUoY29va2llLCBEZWxldGUpOwpAQCAtMjUyLDE4ICsyNTIsMTgg
QEAgdm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6aW52b2tlUmVtb3ZlQWxsKCkKICAg
ICB9CiB9CiAKLXZvaWQgQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6OmdldENvb2tpZXNGcm9t
RGF0YWJhc2UoVmVjdG9yPFBhcnNlZENvb2tpZSo+JiBzdGFja09mQ29va2llcywgdW5zaWduZWQg
aW50IGxpbWl0KQordm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6Z2V0Q29va2llc0Zy
b21EYXRhYmFzZShWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiYgc3RhY2tPZkNvb2tpZXMs
IHVuc2lnbmVkIGxpbWl0KQogewogICAgIC8vIEl0IGlzIG5vdCBhIGh1Z2UgcGVyZm9ybWFuY2Ug
aGl0IHRvIHdhaXQgb24gdGhlIHJlcGx5IGhlcmUgYmVjYXVzZSB0aGlzIGlzIG9ubHkgZG9uZSBv
bmNlIGR1cmluZyBzZXR1cCBhbmQgd2hlbiB0dXJuaW5nIG9mZiBwcml2YXRlIG1vZGUuCi0gICAg
VHlwZWRSZXBseUJ1ZmZlcjwgVmVjdG9yPFBhcnNlZENvb2tpZSo+KiA+IHJlcGx5QnVmZmVyKDAp
OworICAgIFR5cGVkUmVwbHlCdWZmZXI8IFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+KiA+
IHJlcGx5QnVmZmVyKDApOwogICAgIGRpc3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVz
c2FnZVdpdGhSZXR1cm4oJkNvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjppbnZva2VHZXRDb29r
aWVzV2l0aExpbWl0LCAmcmVwbHlCdWZmZXIsIHRoaXMsIGxpbWl0KSk7Ci0gICAgVmVjdG9yPFBh
cnNlZENvb2tpZSo+KiBjb29raWVzID0gcmVwbHlCdWZmZXIucG9pbnRlcigpOworICAgIFZlY3Rv
cjxSZWZQdHI8UGFyc2VkQ29va2llPiA+KiBjb29raWVzID0gcmVwbHlCdWZmZXIucG9pbnRlcigp
OwogICAgIGlmIChjb29raWVzKQogICAgICAgICBzdGFja09mQ29va2llcy5zd2FwKCpjb29raWVz
KTsKICAgICBkZWxldGUgY29va2llczsKIH0KIAotVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBDb29r
aWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6aW52b2tlR2V0Q29va2llc1dpdGhMaW1pdCh1bnNpZ25l
ZCBpbnQgbGltaXQpCitWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiogQ29va2llRGF0YWJh
c2VCYWNraW5nU3RvcmU6Omludm9rZUdldENvb2tpZXNXaXRoTGltaXQodW5zaWduZWQgbGltaXQp
CiB7CiAgICAgQVNTRVJUKGlzQ3VycmVudFRocmVhZCgpKTsKIApAQCAtMjkwLDcgKzI5MCw3IEBA
IFZlY3RvcjxQYXJzZWRDb29raWUqPiogQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omludm9r
ZUdldENvb2tpZXNXaXRoTGltaXQodW5zCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IFZlY3RvcjxQYXJzZWRDb29raWUqPiogY29va2llcyA9IG5ldyBWZWN0b3I8UGFyc2VkQ29va2ll
Kj47CisgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4qIGNvb2tpZXMgPSBuZXcgVmVj
dG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID47CiAgICAgd2hpbGUgKHNlbGVjdFN0YXRlbWVudC5z
dGVwKCkgPT0gU1FMUmVzdWx0Um93KSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIGEgcm93IHRvIGZl
dGNoCiAKQEAgLTMwNSw3ICszMDUsNyBAQCBWZWN0b3I8UGFyc2VkQ29va2llKj4qIENvb2tpZURh
dGFiYXNlQmFja2luZ1N0b3JlOjppbnZva2VHZXRDb29raWVzV2l0aExpbWl0KHVucwogICAgICAg
ICBkb3VibGUgY3JlYXRpb25UaW1lID0gc2VsZWN0U3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSg4
KTsKICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gc2VsZWN0U3RhdGVtZW50LmdldENvbHVtblRl
eHQoOSk7CiAKLSAgICAgICAgY29va2llcy0+YXBwZW5kKG5ldyBQYXJzZWRDb29raWUobmFtZSwg
dmFsdWUsIGRvbWFpbiwgcHJvdG9jb2wsIHBhdGgsIGV4cGlyeSwgbGFzdEFjY2Vzc2VkLCBjcmVh
dGlvblRpbWUsIGlzU2VjdXJlLCBpc0h0dHBPbmx5KSk7CisgICAgICAgIGNvb2tpZXMtPmFwcGVu
ZChQYXJzZWRDb29raWU6OmNyZWF0ZShuYW1lLCB2YWx1ZSwgZG9tYWluLCBwcm90b2NvbCwgcGF0
aCwgZXhwaXJ5LCBsYXN0QWNjZXNzZWQsIGNyZWF0aW9uVGltZSwgaXNTZWN1cmUsIGlzSHR0cE9u
bHkpKTsKICAgICB9CiAKICAgICByZXR1cm4gY29va2llczsKQEAgLTM4OSw3ICszODksNyBAQCB2
b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjppbnZva2VTZW5kQ2hhbmdlc1RvRGF0YWJh
c2UoKQogICAgIHNpemVfdCBzaXplT2ZDaGFuZ2UgPSBjaGFuZ2VkQ29va2llcy5zaXplKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplT2ZDaGFuZ2U7IGkrKykgewogICAgICAgICBT
UUxpdGVTdGF0ZW1lbnQqIG1fc3RhdGVtZW50OwotICAgICAgICBjb25zdCBQYXJzZWRDb29raWUg
Y29va2llID0gY2hhbmdlZENvb2tpZXNbaV0uZmlyc3Q7CisgICAgICAgIGNvbnN0IFJlZlB0cjxQ
YXJzZWRDb29raWU+IGNvb2tpZSA9IGNoYW5nZWRDb29raWVzW2ldLmZpcnN0OwogICAgICAgICBV
cGRhdGVQYXJhbWV0ZXIgYWN0aW9uID0gY2hhbmdlZENvb2tpZXNbaV0uc2Vjb25kOwogCiAgICAg
ICAgIGlmIChhY3Rpb24gPT0gRGVsZXRlKSB7CkBAIC0zOTcsOCArMzk3LDggQEAgdm9pZCBDb29r
aWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6aW52b2tlU2VuZENoYW5nZXNUb0RhdGFiYXNlKCkKICAg
ICAgICAgICAgIENvb2tpZUxvZygiQ29va2llQmFja2luZ1N0b3JlIC0gZGVsZXRpbmcgY29va2ll
ICVzLiIsIGNvb2tpZS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICAv
LyBCaW5kcyBhbGwgdGhlIHZhbHVlcwotICAgICAgICAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5k
VGV4dCgxLCBjb29raWUubmFtZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMiwgY29va2ll
LmRvbWFpbigpKQotICAgICAgICAgICAgICAgIHx8IG1fc3RhdGVtZW50LT5iaW5kVGV4dCgzLCBj
b29raWUucGF0aCgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoNCwgY29va2llLnByb3RvY29s
KCkpKSB7CisgICAgICAgICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGNvb2tpZS0+
bmFtZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMiwgY29va2llLT5kb21haW4oKSkKKyAg
ICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMywgY29va2llLT5wYXRoKCkp
IHx8IG1fc3RhdGVtZW50LT5iaW5kVGV4dCg0LCBjb29raWUtPnByb3RvY29sKCkpKSB7CiAgICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYmluZCBjb29raWUgZGF0YSB0byBkZWxldGUi
KTsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlNRTGl0ZSBFcnJvciBNZXNzYWdlOiAlcyIs
IG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNDA2LDE5ICs0MDYsMTkgQEAgdm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9y
ZTo6aW52b2tlU2VuZENoYW5nZXNUb0RhdGFiYXNlKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gVXBkYXRlKSB7Ci0gICAgICAgICAg
ICAgICAgQ29va2llTG9nKCJDb29raWVCYWNraW5nU3RvcmUgLSB1cGRhdGluZyBjb29raWUgJXMu
IiwgY29va2llLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgQ29v
a2llTG9nKCJDb29raWVCYWNraW5nU3RvcmUgLSB1cGRhdGluZyBjb29raWUgJXMuIiwgY29va2ll
LT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fc3RhdGVtZW50
ID0gbV91cGRhdGVTdGF0ZW1lbnQ7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIENvb2tpZUxvZygiQ29va2llQmFja2luZ1N0b3JlIC0gaW5zZXJ0aW5nIGNvb2tpZSAlcy4i
LCBjb29raWUudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBDb29r
aWVMb2coIkNvb2tpZUJhY2tpbmdTdG9yZSAtIGluc2VydGluZyBjb29raWUgJXMuIiwgY29va2ll
LT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fc3RhdGVtZW50
ID0gbV9pbnNlcnRTdGF0ZW1lbnQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEJp
bmRzIGFsbCB0aGUgdmFsdWVzCi0gICAgICAgICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRUZXh0
KDEsIGNvb2tpZS5uYW1lKCkpIHx8IG1fc3RhdGVtZW50LT5iaW5kVGV4dCgyLCBjb29raWUudmFs
dWUoKSkKLSAgICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMywgY29va2ll
LmRvbWFpbigpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoNCwgY29va2llLnBhdGgoKSkKLSAg
ICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZERvdWJsZSg1LCBjb29raWUuZXhwaXJ5
KCkpIHx8IG1fc3RhdGVtZW50LT5iaW5kRG91YmxlKDYsIGNvb2tpZS5sYXN0QWNjZXNzZWQoKSkK
LSAgICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZEludDY0KDcsIGNvb2tpZS5pc1Nl
Y3VyZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZEludDY0KDgsIGNvb2tpZS5pc0h0dHBPbmx5KCkp
Ci0gICAgICAgICAgICAgICAgfHwgbV9zdGF0ZW1lbnQtPmJpbmREb3VibGUoOSwgY29va2llLmNy
ZWF0aW9uVGltZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMTAsIGNvb2tpZS5wcm90b2Nv
bCgpKSkgeworICAgICAgICAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBjb29raWUt
Pm5hbWUoKSkgfHwgbV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGNvb2tpZS0+dmFsdWUoKSkKKyAg
ICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMywgY29va2llLT5kb21haW4o
KSkgfHwgbV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDQsIGNvb2tpZS0+cGF0aCgpKQorICAgICAgICAg
ICAgICAgIHx8IG1fc3RhdGVtZW50LT5iaW5kRG91YmxlKDUsIGNvb2tpZS0+ZXhwaXJ5KCkpIHx8
IG1fc3RhdGVtZW50LT5iaW5kRG91YmxlKDYsIGNvb2tpZS0+bGFzdEFjY2Vzc2VkKCkpCisgICAg
ICAgICAgICAgICAgfHwgbV9zdGF0ZW1lbnQtPmJpbmRJbnQ2NCg3LCBjb29raWUtPmlzU2VjdXJl
KCkpIHx8IG1fc3RhdGVtZW50LT5iaW5kSW50NjQoOCwgY29va2llLT5pc0h0dHBPbmx5KCkpCisg
ICAgICAgICAgICAgICAgfHwgbV9zdGF0ZW1lbnQtPmJpbmREb3VibGUoOSwgY29va2llLT5jcmVh
dGlvblRpbWUoKSkgfHwgbV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDEwLCBjb29raWUtPnByb3RvY29s
KCkpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYmluZCBjb29raWUgZGF0
YSB0byBzYXZlIik7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgRXJyb3IgTWVz
c2FnZTogJXMiLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQzOSwxMSArNDM5LDEwIEBAIHZvaWQgQ29va2llRGF0YWJhc2VC
YWNraW5nU3RvcmU6Omludm9rZVNlbmRDaGFuZ2VzVG9EYXRhYmFzZSgpCiAgICAgQ29va2llTG9n
KCJDb29raWVCYWNraW5nU3RvcmUgLSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwogfQogCi12b2lk
IENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjphZGRUb0NoYW5nZVF1ZXVlKGNvbnN0IFBhcnNl
ZENvb2tpZSogY2hhbmdlZENvb2tpZSwgVXBkYXRlUGFyYW1ldGVyIGFjdGlvblBhcmFtKQordm9p
ZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6YWRkVG9DaGFuZ2VRdWV1ZShjb25zdCBQYXNz
UmVmUHRyPFBhcnNlZENvb2tpZT4gY2hhbmdlZENvb2tpZSwgVXBkYXRlUGFyYW1ldGVyIGFjdGlv
blBhcmFtKQogewogICAgIEFTU0VSVCghY2hhbmdlZENvb2tpZS0+aXNTZXNzaW9uKCkpOwotICAg
IFBhcnNlZENvb2tpZSBjb29raWVDb3B5KGNoYW5nZWRDb29raWUpOwotICAgIENvb2tpZUFjdGlv
biBhY3Rpb24oY29va2llQ29weSwgYWN0aW9uUGFyYW0pOworICAgIENvb2tpZUFjdGlvbiBhY3Rp
b24oY2hhbmdlZENvb2tpZSwgYWN0aW9uUGFyYW0pOwogICAgIHsKICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgbV9jaGFuZ2VkQ29va2llcy5hcHBlbmQoYWN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
RGF0YWJhc2VCYWNraW5nU3RvcmUvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUv
Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUuaAppbmRleCA4ODM0ZjRlZjM0YmRlMzM0YTE5NDFh
ZjEwNTQzZjExNGE0MzljNGIxLi43NWMwYjc3MTg5ODA0MDgzYTE4N2Q0YmE3YzVkYzAzYmU4MjQ5
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZURhdGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdT
dG9yZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCkBAIC01MCwxNCArNTAsMTQgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgY29va2llSmFyKTsKIAotICAgIHZv
aWQgaW5zZXJ0KGNvbnN0IFBhcnNlZENvb2tpZSopOwotICAgIHZvaWQgdXBkYXRlKGNvbnN0IFBh
cnNlZENvb2tpZSopOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFBhcnNlZENvb2tpZSopOworICAg
IHZvaWQgaW5zZXJ0KGNvbnN0IFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPik7CisgICAgdm9pZCB1
cGRhdGUoY29uc3QgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+KTsKKyAgICB2b2lkIHJlbW92ZShj
b25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4pOwogCiAgICAgdm9pZCByZW1vdmVBbGwoKTsK
IAogICAgIC8vIElmIGEgbGltaXQgaXMgbm90IHNldCwgdGhlIG1ldGhvZCB3aWxsIHJldHVybiBh
bGwgY29va2llcyBpbiB0aGUgZGF0YWJhc2UKLSAgICB2b2lkIGdldENvb2tpZXNGcm9tRGF0YWJh
c2UoVmVjdG9yPFBhcnNlZENvb2tpZSo+JiBzdGFja09mQ29va2llcywgdW5zaWduZWQgaW50IGxp
bWl0ID0gMCk7CisgICAgdm9pZCBnZXRDb29raWVzRnJvbURhdGFiYXNlKFZlY3RvcjxSZWZQdHI8
UGFyc2VkQ29va2llPiA+JiBzdGFja09mQ29va2llcywgdW5zaWduZWQgbGltaXQgPSAwKTsKIAog
ICAgIHZvaWQgb3BlbkFuZExvYWREYXRhYmFzZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiBj
b29raWVKYXIpOwogICAgIHZvaWQgc2VuZENoYW5nZXNUb0RhdGFiYXNlU3luY2hyb25vdXNseSgp
OwpAQCAtODEsMTggKzgxLDE4IEBAIHByaXZhdGU6CiAgICAgQ29va2llRGF0YWJhc2VCYWNraW5n
U3RvcmUoKTsKICAgICB+Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUoKTsKIAotICAgIHZvaWQg
YWRkVG9DaGFuZ2VRdWV1ZShjb25zdCBQYXJzZWRDb29raWUqIGNoYW5nZWRDb29raWUsIFVwZGF0
ZVBhcmFtZXRlciBhY3Rpb25QYXJhbSk7CisgICAgdm9pZCBhZGRUb0NoYW5nZVF1ZXVlKGNvbnN0
IFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBjaGFuZ2VkQ29va2llLCBVcGRhdGVQYXJhbWV0ZXIg
YWN0aW9uUGFyYW0pOwogICAgIHZvaWQgc2VuZENoYW5nZXNUb0RhdGFiYXNlKGludCBpbnRlcnZh
bCk7CiAgICAgdm9pZCBzZW5kQ2hhbmdlc1RvRGF0YWJhc2VUaW1lckZpcmVkKCk7CiAKICAgICB2
b2lkIGludm9rZU9wZW4oY29uc3QgU3RyaW5nJiBjb29raWVKYXIpOwogICAgIHZvaWQgaW52b2tl
UmVtb3ZlQWxsKCk7Ci0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBpbnZva2VHZXRDb29raWVz
V2l0aExpbWl0KHVuc2lnbmVkIGludCBsaW1pdCk7CisgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRD
b29raWU+ID4qIGludm9rZUdldENvb2tpZXNXaXRoTGltaXQodW5zaWduZWQgbGltaXQpOwogICAg
IHZvaWQgaW52b2tlU2VuZENoYW5nZXNUb0RhdGFiYXNlKCk7CiAKICAgICB2b2lkIGNsb3NlKCk7
CiAKLSAgICB0eXBlZGVmIHBhaXI8Y29uc3QgUGFyc2VkQ29va2llLCBVcGRhdGVQYXJhbWV0ZXI+
IENvb2tpZUFjdGlvbjsKKyAgICB0eXBlZGVmIHBhaXI8Y29uc3QgUGFzc1JlZlB0cjxQYXJzZWRD
b29raWU+LCBVcGRhdGVQYXJhbWV0ZXI+IENvb2tpZUFjdGlvbjsKICAgICBWZWN0b3I8Q29va2ll
QWN0aW9uPiBtX2NoYW5nZWRDb29raWVzOwogICAgIE11dGV4IG1fbXV0ZXg7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmlu
ZGV4IDBiYmYyNzdhZTM0ODBhODY1ZmMxMTE2NTc4NGI0MGE1YzIxYzM4NWQuLmIyNDZkMjg5NWYw
YWFhMWJiMTJiOWJmZDU0MDZkOTVjZGIwN2Q0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIENvb2tpZU1hbmFnZXI6On5Db29raWVNYW5hZ2VyKCkKIH0KIAogLy8gU29ydGluZyBsb2dp
YyBpcyBiYXNlZCBvbiBDb29raWUgU3BlYyBSRkM2MjY1LCBzZWN0aW9uIDUuNC4yCi1zdGF0aWMg
Ym9vbCBjb29raWVTb3J0ZXIoUGFyc2VkQ29va2llKiBhLCBQYXJzZWRDb29raWUqIGIpCitzdGF0
aWMgYm9vbCBjb29raWVTb3J0ZXIoUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IGEsIFBhc3NSZWZQ
dHI8UGFyc2VkQ29va2llPiBiKQogewogICAgIGlmIChhLT5wYXRoKCkubGVuZ3RoKCkgPT0gYi0+
cGF0aCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gYS0+Y3JlYXRpb25UaW1lKCkgPCBiLT5j
cmVhdGlvblRpbWUoKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0
ZQogCiAgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gU2V0dGluZyBjb29raWVzIik7CiAg
ICAgQ29va2llUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBj
b29raWVzID0gcGFyc2VyLnBhcnNlKHZhbHVlKTsKKyAgICBWZWN0b3I8UmVmUHRyPFBhcnNlZENv
b2tpZT4gPiBjb29raWVzID0gcGFyc2VyLnBhcnNlKHZhbHVlKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY29va2llcy5zaXplKCk7ICsraSkgewogICAgICAgICBCYWNraW5nU3RvcmVS
ZW1vdmFsUG9saWN5IHRyZWF0bWVudCA9IG1fcHJpdmF0ZU1vZGUgPyBEb05vdFJlbW92ZUZyb21C
YWNraW5nU3RvcmUgOiBSZW1vdmVGcm9tQmFja2luZ1N0b3JlOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IHZvaWQgQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBjb29raWVzLCBDCiAgICAgQ29va2llUGFyc2VyIHBhcnNlcih1cmwpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29va2llcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHRyZWF0bWVudCA9IG1fcHJpdmF0ZU1vZGUgPyBE
b05vdFJlbW92ZUZyb21CYWNraW5nU3RvcmUgOiBSZW1vdmVGcm9tQmFja2luZ1N0b3JlOwotICAg
ICAgICBpZiAoUGFyc2VkQ29va2llKiBwYXJzZWRDb29raWUgPSBwYXJzZXIucGFyc2VPbmVDb29r
aWUoY29va2llc1tpXSkpCisgICAgICAgIGlmIChSZWZQdHI8UGFyc2VkQ29va2llPiBwYXJzZWRD
b29raWUgPSBwYXJzZXIucGFyc2VPbmVDb29raWUoY29va2llc1tpXSkpCiAgICAgICAgICAgICBj
aGVja0FuZFRyZWF0Q29va2llKHBhcnNlZENvb2tpZSwgdHJlYXRtZW50LCBmaWx0ZXIpOwogICAg
IH0KIH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBTdHJpbmcgQ29va2llTWFuYWdlcjo6Z2V0Q29va2ll
KGNvbnN0IEtVUkwmIHVybCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKICAgICBpZiAoIW1f
c3luY2VkV2l0aERhdGFiYXNlICYmICFtX3ByaXZhdGVNb2RlKQogICAgICAgICBtX2Nvb2tpZUJh
Y2tpbmdTdG9yZS0+b3BlbkFuZExvYWREYXRhYmFzZVN5bmNocm9ub3VzbHkoY29va2llSmFyKCkp
OwogCi0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+IHJhd0Nvb2tpZXM7CisgICAgVmVjdG9yPFJl
ZlB0cjxQYXJzZWRDb29raWU+ID4gcmF3Q29va2llczsKICAgICByYXdDb29raWVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc19tYXhDb29raWVDb3VudFBlckhvc3QpOwogCiAgICAgLy8gUmV0cmll
dmUgY29va2llcyByZWxhdGVkIHRvIHRoaXMgdXJsCkBAIC0xOTIsMTIgKzE5MiwxMiBAQCBTdHJp
bmcgQ29va2llTWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCkKIAogICAg
IENvb2tpZUxvZygiQ29va2llTWFuYWdlciAtIGdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29va2ll
c1xuIik7CiAKLSAgICBWZWN0b3I8UGFyc2VkQ29va2llKj4gY29va2llQ2FuZGlkYXRlczsKKyAg
ICBWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiBjb29raWVDYW5kaWRhdGVzOwogICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBpdCA9IG1fbWFuYWdlck1h
cC5iZWdpbigpOyBpdCAhPSBtX21hbmFnZXJNYXAuZW5kKCk7ICsraXQpCiAgICAgICAgIGl0LT52
YWx1ZS0+Z2V0QWxsQ2hpbGRDb29raWVzKCZjb29raWVDYW5kaWRhdGVzKTsKIAogICAgIFN0cmlu
ZyByZXN1bHQ7Ci0gICAgUGFyc2VkQ29va2llKiBjb29raWUgPSAwOworICAgIFJlZlB0cjxQYXJz
ZWRDb29raWU+IGNvb2tpZSA9IDA7CiAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjx0YWJsZSBz
dHlsZT1cIndvcmQtd3JhcDpicmVhay13b3JkXCIgY2VsbFNwYWNpbmc9XCIwXCIgY2VsbFBhZGRp
bmc9XCIwXCIgYm9yZGVyPVwiMVwiPjx0cj48dGg+RG9tYWluPC90aD48dGg+UGF0aDwvdGg+PHRo
PlByb3RvY29sPC90aD48dGg+TmFtZTwvdGg+PHRoPlZhbHVlPC90aD48dGg+U2VjdXJlPC90aD48
dGg+SHR0cE9ubHk8L3RoPjx0aD5TZXNzaW9uPC90aD48L3RyPiIpKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvb2tpZUNhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29v
a2llID0gY29va2llQ2FuZGlkYXRlc1tpXTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBTdHJpbmcgQ29v
a2llTWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OmdldFJhd0Nvb2tpZXMoVmVjdG9yPFBh
cnNlZENvb2tpZSo+ICZzdGFja09mQ29va2llcywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29v
a2llRmlsdGVyIGZpbHRlcikgY29uc3QKK3ZvaWQgQ29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2ll
cyhWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiAmc3RhY2tPZkNvb2tpZXMsIGNvbnN0IEtV
UkwmIHJlcXVlc3RVUkwsIENvb2tpZUZpbHRlciBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgLy8gRm9y
Y2UgYSBzeW5jIGxvYWQgb2YgdGhlIGRhdGFiYXNlCiAgICAgaWYgKCFtX3N5bmNlZFdpdGhEYXRh
YmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIENvb2tpZU1h
bmFnZXI6OmdldFJhd0Nvb2tpZXMoVmVjdG9yPFBhcnNlZENvb2tpZSo+ICZzdGFja09mQ29va2ll
cywgY29uc3QgSwogICAgIGNvbnN0IGJvb2wgc3BlY2lhbENhc2VGb3JXZWJXb3JrcyA9IGludmFs
aWRTY2hlbWUgJiYgbV9zaG91bGREdW1wQWxsQ29va2llczsKICAgICBjb25zdCBib29sIGlzQ29u
bmVjdGlvblNlY3VyZSA9IHJlcXVlc3RVUkwucHJvdG9jb2xJcygiaHR0cHMiKSB8fCByZXF1ZXN0
VVJMLnByb3RvY29sSXMoIndzcyIpIHx8IHNwZWNpYWxDYXNlRm9yV2ViV29ya3M7CiAKLSAgICBW
ZWN0b3I8UGFyc2VkQ29va2llKj4gY29va2llQ2FuZGlkYXRlczsKKyAgICBWZWN0b3I8UmVmUHRy
PFBhcnNlZENvb2tpZT4gPiBjb29raWVDYW5kaWRhdGVzOwogICAgIFZlY3RvcjxDb29raWVNYXAq
PiBwcm90b2NvbHNUb1NlYXJjaDsKIAogICAgIC8vIFNwZWNpYWwgQ2FzZTogSWYgYSBzZXJ2ZXIg
c2V0cyBhICJzZWN1cmUiIGNvb2tpZSBvdmVyIGEgbm9uLXNlY3VyZSBjaGFubmVsIGFuZCB0cmll
cyB0byBhY2Nlc3MgdGhlIGNvb2tpZQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgQ29va2llTWFu
YWdlcjo6Z2V0UmF3Q29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4gJnN0YWNrT2ZDb29raWVz
LCBjb25zdCBLCiAgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gdGhlcmUgYXJlICVkIGNv
b2tpZXMgaW4gY2FuZGlkYXRlXG4iLCBjb29raWVDYW5kaWRhdGVzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZUNhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgUGFyc2VkQ29va2llKiBjb29raWUgPSBjb29raWVDYW5kaWRhdGVzW2ldOworICAgICAg
ICBSZWZQdHI8UGFyc2VkQ29va2llPiBjb29raWUgPSBjb29raWVDYW5kaWRhdGVzW2ldOwogCiAg
ICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgcGF0aC1tYXRjaGVzIHJ1bGVzIGluIFJGQzYyNjUs
IHNlY3Rpb24gNS4xLjQsCiAgICAgICAgIC8vIHdlIHNob3VsZCBhZGQgYSAnLycgYXQgdGhlIGVu
ZCBvZiBjb29raWUtcGF0aCBmb3IgY29tcGFyaXNvbiBpZiB0aGUgY29va2llLXBhdGggaXMgbm90
IGVuZCB3aXRoICcvJy4KQEAgLTM1NSwxNyArMzU1LDE2IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6
c2V0Q29va2llSmFyKGNvbnN0IGNoYXIqIGZpbGVOYW1lKQogICAgIG1fY29va2llQmFja2luZ1N0
b3JlLT5vcGVuKG1fY29va2llSmFyRmlsZU5hbWUpOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6
OmNoZWNrQW5kVHJlYXRDb29raWUoUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tp
bmdTdG9yZVJlbW92YWxQb2xpY3kgcG9zdFRvQmFja2luZ1N0b3JlLCBDb29raWVGaWx0ZXIgZmls
dGVyKQordm9pZCBDb29raWVNYW5hZ2VyOjpjaGVja0FuZFRyZWF0Q29va2llKFBhc3NSZWZQdHI8
UGFyc2VkQ29va2llPiBwcnBDYW5kaWRhdGVDb29raWUsIEJhY2tpbmdTdG9yZVJlbW92YWxQb2xp
Y3kgcG9zdFRvQmFja2luZ1N0b3JlLCBDb29raWVGaWx0ZXIgZmlsdGVyKQogeworICAgIFJlZlB0
cjxQYXJzZWRDb29raWU+IGNhbmRpZGF0ZUNvb2tpZSA9IHBycENhbmRpZGF0ZUNvb2tpZTsKICAg
ICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBjaGVja0FuZFRyZWF0Q29va2llIC0gcHJvY2Vz
c2luZyB1cmwgd2l0aCBkb21haW4gLSAlcyAmIHByb3RvY29sICVzXG4iLCBjYW5kaWRhdGVDb29r
aWUtPmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGNhbmRpZGF0ZUNvb2tpZS0+cHJvdG9jb2woKS51
dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIERlbGV0ZSBpbnZhbGlkIGNvb2tpZXM6CiAgICAgLy8g
MSkgQSBjb29raWUgd2hpY2ggaXMgbm90IGZyb20gaHR0cCBzaG91bGRuJ3QgaGF2ZSBhIGh0dHBP
bmx5IHByb3BlcnR5LgogICAgIC8vIDIpIENvb2tpZXMgY29taW5nIGZyb20gc2NoZW1lcyB0aGF0
IHdlIGRvIG5vdCBzdXBwb3J0IGFuZCB0aGUgc3BlY2lhbCBmbGFnIGlzbid0IG9uCi0gICAgaWYg
KChmaWx0ZXIgPT0gTm9IdHRwT25seUNvb2tpZSAmJiBjYW5kaWRhdGVDb29raWUtPmlzSHR0cE9u
bHkoKSkgfHwgKHNob3VsZElnbm9yZVNjaGVtZShjYW5kaWRhdGVDb29raWUtPnByb3RvY29sKCkp
ICYmICFtX3Nob3VsZER1bXBBbGxDb29raWVzKSkgewotICAgICAgICBkZWxldGUgY2FuZGlkYXRl
Q29va2llOworICAgIGlmICgoZmlsdGVyID09IE5vSHR0cE9ubHlDb29raWUgJiYgY2FuZGlkYXRl
Q29va2llLT5pc0h0dHBPbmx5KCkpIHx8IChzaG91bGRJZ25vcmVTY2hlbWUoY2FuZGlkYXRlQ29v
a2llLT5wcm90b2NvbCgpKSAmJiAhbV9zaG91bGREdW1wQWxsQ29va2llcykpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CiAKICAgICBjb25zdCBib29sIGlnbm9yZURvbWFpbiA9IChjYW5kaWRhdGVD
b29raWUtPnByb3RvY29sKCkgPT0gImZpbGUiIHx8IGNhbmRpZGF0ZUNvb2tpZS0+cHJvdG9jb2wo
KSA9PSAibG9jYWwiKTsKIApAQCAtMzk5LDcgKzM5OCw3IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6
Y2hlY2tBbmRUcmVhdENvb2tpZShQYXJzZWRDb29raWUqIGNhbmRpZGF0ZUNvb2tpZSwgQmFja2lu
Z1N0CiAgICAgLy8gSWYgcHJvdG9jb2wgc3VwcG9ydCBkb21haW4sIHdlIGhhdmUgdG8gdHJhdmVy
c2UgdGhlIGRvbWFpbiB0cmVlIHRvIGZpbmQgdGhlIHJpZ2h0CiAgICAgLy8gY29va2llTWFwIHRv
IGhhbmRsZSB3aXRoCiAgICAgaWYgKCFpZ25vcmVEb21haW4pCi0gICAgICAgIGN1ck1hcCA9IGZp
bmRPckNyZWF0ZUNvb2tpZU1hcChjdXJNYXAsICpjYW5kaWRhdGVDb29raWUpOworICAgICAgICBj
dXJNYXAgPSBmaW5kT3JDcmVhdGVDb29raWVNYXAoY3VyTWFwLCBjYW5kaWRhdGVDb29raWUpOwog
CiAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSB0aGUgcHJvcGVyIG1hcCBmb3IgdGhpcyBjb29raWUs
IHdlIGNhbiBtb2RpZnkgaXQKICAgICAvLyBJZiBjb29raWUgZG9lcyBub3QgZXhpc3QgYW5kIGhh
cyBleHBpcmVkLCBkZWxldGUgaXQKQEAgLTQxMywzMiArNDEyLDI3IEBAIHZvaWQgQ29va2llTWFu
YWdlcjo6Y2hlY2tBbmRUcmVhdENvb2tpZShQYXJzZWRDb29raWUqIGNhbmRpZGF0ZUNvb2tpZSwg
QmFja2luZ1N0CiAgICAgICAgICAgICBtX2Nvb2tpZUJhY2tpbmdTdG9yZS0+cmVtb3ZlKGNhbmRp
ZGF0ZUNvb2tpZSk7CiAgICAgICAgIGVsc2UgaWYgKGN1ck1hcCkgewogICAgICAgICAgICAgLy8g
UmVtb3ZlQ29va2llIHdpbGwgcmV0dXJuIDAgaWYgdGhlIGNvb2tpZSBkb2Vzbid0IGV4aXN0Lgot
ICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1vdmVDb29raWUo
Y2FuZGlkYXRlQ29va2llLCBmaWx0ZXIpOworICAgICAgICAgICAgUmVmUHRyPFBhcnNlZENvb2tp
ZT4gZXhwaXJlZCA9IGN1ck1hcC0+cmVtb3ZlQ29va2llKGNhbmRpZGF0ZUNvb2tpZSwgZmlsdGVy
KTsKICAgICAgICAgICAgIC8vIENvb2tpZSBpcyB1c2VsZXNzLCBSZW1vdmUgdGhlIGNvb2tpZSBm
cm9tIHRoZSBiYWNraW5nc3RvcmUgaWYgaXQgZXhpc3RzLgogICAgICAgICAgICAgLy8gQmFja3Vw
IGNoZWNrIGZvciBCYWNraW5nU3RvcmVDb29raWVFbnRyeSBpbmNhc2Ugc29tZW9uZSBpbmNvcnJl
Y3RseSB1c2VzIHRoaXMgZW51bS4KICAgICAgICAgICAgIGlmIChleHBpcmVkICYmIHBvc3RUb0Jh
Y2tpbmdTdG9yZSAhPSBCYWNraW5nU3RvcmVDb29raWVFbnRyeSAmJiAhZXhwaXJlZC0+aXNTZXNz
aW9uKCkpIHsKICAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBleHBp
cmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGluZyBmcm9tIGRiIik7CiAgICAgICAgICAg
ICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnJlbW92ZShleHBpcmVkKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOwotCi0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgZGVsZXRlIGNhbmRpZGF0ZUNvb2tpZTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChjdXJNYXApOwogICAgICAgICBhZGRDb29raWVUb01hcChjdXJNYXAsIGNh
bmRpZGF0ZUNvb2tpZSwgcG9zdFRvQmFja2luZ1N0b3JlLCBmaWx0ZXIpOwogICAgIH0KIH0KIAot
dm9pZCBDb29raWVNYW5hZ2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwg
UGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tpbmdTdG9yZVJlbW92YWxQb2xpY3kg
cG9zdFRvQmFja2luZ1N0b3JlLCBDb29raWVGaWx0ZXIgZmlsdGVyKQordm9pZCBDb29raWVNYW5h
Z2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwgUGFzc1JlZlB0cjxQYXJz
ZWRDb29raWU+IHBycENhbmRpZGF0ZUNvb2tpZSwgQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSBw
b3N0VG9CYWNraW5nU3RvcmUsIENvb2tpZUZpbHRlciBmaWx0ZXIpCiB7Ci0gICAgUGFyc2VkQ29v
a2llKiByZXBsYWNlZENvb2tpZSA9IDA7Ci0KLSAgICBpZiAoIXRhcmdldE1hcC0+YWRkT3JSZXBs
YWNlQ29va2llKGNhbmRpZGF0ZUNvb2tpZSwgJnJlcGxhY2VkQ29va2llLCBmaWx0ZXIpKSB7Cisg
ICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gcmVwbGFjZWRDb29raWUgPSAwOworICAgIFJlZlB0cjxQ
YXJzZWRDb29raWU+IGNhbmRpZGF0ZUNvb2tpZSA9IHBycENhbmRpZGF0ZUNvb2tpZTsKIAorICAg
IGlmICghdGFyZ2V0TWFwLT5hZGRPclJlcGxhY2VDb29raWUoY2FuZGlkYXRlQ29va2llLCByZXBs
YWNlZENvb2tpZSwgZmlsdGVyKSkgewogICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIg
LSByZWplY3RpbmcgbmV3IGNvb2tpZSAtICVzLlxuIiwgY2FuZGlkYXRlQ29va2llLT50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgICAgIGRlbGV0ZSBjYW5kaWRhdGVDb29raWU7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NywxMyArNDYxLDEyIEBAIHZvaWQgQ29va2ll
TWFuYWdlcjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tp
ZSogY2FuZGlkYXRlCiAgICAgICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPmluc2Vy
dChjYW5kaWRhdGVDb29raWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGRl
bGV0ZSByZXBsYWNlZENvb2tpZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIENvb2tp
ZUxvZygiQ29va2llTWFuYWdlciAtIGFkZGluZyBuZXcgY29va2llIC0gJXMuXG4iLCBjYW5kaWRh
dGVDb29raWUtPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBQYXJzZWRDb29raWUq
IG9sZGVzdENvb2tpZSA9IDA7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gb2xkZXN0Q29va2ll
ID0gMDsKICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIHRoZSBwZXIgY29va2ll
IGRvbWFpbiBsaW1pdC4KICAgICAvLyBJZiB0aGF0IGlzIG5vdCB0cnVlLCB3ZSBjaGVjayBpZiB0
aGUgZ2xvYmFsIGxpbWl0IGhhcyBiZWVuIHJlYWNoZWQgaWYgYmFja2luZ3N0b3JlIG1vZGUgaXMg
b24KICAgICAvLyBUd28gcG9pbnRzOgpAQCAtNTAyLDggKzQ5NSw2IEBAIHZvaWQgQ29va2llTWFu
YWdlcjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSog
Y2FuZGlkYXRlCiAgICAgICAgIGlmICghY2FuZGlkYXRlQ29va2llLT5pc1Nlc3Npb24oKSkKICAg
ICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5pbnNlcnQoY2FuZGlkYXRlQ29va2llKTsK
ICAgICB9Ci0gICAgaWYgKG9sZGVzdENvb2tpZSkKLSAgICAgICAgZGVsZXRlIG9sZGVzdENvb2tp
ZTsKIH0KIAogdm9pZCBDb29raWVNYW5hZ2VyOjpnZXRCYWNraW5nU3RvcmVDb29raWVzKCkKQEAg
LTUxNiwxMSArNTA3LDExIEBAIHZvaWQgQ29va2llTWFuYWdlcjo6Z2V0QmFja2luZ1N0b3JlQ29v
a2llcygpCiAgICAgaWYgKG1fY291bnQpCiAgICAgICAgIHJlbW92ZUFsbENvb2tpZXMoRG9Ob3RS
ZW1vdmVGcm9tQmFja2luZ1N0b3JlKTsKIAotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBjb29r
aWVzOworICAgIFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+IGNvb2tpZXM7CiAgICAgbV9j
b29raWVCYWNraW5nU3RvcmUtPmdldENvb2tpZXNGcm9tRGF0YWJhc2UoY29va2llcyk7CiAgICAg
Q29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gQmFja2luZ3N0b3JlIGhhcyAlZCBjb29raWVzLCBs
b2FkaW5nIHRoZW0gaW4gbWVtb3J5IG5vdyIsIGNvb2tpZXMuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGFyc2VkQ29v
a2llKiBuZXdDb29raWUgPSBjb29raWVzW2ldOworICAgICAgICBSZWZQdHI8UGFyc2VkQ29va2ll
PiBuZXdDb29raWUgPSBjb29raWVzW2ldOwogCiAgICAgICAgIC8vIFRoZSBJUCBmbGFnIGlzIG5v
dCBwZXJzaXN0ZWQgaW4gdGhlIGRhdGFiYXNlLgogICAgICAgICBpZiAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmlzSVBBZGRyZXNzKG5ld0Nvb2tpZS0+ZG9tYWluKCkudXRmOCgpLmRhdGEoKSkpCkBA
IC01NTIsMTYgKzU0MywxNiBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OnNldFByaXZhdGVNb2RlKGJv
b2wgcHJpdmF0ZU1vZGUpCiAgICAgICAgIGdldEJhY2tpbmdTdG9yZUNvb2tpZXMoKTsKIH0KIAot
Q29va2llTWFwKiBDb29raWVNYW5hZ2VyOjpmaW5kT3JDcmVhdGVDb29raWVNYXAoQ29va2llTWFw
KiBwcm90b2NvbE1hcCwgY29uc3QgUGFyc2VkQ29va2llJiBjYW5kaWRhdGVDb29raWUpCitDb29r
aWVNYXAqIENvb2tpZU1hbmFnZXI6OmZpbmRPckNyZWF0ZUNvb2tpZU1hcChDb29raWVNYXAqIHBy
b3RvY29sTWFwLCBjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gY2FuZGlkYXRlQ29va2ll
KQogewogICAgIC8vIEV4cGxvZGUgdGhlIGRvbWFpbiB3aXRoIHRoZSAnLicgZGVsaW1pdGVyCiAg
ICAgVmVjdG9yPFN0cmluZz4gZGVsaW1pdGVkSG9zdDsKIAogICAgIC8vIElmIHRoZSBkb21haW4g
aXMgYW4gSVAgYWRkcmVzcywgZG9uJ3Qgc3BsaXQgaXQuCi0gICAgaWYgKGNhbmRpZGF0ZUNvb2tp
ZS5kb21haW5Jc0lQQWRkcmVzcygpKQotICAgICAgICBkZWxpbWl0ZWRIb3N0LmFwcGVuZChjYW5k
aWRhdGVDb29raWUuZG9tYWluKCkpOworICAgIGlmIChjYW5kaWRhdGVDb29raWUtPmRvbWFpbklz
SVBBZGRyZXNzKCkpCisgICAgICAgIGRlbGltaXRlZEhvc3QuYXBwZW5kKGNhbmRpZGF0ZUNvb2tp
ZS0+ZG9tYWluKCkpOwogICAgIGVsc2UKLSAgICAgICAgY2FuZGlkYXRlQ29va2llLmRvbWFpbigp
LnNwbGl0KCIuIiwgZGVsaW1pdGVkSG9zdCk7CisgICAgICAgIGNhbmRpZGF0ZUNvb2tpZS0+ZG9t
YWluKCkuc3BsaXQoIi4iLCBkZWxpbWl0ZWRIb3N0KTsKIAogICAgIENvb2tpZU1hcCogY3VyTWFw
ID0gcHJvdG9jb2xNYXA7CiAgICAgc2l6ZV90IGhvc3RTaXplID0gZGVsaW1pdGVkSG9zdC5zaXpl
KCk7CkBAIC01NzYsNyArNTY3LDcgQEAgQ29va2llTWFwKiBDb29raWVNYW5hZ2VyOjpmaW5kT3JD
cmVhdGVDb29raWVNYXAoQ29va2llTWFwKiBwcm90b2NvbE1hcCwgY29uc3QgUGEKICAgICAgICAg
Q29va2llTWFwKiBuZXh0TWFwID0gY3VyTWFwLT5nZXRTdWJkb21haW5NYXAoZGVsaW1pdGVkSG9z
dFtpXSk7CiAgICAgICAgIGlmICghbmV4dE1hcCkgewogICAgICAgICAgICAgQ29va2llTG9nKCJD
b29raWVNYW5hZ2VyIC0gY2Fubm90IGZpbmQgbWFwXG4iKTsKLSAgICAgICAgICAgIGlmIChjYW5k
aWRhdGVDb29raWUuaGFzRXhwaXJlZCgpKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUNvb2tp
ZS0+aGFzRXhwaXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
Q29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gY3JlYXRpbmcgJXMgaW4gY3VycmVudG1hcCAlc1xu
IiwgZGVsaW1pdGVkSG9zdFtpXS51dGY4KCkuZGF0YSgpLCBjdXJNYXAtPmdldE5hbWUoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIG5leHRNYXAgPSBuZXcgQ29va2llTWFwKGRlbGltaXRl
ZEhvc3RbaV0pOwpAQCAtNjAyLDExICs1OTMsMTEgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpyZW1v
dmVDb29raWVXaXRoTmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmEK
IAogICAgIC8vIFdlIGdldCBhbGwgY29va2llcyBmcm9tIGFsbCBkb21haW5zIHRoYXQgZG9tYWlu
IG1hdGNoZXMgdGhlIHJlcXVlc3QgZG9tYWluCiAgICAgLy8gYW5kIGRlbGV0ZSBhbnkgY29va2ll
cyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSB0aGF0IHBhdGggbWF0Y2hlcyB0aGUgcmVxdWVzdCBw
YXRoCi0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+IHJlc3VsdHM7CisgICAgVmVjdG9yPFJlZlB0
cjxQYXJzZWRDb29raWU+ID4gcmVzdWx0czsKICAgICBnZXRSYXdDb29raWVzKHJlc3VsdHMsIHVy
bCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CiAgICAgLy8gRGVsZXRlIHRoZSBjb29raWVzIHRoYXQg
cGF0aCBtYXRjaGVzIHRoZSByZXF1ZXN0IHBhdGgKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgUGFyc2VkQ29va2llKiBjb29raWUgPSBy
ZXN1bHRzW2ldOworICAgICAgICBSZWZQdHI8UGFyc2VkQ29va2llPiBjb29raWUgPSByZXN1bHRz
W2ldOwogICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGNvb2tpZS0+bmFtZSgpLCBjb29r
aWVOYW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAodXJsLnBhdGgoKS5z
dGFydHNXaXRoKGNvb2tpZS0+cGF0aCgpLCBmYWxzZSkpIHsKQEAgLTY0MCw3ICs2MzEsNyBAQCB2
b2lkIENvb2tpZU1hbmFnZXI6OmNvb2tpZUxpbWl0Q2xlYW5VcChUaW1lcjxDb29raWVNYW5hZ2Vy
PiogdGltZXIpCiAgICAgQ29va2llTGltaXRMb2coIkNvb2tpZU1hbmFnZXIgLSBFeGNlc3M6ICVk
ICBBbW91bnQgdG8gRGVsZXRlOiAlZCIsIG51bWJlck9mQ29va2llc092ZXJMaW1pdCwgYW1vdW50
VG9EZWxldGUpOwogCiAgICAgLy8gQ2FsbCB0aGUgZGF0YWJhc2UgdG8gZGVsZXRlICdhbW91bnRU
b0RlbGV0ZScgb2YgY29va2llcwotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBjb29raWVzVG9E
ZWxldGU7CisgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gY29va2llc1RvRGVsZXRl
OwogICAgIGNvb2tpZXNUb0RlbGV0ZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFtb3VudFRvRGVs
ZXRlKTsKIAogICAgIENvb2tpZUxpbWl0TG9nKCJDb29raWVNYW5hZ2VyIC0gQ2FsbGluZyBkYXRh
YmFzZSB0byBjbGVhbiB1cCIpOwpAQCAtNjQ5LDcgKzY0MCw3IEBAIHZvaWQgQ29va2llTWFuYWdl
cjo6Y29va2llTGltaXRDbGVhblVwKFRpbWVyPENvb2tpZU1hbmFnZXI+KiB0aW1lcikKICAgICAv
LyBDb29raWVzIGFyZSBvcmRlcmVkIGluIEFTQyBvcmRlciBieSBsYXN0QWNjZXNzZWQKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGFtb3VudFRvRGVsZXRlOyArK2kpIHsKICAgICAgICAgLy8g
RXhwaXJlIHRoZW0gYW5kIGNhbGwgY2hlY2thbmR0cmVhdCB0byBkZWxldGUgdGhlbSBmcm9tIG1l
bW9yeSBhbmQgZGF0YWJhc2UKLSAgICAgICAgUGFyc2VkQ29va2llKiBuZXdDb29raWUgPSBjb29r
aWVzVG9EZWxldGVbaV07CisgICAgICAgIFJlZlB0cjxQYXJzZWRDb29raWU+IG5ld0Nvb2tpZSA9
IGNvb2tpZXNUb0RlbGV0ZVtpXTsKICAgICAgICAgQ29va2llTGltaXRMb2coIkNvb2tpZU1hbmFn
ZXIgLSBFeHBpcmUgY29va2llOiAlcyBhbmQgZGVsZXRlIiwgbmV3Q29va2llLT50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBuZXdDb29raWUtPmZvcmNlRXhwaXJlKCk7CiAgICAg
ICAgIGNoZWNrQW5kVHJlYXRDb29raWUobmV3Q29va2llLCBSZW1vdmVGcm9tQmFja2luZ1N0b3Jl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5h
Z2VyLmgKaW5kZXggM2QxMDFkOWVkNzM2MzdjYzdmZmZkZDdmYzRjM2FiYzg1MzRhMjRiNS4uMGQ2
OTBmYzY5MWMyNzUyN2FjNjI4NTIxMDMyNTdkNTEzNzBhZDk1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKQEAgLTk5LDcgKzk5
LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRDb29raWUoY29uc3QgS1VSTCYgcmVxdWVzdFVS
TCwgQ29va2llRmlsdGVyKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgYWxsIGNvb2tpZXMgdGhh
dCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgVVJMIGFzIHJhdyBjb29raWVzLgot
ICAgIHZvaWQgZ2V0UmF3Q29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4mIHN0YWNrT2ZDb29r
aWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIgPSBXaXRoSHR0cE9ubHlD
b29raWVzKSBjb25zdDsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoVmVjdG9yPFJlZlB0cjxQYXJz
ZWRDb29raWU+ID4mIHN0YWNrT2ZDb29raWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29r
aWVGaWx0ZXIgPSBXaXRoSHR0cE9ubHlDb29raWVzKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgQ29va2llTWFuYWdlciYgY29va2llTWFuYWdlcigpOwpAQCAtMTA4LDExICsxMDgsMTEg
QEAgcHJpdmF0ZToKICAgICBDb29raWVNYW5hZ2VyKCk7CiAgICAgdmlydHVhbCB+Q29va2llTWFu
YWdlcigpOwogCi0gICAgdm9pZCBjaGVja0FuZFRyZWF0Q29va2llKFBhcnNlZENvb2tpZSosIEJh
Y2tpbmdTdG9yZVJlbW92YWxQb2xpY3ksIENvb2tpZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tp
ZXMpOworICAgIHZvaWQgY2hlY2tBbmRUcmVhdENvb2tpZShQYXNzUmVmUHRyPFBhcnNlZENvb2tp
ZT4gcHJwQ2FuZGlkYXRlQ29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5LCBDb29raWVG
aWx0ZXIgPSBXaXRoSHR0cE9ubHlDb29raWVzKTsKIAotICAgIHZvaWQgYWRkQ29va2llVG9NYXAo
Q29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogY2FuZGlkYXRlQ29va2llLCBCYWNr
aW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9yZSwgQ29va2llRmlsdGVyID0g
V2l0aEh0dHBPbmx5Q29va2llcyk7CisgICAgdm9pZCBhZGRDb29raWVUb01hcChDb29raWVNYXAq
IHRhcmdldE1hcCwgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IHBycENhbmRpZGF0ZUNvb2tpZSwg
QmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSBwb3N0VG9CYWNraW5nU3RvcmUsIENvb2tpZUZpbHRl
ciA9IFdpdGhIdHRwT25seUNvb2tpZXMpOwogCi0gICAgQ29va2llTWFwKiBmaW5kT3JDcmVhdGVD
b29raWVNYXAoQ29va2llTWFwKiBwcm90b2NvbE1hcCwgY29uc3QgUGFyc2VkQ29va2llJiBjYW5k
aWRhdGVDb29raWUpOworICAgIENvb2tpZU1hcCogZmluZE9yQ3JlYXRlQ29va2llTWFwKENvb2tp
ZU1hcCogcHJvdG9jb2xNYXAsIGNvbnN0IFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBjYW5kaWRh
dGVDb29raWUpOwogCiAgICAgdm9pZCBpbml0aWF0ZUNvb2tpZUxpbWl0Q2xlYW5VcCgpOwogICAg
IHZvaWQgY29va2llTGltaXRDbGVhblVwKFRpbWVyPENvb2tpZU1hbmFnZXI+Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5jcHAKaW5kZXggYWY0
ODViNTRjMjBlY2NmY2EwYWE0ZDk5NWZiNzIwYTQ1MzRkNzhhNC4uZTQ1ZTNiOGJiZjdkZjA0Zjg0
YjM0MzI3YmQzNTRkZWJlYmRhOTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQ29va2llTWFwLmNwcApAQCAtNTQsOCArNTQsOSBAQCBDb29raWVNYXA6On5D
b29raWVNYXAoKQogICAgIGRlbGV0ZUFsbENvb2tpZXNBbmREb21haW5zKCk7CiB9CiAKLWJvb2wg
Q29va2llTWFwOjphZGRPclJlcGxhY2VDb29raWUoUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29r
aWUsIFBhcnNlZENvb2tpZSoqIHJlcGxhY2VkQ29va2llLCBDb29raWVGaWx0ZXIgZmlsdGVyKQor
Ym9vbCBDb29raWVNYXA6OmFkZE9yUmVwbGFjZUNvb2tpZShQYXNzUmVmUHRyPFBhcnNlZENvb2tp
ZT4gcHJwQ2FuZGlkYXRlQ29va2llLCBSZWZQdHI8UGFyc2VkQ29va2llPiYgcmVwbGFjZWRDb29r
aWUsIENvb2tpZUZpbHRlciBmaWx0ZXIpCiB7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gY2Fu
ZGlkYXRlQ29va2llID0gcHJwQ2FuZGlkYXRlQ29va2llOwogICAgIENvb2tpZUxvZygiQ29va2ll
TWFwIC0gQXR0ZW1wdGluZyB0byBhZGQgY29va2llIC0gJXMiLCBjb29raWUtPm5hbWUoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIHNpemVfdCBjb29raWVDb3VudCA9IG1fY29va2llVmVjdG9yLnNp
emUoKTsKQEAgLTY1LDkgKzY2LDkgQEAgYm9vbCBDb29raWVNYXA6OmFkZE9yUmVwbGFjZUNvb2tp
ZShQYXJzZWRDb29raWUqIGNhbmRpZGF0ZUNvb2tpZSwgUGFyc2VkQ29va2llKioKICAgICAgICAg
ICAgIGlmIChmaWx0ZXIgPT0gTm9IdHRwT25seUNvb2tpZSAmJiBtX2Nvb2tpZVZlY3RvcltpXS0+
aXNIdHRwT25seSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAg
ICAgKnJlcGxhY2VkQ29va2llID0gbV9jb29raWVWZWN0b3JbaV07CisgICAgICAgICAgICByZXBs
YWNlZENvb2tpZSA9IG1fY29va2llVmVjdG9yW2ldOwogICAgICAgICAgICAgbV9jb29raWVWZWN0
b3JbaV0gPSBjYW5kaWRhdGVDb29raWU7Ci0gICAgICAgICAgICBpZiAoKnJlcGxhY2VkQ29va2ll
ID09IG1fb2xkZXN0Q29va2llKQorICAgICAgICAgICAgaWYgKHJlcGxhY2VkQ29va2llID09IG1f
b2xkZXN0Q29va2llKQogICAgICAgICAgICAgICAgIHVwZGF0ZU9sZGVzdENvb2tpZSgpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTgxLDEwICs4MiwxMCBAQCBib29s
IENvb2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKFBhcnNlZENvb2tpZSogY2FuZGlkYXRlQ29v
a2llLCBQYXJzZWRDb29raWUqKgogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXJzZWRDb29raWUq
IENvb2tpZU1hcDo6cmVtb3ZlQ29va2llQXRJbmRleChpbnQgcG9zaXRpb24sIGNvbnN0IFBhcnNl
ZENvb2tpZSogY29va2llKQorUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IENvb2tpZU1hcDo6cmVt
b3ZlQ29va2llQXRJbmRleChpbnQgcG9zaXRpb24sIGNvbnN0IFBhc3NSZWZQdHI8UGFyc2VkQ29v
a2llPiBjb29raWUpCiB7CiAgICAgQVNTRVJUKDAgPD0gcG9zaXRpb24gJiYgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBvc2l0aW9uKSA8IG1fY29va2llVmVjdG9yLnNpemUoKSk7Ci0gICAgUGFyc2Vk
Q29va2llKiBwcmV2Q29va2llID0gbV9jb29raWVWZWN0b3JbcG9zaXRpb25dOworICAgIFJlZlB0
cjxQYXJzZWRDb29raWU+IHByZXZDb29raWUgPSBtX2Nvb2tpZVZlY3Rvcltwb3NpdGlvbl07CiAg
ICAgbV9jb29raWVWZWN0b3IucmVtb3ZlKHBvc2l0aW9uKTsKIAogICAgIGlmIChwcmV2Q29va2ll
ID09IG1fb2xkZXN0Q29va2llKQpAQCAtOTQsNyArOTUsNiBAQCBQYXJzZWRDb29raWUqIENvb2tp
ZU1hcDo6cmVtb3ZlQ29va2llQXRJbmRleChpbnQgcG9zaXRpb24sIGNvbnN0IFBhcnNlZENvb2tp
ZSogYwogICAgICAgICAvLyB0byB0aGUgY29va2llIGluIG1lbW9yeSB0b28uCiAgICAgICAgIGlm
IChjb29raWUtPmlzRm9yY2VFeHBpcmVkKCkpCiAgICAgICAgICAgICBwcmV2Q29va2llLT5mb3Jj
ZUV4cGlyZSgpOwotICAgICAgICBkZWxldGUgY29va2llOwogICAgIH0KIAogICAgIGlmICghcHJl
dkNvb2tpZS0+aXNTZXNzaW9uKCkpCkBAIC0xMDIsNyArMTAyLDcgQEAgUGFyc2VkQ29va2llKiBD
b29raWVNYXA6OnJlbW92ZUNvb2tpZUF0SW5kZXgoaW50IHBvc2l0aW9uLCBjb25zdCBQYXJzZWRD
b29raWUqIGMKICAgICByZXR1cm4gcHJldkNvb2tpZTsKIH0KIAotUGFyc2VkQ29va2llKiBDb29r
aWVNYXA6OnJlbW92ZUNvb2tpZShjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSwgQ29va2llRmls
dGVyIGZpbHRlcikKK1Bhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBDb29raWVNYXA6OnJlbW92ZUNv
b2tpZShjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gY29va2llLCBDb29raWVGaWx0ZXIg
ZmlsdGVyKQogewogICAgIHNpemVfdCBjb29raWVDb3VudCA9IG1fY29va2llVmVjdG9yLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBwb3NpdGlvbiA9IDA7IHBvc2l0aW9uIDwgY29va2llQ291bnQ7
ICsrcG9zaXRpb24pIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENvb2tpZU1hcDo6YWRkU3Vi
ZG9tYWluTWFwKGNvbnN0IFN0cmluZyYgc3ViZG9tYWluLCBDb29raWVNYXAqIG5ld0RvbWFpbikK
ICAgICBtX3N1YmRvbWFpbnMuYWRkKHN1YmRvbWFpbiwgbmV3RG9tYWluKTsKIH0KIAotdm9pZCBD
b29raWVNYXA6OmdldEFsbENvb2tpZXMoVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBzdGFja09mQ29v
a2llcykKK3ZvaWQgQ29va2llTWFwOjpnZXRBbGxDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2Vk
Q29va2llPiA+KiBzdGFja09mQ29va2llcykKIHsKICAgICBDb29raWVMb2coIkNvb2tpZU1hcCAt
IEF0dGVtcHRpbmcgdG8gY29weSBNYXA6JXMgY29va2llcyB3aXRoICVkIGNvb2tpZXMgaW50byB2
ZWN0b3JzIiwgbV9uYW1lLnV0ZjgoKS5kYXRhKCksIG1fY29va2llVmVjdG9yLnNpemUoKSk7CiAK
QEAgLTEzOCwxMiArMTM4LDExIEBAIHZvaWQgQ29va2llTWFwOjpnZXRBbGxDb29raWVzKFZlY3Rv
cjxQYXJzZWRDb29raWUqPiogc3RhY2tPZkNvb2tpZXMpCiAKICAgICBzaXplX3QgcG9zaXRpb24g
PSAwOwogICAgIHdoaWxlIChwb3NpdGlvbiA8IG1fY29va2llVmVjdG9yLnNpemUoKSkgewotICAg
ICAgICBQYXJzZWRDb29raWUqIG5ld0Nvb2tpZSA9IG1fY29va2llVmVjdG9yW3Bvc2l0aW9uXTsK
KyAgICAgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gbmV3Q29va2llID0gbV9jb29raWVWZWN0b3Jb
cG9zaXRpb25dOwogICAgICAgICBpZiAobmV3Q29va2llLT5oYXNFeHBpcmVkKCkpIHsKICAgICAg
ICAgICAgIC8vIE5vdGljZSB0aGF0IHdlIGRvbid0IGRlbGV0ZSBmcm9tIGJhY2tpbmdzdG9yZS4g
VGhlc2UgZXhwaXJlZCBjb29raWVzIHdpbGwgYmUKICAgICAgICAgICAgIC8vIGRlbGV0ZWQgd2hl
biBtYW5hZ2VyIGxvYWRzIHRoZSBiYWNraW5nc3RvcmUgYWdhaW4uCi0gICAgICAgICAgICBQYXJz
ZWRDb29raWUqIGV4cGlyZWQgPSByZW1vdmVDb29raWVBdEluZGV4KHBvc2l0aW9uLCBuZXdDb29r
aWUpOwotICAgICAgICAgICAgZGVsZXRlIGV4cGlyZWQ7CisgICAgICAgICAgICByZW1vdmVDb29r
aWVBdEluZGV4KHBvc2l0aW9uLCBuZXdDb29raWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgc3RhY2tPZkNvb2tpZXMtPmFwcGVuZChuZXdDb29raWUpOwogICAgICAgICAgICAgcG9z
aXRpb24rKzsKQEAgLTE1MywxMCArMTUyLDEwIEBAIHZvaWQgQ29va2llTWFwOjpnZXRBbGxDb29r
aWVzKFZlY3RvcjxQYXJzZWRDb29raWUqPiogc3RhY2tPZkNvb2tpZXMpCiAgICAgQ29va2llTG9n
KCJDb29raWVNYXAgLSBzdGFjayBvZiBjb29raWVzIG5vdyBoYXZlICVkIGNvb2tpZXMgaW4gaXQi
LCAoKnN0YWNrT2ZDb29raWVzKS5zaXplKCkpOwogfQogCi1QYXJzZWRDb29raWUqIENvb2tpZU1h
cDo6cmVtb3ZlT2xkZXN0Q29va2llKCkKK1Bhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBDb29raWVN
YXA6OnJlbW92ZU9sZGVzdENvb2tpZSgpCiB7CiAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSBpdCBm
aW5kcyB0aGUgR0xPQkFMIG9sZGVzdCBjb29raWUsIG5vdCB0aGUgZmlyc3Qgb2xkZXN0Y29va2ll
IGl0IGZpbmRzLgotICAgIFBhcnNlZENvb2tpZSogb2xkZXN0Q29va2llID0gbV9vbGRlc3RDb29r
aWU7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gb2xkZXN0Q29va2llID0gbV9vbGRlc3RDb29r
aWU7CiAKICAgICAvLyBJZiB0aGlzIG1hcCBoYXMgYW4gb2xkZXN0Q29va2llLCByZW1vdmUgaXQu
IElmIG5vdCwgZG8gYSBERlMgdG8gc2VhcmNoIGZvciBhIGNoaWxkIHRoYXQgZG9lcwogICAgIGlm
ICghb2xkZXN0Q29va2llKSB7CkBAIC0yMDMsMTMgKzIwMiwxMiBAQCB2b2lkIENvb2tpZU1hcDo6
ZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMoKQogewogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3N1
YmRvbWFpbnMpOwogICAgIG1fc3ViZG9tYWlucy5jbGVhcigpOwotICAgIGRlbGV0ZUFsbFZhbHVl
cyhtX2Nvb2tpZVZlY3Rvcik7CiAgICAgbV9jb29raWVWZWN0b3IuY2xlYXIoKTsKIAogICAgIG1f
b2xkZXN0Q29va2llID0gMDsKIH0KIAotdm9pZCBDb29raWVNYXA6OmdldEFsbENoaWxkQ29va2ll
cyhWZWN0b3I8UGFyc2VkQ29va2llKj4qIHN0YWNrT2ZDb29raWVzKQordm9pZCBDb29raWVNYXA6
OmdldEFsbENoaWxkQ29va2llcyhWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiogc3RhY2tP
ZkNvb2tpZXMpCiB7CiAgICAgQ29va2llTG9nKCJDb29raWVNYXAgLSBnZXRBbGxDaGlsZENvb2tp
ZXMgaW4gTWFwIC0gJXMiLCBnZXROYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZ2V0QWxsQ29v
a2llcyhzdGFja09mQ29va2llcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Db29raWVNYXAuaAppbmRleCA2NzFhYzI5ODdlZTRlMDNkOTk0ZDE4MzY3ODFjNmVjZmEx
YzQ2NmMyLi45OGVkMDAxYWQ5MzMzYjYxZWQ4YjE0NjA5M2IyNzk0OGQ1ZGEwMzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmgKQEAgLTYwLDMy
ICs2MCwzMiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBnZXROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lOyB9CiAKICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgdGhlIGNhbmRpZGF0ZUNv
b2tpZSBpcyByZWplY3RlZC4KLSAgICBib29sIGFkZE9yUmVwbGFjZUNvb2tpZShQYXJzZWRDb29r
aWUqIGNhbmRpZGF0ZUNvb2tpZSwgUGFyc2VkQ29va2llKiogcmVwbGFjZWRDb29raWUsIENvb2tp
ZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tpZXMpOworICAgIGJvb2wgYWRkT3JSZXBsYWNlQ29v
a2llKFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBwcnBDYW5kaWRhdGVDb29raWUsIFJlZlB0cjxQ
YXJzZWRDb29raWU+JiByZXBsYWNlZENvb2tpZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5
Q29va2llcyk7CiAKICAgICAvLyBOZWVkIHRvIHJldHVybiB0aGUgcmVmZXJlbmNlIHRvIHRoZSBy
ZW1vdmVkIGNvb2tpZSBzbyBtYW5hZ2VyIGNhbiBkZWFsIHdpdGggaXQgKGdhcmJhZ2UgY29sbGVj
dCkuCi0gICAgUGFyc2VkQ29va2llKiByZW1vdmVDb29raWUoY29uc3QgUGFyc2VkQ29va2llKiwg
Q29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7CisgICAgUGFzc1JlZlB0cjxQYXJz
ZWRDb29raWU+IHJlbW92ZUNvb2tpZShjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4sIENv
b2tpZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tpZXMpOwogCiAgICAgLy8gUmV0dXJucyBhIG1h
cCB3aXRoIHRoYXQgZ2l2ZW4gc3ViZG9tYWluLgogICAgIENvb2tpZU1hcCogZ2V0U3ViZG9tYWlu
TWFwKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRkU3ViZG9tYWluTWFwKGNvbnN0IFN0cmlu
ZyYsIENvb2tpZU1hcCopOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMoKTsK
IAotICAgIHZvaWQgZ2V0QWxsQ29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4qKTsKLSAgICB2
b2lkIGdldEFsbENoaWxkQ29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4qIHN0YWNrT2ZDb29r
aWVzKTsKLSAgICBQYXJzZWRDb29raWUqIHJlbW92ZU9sZGVzdENvb2tpZSgpOworICAgIHZvaWQg
Z2V0QWxsQ29va2llcyhWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiopOworICAgIHZvaWQg
Z2V0QWxsQ2hpbGRDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+KiBzdGFja09m
Q29va2llcyk7CisgICAgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IHJlbW92ZU9sZGVzdENvb2tp
ZSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlT2xkZXN0Q29va2llKCk7Ci0gICAgUGFy
c2VkQ29va2llKiByZW1vdmVDb29raWVBdEluZGV4KGludCBwb3NpdGlvbiwgY29uc3QgUGFyc2Vk
Q29va2llKik7CisgICAgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IHJlbW92ZUNvb2tpZUF0SW5k
ZXgoaW50IHBvc2l0aW9uLCBjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4pOwogCi0gICAg
VmVjdG9yPFBhcnNlZENvb2tpZSo+IG1fY29va2llVmVjdG9yOworICAgIFZlY3RvcjxSZWZQdHI8
UGFyc2VkQ29va2llPiA+IG1fY29va2llVmVjdG9yOwogICAgIC8vIFRoZSBrZXkgaXMgYSBzdWJz
ZWN0aW9uIG9mIHRoZSBkb21haW4uCiAgICAgLy8gZXg6IGlmIGluc2VydGluZyBhY2NvdW50cy5n
b29nbGUuY29tICYgdGhpcyBjb29raWVtYXAgaXMgImNvbSIsIHRoaXMgc3ViZG9tYWluIG1hcCB3
aWxsIGNvbnRhaW4gImdvb2dsZSIKICAgICAvLyB0aGUgImdvb2dsZSIgY29va2llbWFwIHdpbGwg
Y29udGFpbiAiYWNjb3VudHMiIGluIGl0cyBzdWJkb21haW4gbWFwLgogICAgIEhhc2hNYXA8U3Ry
aW5nLCBDb29raWVNYXAqPiBtX3N1YmRvbWFpbnM7CiAKICAgICAvLyBTdG9yZSB0aGUgb2xkZXN0
IGNvb2tpZSB0byBzcGVlZCB1cCBMUlUgY2hlY2tzLgotICAgIFBhcnNlZENvb2tpZSogbV9vbGRl
c3RDb29raWU7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gbV9vbGRlc3RDb29raWU7CiAgICAg
Y29uc3QgU3RyaW5nIG1fbmFtZTsKIAogICAgIC8vIEZJWE1FIDogc2hvdWxkIGhhdmUgYSBtX3No
b3VsZFVwZGF0ZSBmbGFnIHRvIHVwZGF0ZSB0aGUgbmV0d29yayBsYXllciBvbmx5IHdoZW4gdGhl
IG1hcCBoYXMgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQ29va2llUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llUGFyc2VyLmNwcAppbmRleCA3OWEzYzMwNWVjYzJjYjU2YWRkMjRlNmZjZjZi
YzllZDFkNmM5YTI2Li4xMGI5NmEzMjU3MDY2NDMzZWZmZGRhYTcxNWY2NzY4MDY1NzQxNzNjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJz
ZXIuY3BwCkBAIC0zNSwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZp
bmUgTE9HX0FORF9ERUxFVEUoZm9ybWF0LCAuLi4pIFwKKyNkZWZpbmUgTE9HX0FORF9SRVRVUk4o
Zm9ybWF0LCAuLi4pIFwKICAgICB7IFwKICAgICAgICAgTE9HX0VSUk9SKGZvcm1hdCwgIyMgX19W
QV9BUkdTX18pOyBcCi0gICAgICAgIGRlbGV0ZSByZXM7IFwKICAgICAgICAgcmV0dXJuIDA7IFwK
ICAgICB9CiAKQEAgLTY5LDExICs2OCwxMSBAQCBDb29raWVQYXJzZXI6On5Db29raWVQYXJzZXIo
KQogewogfQogCi1WZWN0b3I8UGFyc2VkQ29va2llKj4gQ29va2llUGFyc2VyOjpwYXJzZShjb25z
dCBTdHJpbmcmIGNvb2tpZXMpCitWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiBDb29raWVQ
YXJzZXI6OnBhcnNlKGNvbnN0IFN0cmluZyYgY29va2llcykKIHsKICAgICB1bnNpZ25lZCBjb29r
aWVTdGFydCwgY29va2llRW5kID0gMDsKICAgICBkb3VibGUgY3VyVGltZSA9IGN1cnJlbnRUaW1l
KCk7Ci0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSosIDQ+IHBhcnNlZENvb2tpZXM7CisgICAgVmVj
dG9yPFJlZlB0cjxQYXJzZWRDb29raWU+LCA0PiBwYXJzZWRDb29raWVzOwogCiAgICAgdW5zaWdu
ZWQgY29va2llc0xlbmd0aCA9IGNvb2tpZXMubGVuZ3RoKCk7CiAgICAgaWYgKCFjb29raWVzTGVu
Z3RoKSAvLyBDb2RlIGJlbG93IGRvZXNuJ3QgaGFuZGxlIHRoaXMgY2FzZQpAQCAtOTYsMjYgKzk1
LDI2IEBAIFZlY3RvcjxQYXJzZWRDb29raWUqPiBDb29raWVQYXJzZXI6OnBhcnNlKGNvbnN0IFN0
cmluZyYgY29va2llcykKICAgICAgICAgaWYgKGNvb2tpZUVuZCA8IGNvb2tpZXNMZW5ndGggJiYg
aXNDb29raWVIZWFkZXJTZXBhcmF0b3IoY29va2llc1tjb29raWVFbmRdKSkKICAgICAgICAgICAg
ICsrY29va2llRW5kOwogCi0gICAgICAgIFBhcnNlZENvb2tpZSogY29va2llID0gcGFyc2VPbmVD
b29raWUoY29va2llcywgY29va2llU3RhcnQsIGNvb2tpZUVuZCAtIDEsIGN1clRpbWUpOworICAg
ICAgICBSZWZQdHI8UGFyc2VkQ29va2llPiBjb29raWUgPSBwYXJzZU9uZUNvb2tpZShjb29raWVz
LCBjb29raWVTdGFydCwgY29va2llRW5kIC0gMSwgY3VyVGltZSk7CiAgICAgICAgIGlmIChjb29r
aWUpCiAgICAgICAgICAgICBwYXJzZWRDb29raWVzLmFwcGVuZChjb29raWUpOwogICAgIH0KICAg
ICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotUGFyc2VkQ29va2llKiBDb29raWVQYXJzZXI6
OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llKQorUGFzc1JlZlB0cjxQYXJzZWRD
b29raWU+IENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUp
CiB7CiAgICAgcmV0dXJuIHBhcnNlT25lQ29va2llKGNvb2tpZSwgMCwgY29va2llLmxlbmd0aCgp
IC0gMSwgY3VycmVudFRpbWUoKSk7CiB9CiAKIC8vIFRoZSBjb29raWUgU3RyaW5nIHBhc3NlZCBp
bnRvIHRoaXMgbWV0aG9kIHdpbGwgb25seSBjb250aWFuIHRoZSBuYW1lIHZhbHVlIHBhaXJzIGFz
IHdlbGwgYXMgb3RoZXIgcmVsYXRlZCBjb29raWUKIC8vIGF0dHJpYnV0ZXMgc3VjaCBhcyBtYXgt
YWdlIGFuZCBkb21haW4uIFNldC1Db29raWUgc2hvdWxkIG5ldmVyIGJlIHBhcnQgb2YgdGhpcyBz
dHJpbmcuCi1QYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUoY29uc3Qg
U3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGRvdWJsZSBjdXJU
aW1lKQorUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29r
aWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGRv
dWJsZSBjdXJUaW1lKQogewotICAgIFBhcnNlZENvb2tpZSogcmVzID0gbmV3IFBhcnNlZENvb2tp
ZShjdXJUaW1lKTsKKyAgICBSZWZQdHI8UGFyc2VkQ29va2llPiByZXMgPSBQYXJzZWRDb29raWU6
OmNyZWF0ZShjdXJUaW1lKTsKIAogICAgIGlmICghcmVzKQotICAgICAgICBMT0dfQU5EX0RFTEVU
RSgiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICBMT0dfQU5EX1JFVFVSTigiT3V0IG9mIG1lbW9y
eSIpOwogCiAgICAgcmVzLT5zZXRQcm90b2NvbChtX2RlZmF1bHRDb29raWVVUkwucHJvdG9jb2wo
KSk7CiAKQEAgLTE2MCw3ICsxNTksNyBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFy
c2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAogICAgICAg
ICAgICAgdG9rZW5TdGFydCsrOwogCiAgICAgICAgIGlmIChuYW1lRW5kICsgMSA8PSB0b2tlblN0
YXJ0KQotICAgICAgICAgICAgTE9HX0FORF9ERUxFVEUoIkVtcHR5IG5hbWUuIFJlamVjdGluZyB0
aGUgY29va2llIik7CisgICAgICAgICAgICBMT0dfQU5EX1JFVFVSTigiRW1wdHkgbmFtZS4gUmVq
ZWN0aW5nIHRoZSBjb29raWUiKTsKIAogICAgICAgICBTdHJpbmcgbmFtZSA9IGNvb2tpZS5zdWJz
dHJpbmcodG9rZW5TdGFydCwgbmFtZUVuZCArIDEgLSBzdGFydCk7CiAgICAgICAgIHJlcy0+c2V0
TmFtZShuYW1lKTsKQEAgLTE5MCw3ICsxODksNyBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNl
cjo6cGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAog
ICAgIGlmIChoYXNOYW1lKQogICAgICAgICByZXMtPnNldFZhbHVlKHZhbHVlKTsKICAgICBlbHNl
IGlmIChmb3VuZEVxdWFsKSB7Ci0gICAgICAgIGRlbGV0ZSByZXM7CisgICAgICAgIExPR19FUlJP
UigiRm91bmQgZXF1YWwuIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0gZWxzZQogICAgICAg
ICByZXMtPnNldE5hbWUodmFsdWUpOyAvLyBObyBOQU1FPVZBTFVFLCBvbmx5IE5BTUUKQEAgLTI1
MCw3ICsyNDksNyBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUo
Y29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAogI2lmIDAKICAgICAgICAgICAg
ICAgICAvLyBDaGVjayBpZiBwYXRoIGF0dHJpYnV0ZSBpcyBhIHByZWZpeCBvZiB0aGUgcmVxdWVz
dCBVUkkuCiAgICAgICAgICAgICAgICAgaWYgKCFtX2RlZmF1bHRDb29raWVVUkwucGF0aCgpLnN0
YXJ0c1dpdGgocmVzLT5wYXRoKCkpKQotICAgICAgICAgICAgICAgICAgICBMT0dfQU5EX0RFTEVU
RSgiSW52YWxpZCBjb29raWUgYXR0cmlidXRlICVzIChwYXRoKTogaXQgZG9lcyBub3QgbWF0aCB0
aGUgVVJMIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgTE9H
X0FORF9SRVRVUk4oIkludmFsaWQgY29va2llIGF0dHJpYnV0ZSAlcyAocGF0aCk6IGl0IGRvZXMg
bm90IG1hdGggdGhlIFVSTCIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CiAjZW5kaWYKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBjb29raWUg
YXR0cmlidXRlICVzIChwYXRoKSIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CkBAIC0yNjYsNyAr
MjY1LDcgQEAgUGFyc2VkQ29va2llKiBDb29raWVQYXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0
IFN0cmluZyYgY29va2llLCB1bnNpZ25lZCBzdGFydCwKICAgICAgICAgICAgICAgICAvLyBDaGVj
ayBpZiB0aGUgZG9tYWluIGNvbnRhaW5zIGFuIGVtYmVkZGVkIGRvdC4KICAgICAgICAgICAgICAg
ICBzaXplX3QgZG90UG9zaXRpb24gPSBwYXJzZWRWYWx1ZS5maW5kKCIuIiwgMSk7CiAgICAgICAg
ICAgICAgICAgaWYgKGRvdFBvc2l0aW9uID09IG5vdEZvdW5kIHx8IGRvdFBvc2l0aW9uID09IHBh
cnNlZFZhbHVlLmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICBMT0dfQU5EX0RFTEVURSgi
SW52YWxpZCBjb29raWUgYXR0cmlidXRlICVzIChkb21haW4pOiBpdCBkb2VzIG5vdCBjb250YWlu
IGFuIGVtYmVkZGVkIGRvdCIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAg
ICAgICAgIExPR19BTkRfUkVUVVJOKCJJbnZhbGlkIGNvb2tpZSBhdHRyaWJ1dGUgJXMgKGRvbWFp
bik6IGl0IGRvZXMgbm90IGNvbnRhaW4gYW4gZW1iZWRkZWQgZG90IiwgY29va2llLmFzY2lpKCku
ZGF0YSgpKTsKIAogICAgICAgICAgICAgICAgIC8vIElmIHRoZSBkb21haW4gZG9lcyBub3Qgc3Rh
cnQgd2l0aCBhIGRvdCwgYWRkIG9uZSBmb3Igc2VjdXJpdHkgY2hlY2tzLAogICAgICAgICAgICAg
ICAgIC8vIEZvciBleGFtcGxlOiBhYi5jLmNvbSBkb3NlIG5vdCBkb21haW4gbWF0Y2ggYi5jLmNv
bTsKQEAgLTI4Miw3ICsyODEsNyBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFyc2VP
bmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAogICAgICAgICAg
ICAgICAgIGlmIChtX2RlZmF1bHREb21haW5Jc0lQQWRkcmVzcykgewogICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcgcmVhbERvbWFpbkNhbm9uaWNhbCA9IFN0cmluZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6Z2V0Q2Fub25pY2FsSVBGb3JtYXQocmVhbERvbWFpbi51dGY4KCkuZGF0YSgpKS5jX3N0
cigpKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHJlYWxEb21haW5DYW5vbmljYWwuaXNFbXB0
eSgpIHx8IHJlYWxEb21haW5DYW5vbmljYWwgIT0gbV9kZWZhdWx0Q29va2llSG9zdCkKLSAgICAg
ICAgICAgICAgICAgICAgICAgIExPR19BTkRfREVMRVRFKCJJbnZhbGlkIGNvb2tpZSBhdHRyaWJ1
dGUgJXMgKGRvbWFpbik6IGRvbWFpbiBpcyBJUCBidXQgZG9lcyBub3QgbWF0Y2ggaG9zdCdzIElQ
IiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPR19B
TkRfUkVUVVJOKCJJbnZhbGlkIGNvb2tpZSBhdHRyaWJ1dGUgJXMgKGRvbWFpbik6IGRvbWFpbiBp
cyBJUCBidXQgZG9lcyBub3QgbWF0Y2ggaG9zdCdzIElQIiwgY29va2llLmFzY2lpKCkuZGF0YSgp
KTsKICAgICAgICAgICAgICAgICAgICAgcmVhbERvbWFpbiA9IHJlYWxEb21haW5DYW5vbmljYWw7
CiAgICAgICAgICAgICAgICAgICAgIGlzSVBBZGRyZXNzID0gdHJ1ZTsKICAgICAgICAgICAgICAg
ICB9IGVsc2UgewpAQCAtMjk0LDE0ICsyOTMsMTQgQEAgUGFyc2VkQ29va2llKiBDb29raWVQYXJz
ZXI6OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llLCB1bnNpZ25lZCBzdGFydCwK
ICAgICAgICAgICAgICAgICAgICAgLy8gV2UgYWxzbyBoYXZlIHRvIG1ha2UgYSBzcGVjaWFsIGNh
c2UgZm9yIElQIGFkZHJlc3Nlcy4gSWYgYSB3ZWJzaXRlIHRyaWVzIHRvIHNldAogICAgICAgICAg
ICAgICAgICAgICAvLyBhIGNvb2tpZSB0byA2MS45NywgdGhhdCBkb21haW4gaXMgbm90IGFuIElQ
IGFkZHJlc3MgYW5kIHdpbGwgZW5kIHdpdGggdGhlIG1fZGVmYXVsdENvb2tpZUhvc3QKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX2RlZmF1bHRDb29raWVIb3N0LmVuZHNXaXRoKHJlYWxEb21h
aW4sIGZhbHNlKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIExPR19BTkRfREVMRVRFKCJJbnZh
bGlkIGNvb2tpZSBhdHRyaWJ1dGUgJXMgKGRvbWFpbik6IGl0IGRvZXMgbm90IGRvbWFpbiBtYXRj
aCB0aGUgaG9zdCIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICBMT0dfQU5EX1JFVFVSTigiSW52YWxpZCBjb29raWUgYXR0cmlidXRlICVzIChkb21haW4p
OiBpdCBkb2VzIG5vdCBkb21haW4gbWF0Y2ggdGhlIGhvc3QiLCBjb29raWUuYXNjaWkoKS5kYXRh
KCkpOwogICAgICAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgY2hlY2sgZm9yIGFuIGVtYmVk
ZGVkIGRvdCBpbiB0aGUgcG9ydGlvbiBvZiBzdHJpbmcgaW4gdGhlIGhvc3Qgbm90IGluIHRoZSBk
b21haW4KICAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHRvIG1hdGNoIGZpcmVmb3ggYmVoYXZp
b3VyIHdlIGRvIG5vdC4KIAogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRo
ZSBkb21haW4gaXMgYSB0b3AgbGV2ZWwgZG9tYWluLCBpZiBpdCBpcyB0aHJvdyBpdCBvdXQKICAg
ICAgICAgICAgICAgICAgICAgLy8gaHR0cDovL3B1YmxpY3N1ZmZpeC5vcmcvbGlzdC8KICAgICAg
ICAgICAgICAgICAgICAgaWYgKEJsYWNrQmVycnk6OlBsYXRmb3JtOjppc1RvcExldmVsRG9tYWlu
KHJlYWxEb21haW4udXRmOCgpLmRhdGEoKSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBMT0df
QU5EX0RFTEVURSgiSW52YWxpZCBjb29raWUgYXR0cmlidXRlICVzIChkb21haW4pOiBpdCBkaWQg
bm90IHBhc3MgdGhlIHRvcCBsZXZlbCBkb21haW4gY2hlY2siLCBjb29raWUuYXNjaWkoKS5kYXRh
KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgTE9HX0FORF9SRVRVUk4oIkludmFsaWQgY29v
a2llIGF0dHJpYnV0ZSAlcyAoZG9tYWluKTogaXQgZGlkIG5vdCBwYXNzIHRoZSB0b3AgbGV2ZWwg
ZG9tYWluIGNoZWNrIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgcmVzLT5zZXREb21haW4ocmVhbERvbWFpbiwgaXNJUEFkZHJlc3Mp
OwogICAgICAgICAgICAgfSBlbHNlCkBAIC0zNDcsNyArMzQ2LDcgQEAgUGFyc2VkQ29va2llKiBD
b29raWVQYXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llLCB1bnNpZ25l
ZCBzdGFydCwKICAgICAgICAgICAgICAgICAgICAgcGFyc2VkVmFsdWUgPSBwYXJzZWRWYWx1ZS5z
dWJzdHJpbmcoMSwgcGFyc2VkVmFsdWUubGVuZ3RoKCkgLSAyKTsKIAogICAgICAgICAgICAgICAg
IGlmIChwYXJzZWRWYWx1ZS50b0ludCgpICE9IDEpCi0gICAgICAgICAgICAgICAgICAgIExPR19B
TkRfREVMRVRFKCJQYXJzZWRDb29raWUgdmVyc2lvbiAlZCBub3Qgc3VwcG9ydGVkIChvbmx5IHN1
cHBvcnQgdmVyc2lvbj0xKSIsIHBhcnNlZFZhbHVlLnRvSW50KCkpOworICAgICAgICAgICAgICAg
ICAgICBMT0dfQU5EX1JFVFVSTigiUGFyc2VkQ29va2llIHZlcnNpb24gJWQgbm90IHN1cHBvcnRl
ZCAob25seSBzdXBwb3J0IHZlcnNpb249MSkiLCBwYXJzZWRWYWx1ZS50b0ludCgpKTsKICAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIExPR19FUlJPUigiSW52YWxpZCBjb29raWUg
YXR0cmlidXRlICVzICh2ZXJzaW9uKSIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CiAgICAgICAg
ICAgICBicmVhazsKQEAgLTM4Miw3ICszODEsNyBAQCBQYXJzZWRDb29raWUqIENvb2tpZVBhcnNl
cjo6cGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LAog
CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvb2tpZSBpcyB2YWxpZCB3aXRoIHJlc3BlY3QgdG8gdGhl
IHNpemUgbGltaXQuCiAgICAgaWYgKCFyZXMtPmlzVW5kZXJTaXplTGltaXQoKSkKLSAgICAgICAg
TE9HX0FORF9ERUxFVEUoIlBhcnNlZENvb2tpZSAlcyBpcyBhYm92ZSB0aGUgNGtiIGluIGxlbmd0
aCA6IFJFSkVDVEVEIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgTE9HX0FORF9S
RVRVUk4oIlBhcnNlZENvb2tpZSAlcyBpcyBhYm92ZSB0aGUgNGtiIGluIGxlbmd0aCA6IFJFSkVD
VEVEIiwgY29va2llLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIC8vIElmIHNvbWUgcGFpciB3YXMg
bm90IHByb3ZpZGVkLCBkdXJpbmcgcGFyc2luZyB0aGVuIGFwcGx5IHNvbWUgZGVmYXVsdCB2YWx1
ZQogICAgIC8vIHRoZSByZXN0IGhhcyBiZWVuIGRvbmUgaW4gdGhlIGNvbnN0cnVjdG9yLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmgKaW5k
ZXggYWVkNWU4N2ViN2IxZDM2ZTQwYTIzZTllMDg5NGNiZWE4NDc2MTI2Ny4uYzk0NGY4NjMwMTg1
MDE0N2Y0ZWVkNWZmNTI0Y2I2ZDJiZDlkMDY3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJzZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5oCkBAIC00MywxMyArNDMsMTMgQEAgcHVi
bGljOgogICAgIH5Db29raWVQYXJzZXIoKTsKIAogICAgIC8vIFBhcnNlcyBhIHNlcXVlbmNlIG9m
ICJDb29raWU6IiBoZWFkZXIgYW5kIHJldHVybiB0aGUgcGFyc2VkIGNvb2tpZXMuCi0gICAgVmVj
dG9yPFBhcnNlZENvb2tpZSo+IHBhcnNlKGNvbnN0IFN0cmluZyYgY29va2llcyk7CisgICAgVmVj
dG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gcGFyc2UoY29uc3QgU3RyaW5nJiBjb29raWVzKTsK
IAotICAgIFBhcnNlZENvb2tpZSogcGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUp
OworICAgIFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJp
bmcmIGNvb2tpZSk7CiAKIHByaXZhdGU6CiAgICAgLy8gRklYTUU6IGN1clRpbWUsIHN0YXJ0LCBl
bmQgcGFyYW1ldGVycyBzaG91bGQgYmUgcmVtb3ZlZC4gQW5kIHRoaXMgbWV0aG9kIGNhbiBiZSBw
dWJsaWMuCi0gICAgUGFyc2VkQ29va2llKiBwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNv
b2tpZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgZG91YmxlIGN1clRpbWUpOworICAg
IFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNv
b2tpZSwgdW5zaWduZWQgc3RhcnQsIHVuc2lnbmVkIGVuZCwgZG91YmxlIGN1clRpbWUpOwogCiAg
ICAgS1VSTCBtX2RlZmF1bHRDb29raWVVUkw7CiAgICAgU3RyaW5nIG1fZGVmYXVsdENvb2tpZUhv
c3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNl
ZENvb2tpZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNlZENv
b2tpZS5jcHAKaW5kZXggYzQ0OWZjNjgxNDA1MzY2NDNkNTJkZGQ1YmQ1NTM2ZTBiMTg5YWMyMy4u
YmZmOGRlMDExOGYzYjY5NDYyYjE2YzQwYzgzMzg0YmNkOTVkYzU4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcApAQCAtNjYs
MjcgKzY2LDYgQEAgUGFyc2VkQ29va2llOjpQYXJzZWRDb29raWUoY29uc3QgU3RyaW5nJiBuYW1l
LCBjb25zdCBTdHJpbmcmIHZhbHVlLCBjb25zdCBTdHJpbmcKIHsKIH0KIAotUGFyc2VkQ29va2ll
OjpQYXJzZWRDb29raWUoY29uc3QgUGFyc2VkQ29va2llKiBjb29raWUpCi0gICAgOiBtX25hbWUo
U3RyaW5nKGNvb2tpZS0+bV9uYW1lKSkKLSAgICAsIG1fdmFsdWUoU3RyaW5nKGNvb2tpZS0+bV92
YWx1ZSkpCi0gICAgLCBtX2RvbWFpbihTdHJpbmcoY29va2llLT5tX2RvbWFpbikpCi0gICAgLCBt
X3Byb3RvY29sKFN0cmluZyhjb29raWUtPm1fcHJvdG9jb2wpKQotICAgICwgbV9wYXRoKFN0cmlu
Zyhjb29raWUtPm1fcGF0aCkpCi0gICAgLCBtX2V4cGlyeShjb29raWUtPm1fZXhwaXJ5KQotICAg
ICwgbV9jcmVhdGlvblRpbWUoY29va2llLT5tX2NyZWF0aW9uVGltZSkKLSAgICAsIG1fbGFzdEFj
Y2Vzc2VkKGNvb2tpZS0+bV9sYXN0QWNjZXNzZWQpCi0gICAgLCBtX2lzU2VjdXJlKGNvb2tpZS0+
bV9pc1NlY3VyZSkKLSAgICAsIG1faXNIdHRwT25seShjb29raWUtPm1faXNIdHRwT25seSkKLSAg
ICAsIG1faXNTZXNzaW9uKGNvb2tpZS0+bV9pc1Nlc3Npb24pCi0gICAgLCBtX2lzRm9yY2VFeHBp
cmVkKGNvb2tpZS0+bV9pc0ZvcmNlRXhwaXJlZCkKLSAgICAsIG1fZG9tYWluSXNJUEFkZHJlc3Mo
Y29va2llLT5tX2RvbWFpbklzSVBBZGRyZXNzKQotewotfQotCi1QYXJzZWRDb29raWU6On5QYXJz
ZWRDb29raWUoKQotewotfQotCiB2b2lkIFBhcnNlZENvb2tpZTo6c2V0RXhwaXJ5KGNvbnN0IFN0
cmluZyYgZXhwaXJ5KQogewogICAgIC8vIElmIGEgY29va2llIGhhcyBib3RoIHRoZSBNYXgtQWdl
IGFuZCB0aGUgRXhwaXJlcyBhdHRyaWJ1dGUsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNlZENvb2tpZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuaAppbmRleCA5ZGI3NTQ5MzRhY2NhMWU0Zjk3ZTc4
NTdkNTAwZTlmNzdmNWRhNDk2Li4xYmNjZWM2YTllYzk1NWNjNzBiMWY3ZGFkZWY5NzlmMmMwOTI5
MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNl
ZENvb2tpZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2Vk
Q29va2llLmgKQEAgLTI4LDcgKzI4LDkgQEAKICNkZWZpbmUgUGFyc2VkQ29va2llX2gKIAogI2lu
Y2x1ZGUgIkNvb2tpZS5oIgotI2luY2x1ZGUgPHd0Zi9GYXN0QWxsb2NCYXNlLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdURiB7CiBjbGFzcyBTdHJpbmc7CkBAIC00
MCwxOCArNDIsMTQgQEAgY2xhc3MgS1VSTDsKIC8vIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIGNv
b2tpZSBpbnRlcm5hbGx5CiAvLyBJdCBjYW4gZWl0aGVyIGJlIGNyZWF0ZWQgYnkgdGhlIENvb2tp
ZVBhcnNlciB3aGljaCB3aWxsIHRoZW4gZmlsbCBpdAogLy8gb3IgaXQgY2FuIGJlIGNyZWF0ZWQg
YnkgdGhlIGJhY2tpbmcgc3RvcmUgZmlsbGluZyBpdCBpbiB0aGUgY29uc3RydWN0b3IuCi1jbGFz
cyBQYXJzZWRDb29raWUgewotV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitjbGFzcyBQYXJzZWRD
b29raWUgOiBwdWJsaWMgUmVmQ291bnRlZDxQYXJzZWRDb29raWU+IHsKIHB1YmxpYzoKKwogICAg
IC8vIERlZmF1bHQgY29va2llIDogZW1wdHkgZG9tYWluLCBub24gc2VjdXJlIGFuZCBzZXNzaW9u
Ci0gICAgUGFyc2VkQ29va2llKGRvdWJsZSBjdXJyZW50VGltZSk7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGFyc2VkQ29va2llPiBjcmVhdGUoZG91YmxlIGN1cnJlbnRUaW1lKSB7IHJldHVybiBh
ZG9wdFJlZihuZXcgUGFyc2VkQ29va2llKGN1cnJlbnRUaW1lKSk7IH0KIAogICAgIC8vIEZvciBi
YWNraW5nIHN0b3JlIGNvb2tpZXMgKHRob3NlIGNvb2tpZXMgYXJlIG5ldmVyIHNlc3Npb24gY29v
a2llcykuCi0gICAgUGFyc2VkQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5n
JiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4sIGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNv
bnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGlyeSwgZG91YmxlIGxhc3RBY2Nlc3NlZCwgZG91
YmxlIGNyZWF0aW9uVGltZSwgYm9vbCBpc1NlY3VyZSwgYm9vbCBpc0h0dHBPbmx5KTsKLQotICAg
IFBhcnNlZENvb2tpZShjb25zdCBQYXJzZWRDb29raWUqKTsKLQotICAgIH5QYXJzZWRDb29raWUo
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IGNyZWF0ZShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25z
dCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcnksIGRv
dWJsZSBsYXN0QWNjZXNzZWQsIGRvdWJsZSBjcmVhdGlvblRpbWUsIGJvb2wgaXNTZWN1cmUsIGJv
b2wgaXNIdHRwT25seSkgIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBQYXJzZWRDb29raWUobmFtZSwg
dmFsdWUsIGRvbWFpbiwgcHJvdG9jb2wsIHBhdGgsIGV4cGlyeSwgbGFzdEFjY2Vzc2VkLCBjcmVh
dGlvblRpbWUsIGlzU2VjdXJlLCBpc0h0dHBPbmx5KSk7IH07CiAKICAgICBjb25zdCBTdHJpbmcm
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB2b2lkIHNldE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKSB7IG1fbmFtZSA9IG5hbWU7IH0KQEAgLTk3LDYgKzk1LDEyIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGFwcGVuZFdlYkNvcmVDb29raWUoVmVjdG9yPENvb2tpZT4mIGNvb2tpZVZl
Y3RvcikgY29uc3Q7CiAKIHByaXZhdGU6CisgICAgLy8gRGVmYXVsdCBjb29raWUgOiBlbXB0eSBk
b21haW4sIG5vbiBzZWN1cmUgYW5kIHNlc3Npb24KKyAgICBQYXJzZWRDb29raWUoZG91YmxlIGN1
cnJlbnRUaW1lKTsKKworICAgIC8vIEZvciBiYWNraW5nIHN0b3JlIGNvb2tpZXMgKHRob3NlIGNv
b2tpZXMgYXJlIG5ldmVyIHNlc3Npb24gY29va2llcykuCisgICAgUGFyc2VkQ29va2llKGNvbnN0
IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgY29uc3QgU3RyaW5nJiBkb21haW4s
IGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIGNvbnN0IFN0cmluZyYgcGF0aCwgZG91YmxlIGV4cGly
eSwgZG91YmxlIGxhc3RBY2Nlc3NlZCwgZG91YmxlIGNyZWF0aW9uVGltZSwgYm9vbCBpc1NlY3Vy
ZSwgYm9vbCBpc0h0dHBPbmx5KTsKKwogICAgIFN0cmluZyBtX25hbWU7CiAgICAgU3RyaW5nIG1f
dmFsdWU7CiAgICAgU3RyaW5nIG1fZG9tYWluOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJDb29raWVKYXIuY3BwIGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0FwaS9XZWJDb29raWVKYXIuY3BwCmluZGV4IDc5NmY1OWJkMWVkYzY1OTg3N2JiNWQxNzUyNGEy
YTFhNDlmNGJkZGQuLmIzYmE4ZjM3MmViM2RiMDAxMDdlYzYzODBiNGNkYWNiYmMwYmM4MTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAKQEAgLTM3
LDcgKzM3LDcgQEAgc3RkOjp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZz4gV2Vi
Q29va2llSmFyOjpjb29raWVzKGNvbnN0IEJsYWNrQmVycnkKIHsKICAgICBLVVJMIGt1cmwgPSBL
VVJMKEtVUkwoKSwgdXJsKTsKIAotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiByYXdDb29raWVz
OworICAgIFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+IHJhd0Nvb2tpZXM7CiAgICAgY29v
a2llTWFuYWdlcigpLmdldFJhd0Nvb2tpZXMocmF3Q29va2llcywga3VybCwgV2l0aEh0dHBPbmx5
Q29va2llcyk7CiAKICAgICBzdGQ6OnZlY3RvcjxCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6U3RyaW5n
PiByZXN1bHQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192079</attachid>
            <date>2013-03-07 13:35:13 -0800</date>
            <delta_ts>2013-03-07 17:33:12 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111761-20130307163117.patch</filename>
            <type>text/plain</type>
            <size>51062</size>
            <attacher>otcheung</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JiZWRhNzExNTAyYjlm
OTg5Mzc3ZDE1OGJjMDFjNjA5MTNmODcyNC4uYjliOTEzYmMwMGZiNmU1YTMxY2ExMWQyZTNiNzVl
ZWM3NGI2OTg4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDEzLTAzLTA3ICBPdHRv
IERlcmVrIENoZXVuZyAgPG90Y2hldW5nQHJpbS5jb20+CisKKyAgICAgICAgW0JsYWNrQmVycnld
IFJlZkNvdW50aW5nIFBhcnNlZENvb2tpZSB0byBhdm9pZCBTZWdGYXVsdHMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTc2MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2luZyBuZWNlc3NhcnkgY2hh
bmdlcyB0byByZWYgY291bnQgdGhlIFBhcnNlZENvb2tpZSBvYmplY3QuCisKKyAgICAgICAgVGVz
dGVkIHVzaW5nIHRoZSBvcGVyYSBjb29raWUgdGVzdCBzdWl0ZSBhbmQgdGhlIEJCIEJyb3dzZXIg
Y29va2llIHRlc3Qgc3VpdGUuCisgICAgICAgIFRlc3RlZCB1c2luZyB0aGUgYnJvd3Nlciwgdmlz
aXRpbmcgcG9wdWxhciBzaXRlcyBzdWNoIGFzIGZhY2Vib29rLCByZWRkaXQsIGdvb2dsZSBldGMK
KyAgICAgICAgdG8gZW5zdXJlIGNvb2tpZSBmdW5jdGlvbmFsaXR5IGlzbid0IGNoYW5nZWQuCisK
KyAgICAgICAgKiBsb2FkZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUvQ29va2llRGF0YWJhc2VCYWNraW5nU3Rv
cmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omlu
c2VydCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6dXBk
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjpyZW1v
dmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6OmdldENv
b2tpZXNGcm9tRGF0YWJhc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llRGF0YWJhc2VCYWNr
aW5nU3RvcmU6Omludm9rZUdldENvb2tpZXNXaXRoTGltaXQpOgorICAgICAgICAoV2ViQ29yZTo6
Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omludm9rZVNlbmRDaGFuZ2VzVG9EYXRhYmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6YWRkVG9DaGFu
Z2VRdWV1ZSk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJh
Y2tpbmdTdG9yZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5oOgorICAgICAgICAoQ29va2ll
RGF0YWJhc2VCYWNraW5nU3RvcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29v
a2llTWFuYWdlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb29raWVTb3J0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6Q29va2llTWFuYWdlcjo6c2V0Q29va2llcyk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVNYW5hZ2VyOjpnZXRDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFu
YWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OkNvb2tpZU1hbmFnZXI6OmdldFJhd0Nvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2ll
TWFuYWdlcjo6Y2hlY2tBbmRUcmVhdENvb2tpZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVN
YW5hZ2VyOjphZGRDb29raWVUb01hcCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5hZ2Vy
OjpnZXRCYWNraW5nU3RvcmVDb29raWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hbmFn
ZXI6OmZpbmRPckNyZWF0ZUNvb2tpZU1hcCk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5h
Z2VyOjpyZW1vdmVDb29raWVXaXRoTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYW5h
Z2VyOjpjb29raWVMaW1pdENsZWFuVXApOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llTWFuYWdlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKToK
KyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZU1hcDo6cmVtb3ZlQ29va2llQXRJbmRleCk6CisgICAg
ICAgIChXZWJDb3JlOjpDb29raWVNYXA6OnJlbW92ZUNvb2tpZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVNYXA6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFw
OjpyZW1vdmVPbGRlc3RDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6Q29va2llTWFwOjpkZWxl
dGVBbGxDb29raWVzQW5kRG9tYWlucyk6CisgICAgICAgIChXZWJDb3JlOjpDb29raWVNYXA6Omdl
dEFsbENoaWxkQ29va2llcyk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVN
YXAuaDoKKyAgICAgICAgKENvb2tpZU1hcCk6CisgICAgICAgICogcGxhdGZvcm0vYmxhY2tiZXJy
eS9Db29raWVQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpDb29raWVQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvb2tpZVBhcnNlcjo6
cGFyc2VPbmVDb29raWUpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFy
c2VyLmg6CisgICAgICAgIChDb29raWVQYXJzZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2JsYWNr
YmVycnkvUGFyc2VkQ29va2llLmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ibGFja2JlcnJ5L1Bh
cnNlZENvb2tpZS5oOgorICAgICAgICAoUGFyc2VkQ29va2llKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhcnNlZENvb2tpZTo6Y3JlYXRlKToKKwogMjAxMy0wMy0wNyAgQW5kcmV5IEx1c2huaWtvdiAg
PGx1c2huaWtvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogW0FDRV0g
c2V0IGNvcnJlY3QgZm9udApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKaW5kZXggMTZhM2I2
ZTgxOTQxZDI5M2UyOTVhMmEzODgwZjY1M2VkMTMzMjJjMy4uMTFlYzE4OGNmMzM4ZGNhZWNjZTFj
MDg3YzUwYzQ2YWY3YjdhNzY2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5
L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTUgQEAKKzIwMTMtMDMtMDcgIE90dG8gRGVyZWsgQ2hldW5nICA8b3RjaGV1bmdAcmlt
LmNvbT4KKworICAgICAgICBbQmxhY2tCZXJyeV0gUmVmQ291bnRpbmcgUGFyc2VkQ29va2llIHRv
IGF2b2lkIFNlZ0ZhdWx0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTExNzYxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFraW5nIG5lY2Vzc2FyeSBjaGFuZ2VzIHRvIHJlZi1jb3VudCB0aGUgUGFyc2Vk
Q29va2llIG9iamVjdC4KKworICAgICAgICAqIEFwaS9XZWJDb29raWVKYXIuY3BwOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpXZWJDb29raWVKYXI6OmNvb2tpZXMpOgorCiAyMDEzLTAz
LTA2ICBOaW1hIEdoYW5hdmF0aWFuICA8bmdoYW5hdmF0aWFuQHJpbS5jb20+CiAKICAgICAgICAg
W0JsYWNrQmVycnldIFNlbGVjdGlvbiBoYW5kbGVzIGRvbid0IGRyYWcgdG8gZXhwYW5kIGNvcnJl
Y3RseSBmb3IgUlRMIGxhbmd1YWdlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2JsYWNrYmVycnkvQ29va2llSmFyQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvYmxhY2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAppbmRleCA2ZmQ2ZGUyYWZhZjI1
ZmFiN2U1MDUyZmQ3YWRlMzJlMTJjNThmMGIwLi5lOTE5YTFjYTQ5Y2YzZGRiYmFkZWEyZTZhZTFi
ZmUzMjIwMWM5ZjY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxhY2tiZXJy
eS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYmxh
Y2tiZXJyeS9Db29raWVKYXJCbGFja0JlcnJ5LmNwcApAQCAtNjAsNyArNjAsNyBAQCBib29sIGNv
b2tpZXNFbmFibGVkKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKIGJvb2wgZ2V0UmF3Q29va2ll
cyhjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgVmVjdG9yPENvb2tp
ZT4mIHJhd0Nvb2tpZXMpCiB7CiAgICAgLy8gTm90ZTogdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5
IGluc3BlY3RvciBvbmx5LiBObyBuZWVkIHRvIGNoZWNrIGlmIGNvb2tpZSBpcyBlbmFibGVkLgot
ICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiByZXN1bHQ7CisgICAgVmVjdG9yPFJlZlB0cjxQYXJz
ZWRDb29raWU+ID4gcmVzdWx0OwogICAgIGNvb2tpZU1hbmFnZXIoKS5nZXRSYXdDb29raWVzKHJl
c3VsdCwgdXJsLCBXaXRoSHR0cE9ubHlDb29raWVzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHJlc3VsdC5zaXplKCk7IGkrKykKICAgICAgICAgcmVzdWx0W2ldLT5hcHBlbmRXZWJDb3Jl
Q29va2llKHJhd0Nvb2tpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
YmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS9Db29raWVEYXRhYmFzZUJhY2tp
bmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURh
dGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNwcAppbmRleCA5
MDc2MTQ2YTIzYWUzMDIxN2E1ZjI0MDIxYWYxZGQ3MDM2NzFjMDJjLi5mNWE1YmIwMTQ0MGFmNDAz
NDgxOTdjYmI2YjJlMTg4ODQ2MWZlZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNl
QmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5
L0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmNw
cApAQCAtMTk3LDE5ICsxOTcsMTkgQEAgdm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6
Y2xvc2UoKQogICAgICAgICBtX2RiLmNsb3NlKCk7CiB9CiAKLXZvaWQgQ29va2llRGF0YWJhc2VC
YWNraW5nU3RvcmU6Omluc2VydChjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSkKK3ZvaWQgQ29v
a2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omluc2VydChjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENv
b2tpZT4gY29va2llKQogewogICAgIENvb2tpZUxvZygiQ29va2llQmFja2luZ1N0b3JlIC0gYWRk
aW5nIGluc2VydGluZyBjb29raWUgJXMgdG8gcXVldWUuIiwgY29va2llLT50b1N0cmluZygpLnV0
ZjgoKS5kYXRhKCkpOwogICAgIGFkZFRvQ2hhbmdlUXVldWUoY29va2llLCBJbnNlcnQpOwogfQog
Ci12b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjp1cGRhdGUoY29uc3QgUGFyc2VkQ29v
a2llKiBjb29raWUpCit2b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjp1cGRhdGUoY29u
c3QgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IGNvb2tpZSkKIHsKICAgICBDb29raWVMb2coIkNv
b2tpZUJhY2tpbmdTdG9yZSAtIGFkZGluZyB1cGRhdGluZyBjb29raWUgJXMgdG8gcXVldWUuIiwg
Y29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGFkZFRvQ2hhbmdlUXVldWUo
Y29va2llLCBVcGRhdGUpOwogfQogCi12b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjpy
ZW1vdmUoY29uc3QgUGFyc2VkQ29va2llKiBjb29raWUpCit2b2lkIENvb2tpZURhdGFiYXNlQmFj
a2luZ1N0b3JlOjpyZW1vdmUoY29uc3QgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IGNvb2tpZSkK
IHsKICAgICBDb29raWVMb2coIkNvb2tpZUJhY2tpbmdTdG9yZSAtIGFkZGluZyBkZWxldGluZyBj
b29raWUgJXMgdG8gcXVldWUuIiwgY29va2llLT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwog
ICAgIGFkZFRvQ2hhbmdlUXVldWUoY29va2llLCBEZWxldGUpOwpAQCAtMjUyLDE4ICsyNTIsMTgg
QEAgdm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6aW52b2tlUmVtb3ZlQWxsKCkKICAg
ICB9CiB9CiAKLXZvaWQgQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6OmdldENvb2tpZXNGcm9t
RGF0YWJhc2UoVmVjdG9yPFBhcnNlZENvb2tpZSo+JiBzdGFja09mQ29va2llcywgdW5zaWduZWQg
aW50IGxpbWl0KQordm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6Z2V0Q29va2llc0Zy
b21EYXRhYmFzZShWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiYgc3RhY2tPZkNvb2tpZXMs
IHVuc2lnbmVkIGxpbWl0KQogewogICAgIC8vIEl0IGlzIG5vdCBhIGh1Z2UgcGVyZm9ybWFuY2Ug
aGl0IHRvIHdhaXQgb24gdGhlIHJlcGx5IGhlcmUgYmVjYXVzZSB0aGlzIGlzIG9ubHkgZG9uZSBv
bmNlIGR1cmluZyBzZXR1cCBhbmQgd2hlbiB0dXJuaW5nIG9mZiBwcml2YXRlIG1vZGUuCi0gICAg
VHlwZWRSZXBseUJ1ZmZlcjwgVmVjdG9yPFBhcnNlZENvb2tpZSo+KiA+IHJlcGx5QnVmZmVyKDAp
OworICAgIFR5cGVkUmVwbHlCdWZmZXI8IFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+KiA+
IHJlcGx5QnVmZmVyKDApOwogICAgIGRpc3BhdGNoTWVzc2FnZShjcmVhdGVNZXRob2RDYWxsTWVz
c2FnZVdpdGhSZXR1cm4oJkNvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjppbnZva2VHZXRDb29r
aWVzV2l0aExpbWl0LCAmcmVwbHlCdWZmZXIsIHRoaXMsIGxpbWl0KSk7Ci0gICAgVmVjdG9yPFBh
cnNlZENvb2tpZSo+KiBjb29raWVzID0gcmVwbHlCdWZmZXIucG9pbnRlcigpOworICAgIFZlY3Rv
cjxSZWZQdHI8UGFyc2VkQ29va2llPiA+KiBjb29raWVzID0gcmVwbHlCdWZmZXIucG9pbnRlcigp
OwogICAgIGlmIChjb29raWVzKQogICAgICAgICBzdGFja09mQ29va2llcy5zd2FwKCpjb29raWVz
KTsKICAgICBkZWxldGUgY29va2llczsKIH0KIAotVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBDb29r
aWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6aW52b2tlR2V0Q29va2llc1dpdGhMaW1pdCh1bnNpZ25l
ZCBpbnQgbGltaXQpCitWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiogQ29va2llRGF0YWJh
c2VCYWNraW5nU3RvcmU6Omludm9rZUdldENvb2tpZXNXaXRoTGltaXQodW5zaWduZWQgbGltaXQp
CiB7CiAgICAgQVNTRVJUKGlzQ3VycmVudFRocmVhZCgpKTsKIApAQCAtMjkwLDcgKzI5MCw3IEBA
IFZlY3RvcjxQYXJzZWRDb29raWUqPiogQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmU6Omludm9r
ZUdldENvb2tpZXNXaXRoTGltaXQodW5zCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAg
IFZlY3RvcjxQYXJzZWRDb29raWUqPiogY29va2llcyA9IG5ldyBWZWN0b3I8UGFyc2VkQ29va2ll
Kj47CisgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4qIGNvb2tpZXMgPSBuZXcgVmVj
dG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID47CiAgICAgd2hpbGUgKHNlbGVjdFN0YXRlbWVudC5z
dGVwKCkgPT0gU1FMUmVzdWx0Um93KSB7CiAgICAgICAgIC8vIFRoZXJlIGlzIGEgcm93IHRvIGZl
dGNoCiAKQEAgLTMwNSw3ICszMDUsNyBAQCBWZWN0b3I8UGFyc2VkQ29va2llKj4qIENvb2tpZURh
dGFiYXNlQmFja2luZ1N0b3JlOjppbnZva2VHZXRDb29raWVzV2l0aExpbWl0KHVucwogICAgICAg
ICBkb3VibGUgY3JlYXRpb25UaW1lID0gc2VsZWN0U3RhdGVtZW50LmdldENvbHVtbkRvdWJsZSg4
KTsKICAgICAgICAgU3RyaW5nIHByb3RvY29sID0gc2VsZWN0U3RhdGVtZW50LmdldENvbHVtblRl
eHQoOSk7CiAKLSAgICAgICAgY29va2llcy0+YXBwZW5kKG5ldyBQYXJzZWRDb29raWUobmFtZSwg
dmFsdWUsIGRvbWFpbiwgcHJvdG9jb2wsIHBhdGgsIGV4cGlyeSwgbGFzdEFjY2Vzc2VkLCBjcmVh
dGlvblRpbWUsIGlzU2VjdXJlLCBpc0h0dHBPbmx5KSk7CisgICAgICAgIGNvb2tpZXMtPmFwcGVu
ZChQYXJzZWRDb29raWU6OmNyZWF0ZShuYW1lLCB2YWx1ZSwgZG9tYWluLCBwcm90b2NvbCwgcGF0
aCwgZXhwaXJ5LCBsYXN0QWNjZXNzZWQsIGNyZWF0aW9uVGltZSwgaXNTZWN1cmUsIGlzSHR0cE9u
bHkpKTsKICAgICB9CiAKICAgICByZXR1cm4gY29va2llczsKQEAgLTM4OSw3ICszODksNyBAQCB2
b2lkIENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjppbnZva2VTZW5kQ2hhbmdlc1RvRGF0YWJh
c2UoKQogICAgIHNpemVfdCBzaXplT2ZDaGFuZ2UgPSBjaGFuZ2VkQ29va2llcy5zaXplKCk7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplT2ZDaGFuZ2U7IGkrKykgewogICAgICAgICBT
UUxpdGVTdGF0ZW1lbnQqIG1fc3RhdGVtZW50OwotICAgICAgICBjb25zdCBQYXJzZWRDb29raWUg
Y29va2llID0gY2hhbmdlZENvb2tpZXNbaV0uZmlyc3Q7CisgICAgICAgIGNvbnN0IFJlZlB0cjxQ
YXJzZWRDb29raWU+IGNvb2tpZSA9IGNoYW5nZWRDb29raWVzW2ldLmZpcnN0OwogICAgICAgICBV
cGRhdGVQYXJhbWV0ZXIgYWN0aW9uID0gY2hhbmdlZENvb2tpZXNbaV0uc2Vjb25kOwogCiAgICAg
ICAgIGlmIChhY3Rpb24gPT0gRGVsZXRlKSB7CkBAIC0zOTcsOCArMzk3LDggQEAgdm9pZCBDb29r
aWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6aW52b2tlU2VuZENoYW5nZXNUb0RhdGFiYXNlKCkKICAg
ICAgICAgICAgIENvb2tpZUxvZygiQ29va2llQmFja2luZ1N0b3JlIC0gZGVsZXRpbmcgY29va2ll
ICVzLiIsIGNvb2tpZS50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgICAgICAgICAv
LyBCaW5kcyBhbGwgdGhlIHZhbHVlcwotICAgICAgICAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5k
VGV4dCgxLCBjb29raWUubmFtZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMiwgY29va2ll
LmRvbWFpbigpKQotICAgICAgICAgICAgICAgIHx8IG1fc3RhdGVtZW50LT5iaW5kVGV4dCgzLCBj
b29raWUucGF0aCgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoNCwgY29va2llLnByb3RvY29s
KCkpKSB7CisgICAgICAgICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDEsIGNvb2tpZS0+
bmFtZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMiwgY29va2llLT5kb21haW4oKSkKKyAg
ICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMywgY29va2llLT5wYXRoKCkp
IHx8IG1fc3RhdGVtZW50LT5iaW5kVGV4dCg0LCBjb29raWUtPnByb3RvY29sKCkpKSB7CiAgICAg
ICAgICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYmluZCBjb29raWUgZGF0YSB0byBkZWxldGUi
KTsKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlNRTGl0ZSBFcnJvciBNZXNzYWdlOiAlcyIs
IG1fZGIubGFzdEVycm9yTXNnKCkpOwogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwpAQCAtNDA2LDE5ICs0MDYsMTkgQEAgdm9pZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9y
ZTo6aW52b2tlU2VuZENoYW5nZXNUb0RhdGFiYXNlKCkKICAgICAgICAgICAgIH0KICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gVXBkYXRlKSB7Ci0gICAgICAgICAg
ICAgICAgQ29va2llTG9nKCJDb29raWVCYWNraW5nU3RvcmUgLSB1cGRhdGluZyBjb29raWUgJXMu
IiwgY29va2llLnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgQ29v
a2llTG9nKCJDb29raWVCYWNraW5nU3RvcmUgLSB1cGRhdGluZyBjb29raWUgJXMuIiwgY29va2ll
LT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fc3RhdGVtZW50
ID0gbV91cGRhdGVTdGF0ZW1lbnQ7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
ICAgIENvb2tpZUxvZygiQ29va2llQmFja2luZ1N0b3JlIC0gaW5zZXJ0aW5nIGNvb2tpZSAlcy4i
LCBjb29raWUudG9TdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICBDb29r
aWVMb2coIkNvb2tpZUJhY2tpbmdTdG9yZSAtIGluc2VydGluZyBjb29raWUgJXMuIiwgY29va2ll
LT50b1N0cmluZygpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICAgICAgICAgIG1fc3RhdGVtZW50
ID0gbV9pbnNlcnRTdGF0ZW1lbnQ7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEJp
bmRzIGFsbCB0aGUgdmFsdWVzCi0gICAgICAgICAgICBpZiAobV9zdGF0ZW1lbnQtPmJpbmRUZXh0
KDEsIGNvb2tpZS5uYW1lKCkpIHx8IG1fc3RhdGVtZW50LT5iaW5kVGV4dCgyLCBjb29raWUudmFs
dWUoKSkKLSAgICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMywgY29va2ll
LmRvbWFpbigpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoNCwgY29va2llLnBhdGgoKSkKLSAg
ICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZERvdWJsZSg1LCBjb29raWUuZXhwaXJ5
KCkpIHx8IG1fc3RhdGVtZW50LT5iaW5kRG91YmxlKDYsIGNvb2tpZS5sYXN0QWNjZXNzZWQoKSkK
LSAgICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZEludDY0KDcsIGNvb2tpZS5pc1Nl
Y3VyZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZEludDY0KDgsIGNvb2tpZS5pc0h0dHBPbmx5KCkp
Ci0gICAgICAgICAgICAgICAgfHwgbV9zdGF0ZW1lbnQtPmJpbmREb3VibGUoOSwgY29va2llLmNy
ZWF0aW9uVGltZSgpKSB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMTAsIGNvb2tpZS5wcm90b2Nv
bCgpKSkgeworICAgICAgICAgICAgaWYgKG1fc3RhdGVtZW50LT5iaW5kVGV4dCgxLCBjb29raWUt
Pm5hbWUoKSkgfHwgbV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDIsIGNvb2tpZS0+dmFsdWUoKSkKKyAg
ICAgICAgICAgICAgICB8fCBtX3N0YXRlbWVudC0+YmluZFRleHQoMywgY29va2llLT5kb21haW4o
KSkgfHwgbV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDQsIGNvb2tpZS0+cGF0aCgpKQorICAgICAgICAg
ICAgICAgIHx8IG1fc3RhdGVtZW50LT5iaW5kRG91YmxlKDUsIGNvb2tpZS0+ZXhwaXJ5KCkpIHx8
IG1fc3RhdGVtZW50LT5iaW5kRG91YmxlKDYsIGNvb2tpZS0+bGFzdEFjY2Vzc2VkKCkpCisgICAg
ICAgICAgICAgICAgfHwgbV9zdGF0ZW1lbnQtPmJpbmRJbnQ2NCg3LCBjb29raWUtPmlzU2VjdXJl
KCkpIHx8IG1fc3RhdGVtZW50LT5iaW5kSW50NjQoOCwgY29va2llLT5pc0h0dHBPbmx5KCkpCisg
ICAgICAgICAgICAgICAgfHwgbV9zdGF0ZW1lbnQtPmJpbmREb3VibGUoOSwgY29va2llLT5jcmVh
dGlvblRpbWUoKSkgfHwgbV9zdGF0ZW1lbnQtPmJpbmRUZXh0KDEwLCBjb29raWUtPnByb3RvY29s
KCkpKSB7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJDYW5ub3QgYmluZCBjb29raWUgZGF0
YSB0byBzYXZlIik7CiAgICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJTUUxpdGUgRXJyb3IgTWVz
c2FnZTogJXMiLCBtX2RiLmxhc3RFcnJvck1zZygpKTsKICAgICAgICAgICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQzOSwxMSArNDM5LDEwIEBAIHZvaWQgQ29va2llRGF0YWJhc2VC
YWNraW5nU3RvcmU6Omludm9rZVNlbmRDaGFuZ2VzVG9EYXRhYmFzZSgpCiAgICAgQ29va2llTG9n
KCJDb29raWVCYWNraW5nU3RvcmUgLSB0cmFuc2FjdGlvbiBjb21wbGV0ZSIpOwogfQogCi12b2lk
IENvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlOjphZGRUb0NoYW5nZVF1ZXVlKGNvbnN0IFBhcnNl
ZENvb2tpZSogY2hhbmdlZENvb2tpZSwgVXBkYXRlUGFyYW1ldGVyIGFjdGlvblBhcmFtKQordm9p
ZCBDb29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZTo6YWRkVG9DaGFuZ2VRdWV1ZShjb25zdCBQYXNz
UmVmUHRyPFBhcnNlZENvb2tpZT4gY2hhbmdlZENvb2tpZSwgVXBkYXRlUGFyYW1ldGVyIGFjdGlv
blBhcmFtKQogewogICAgIEFTU0VSVCghY2hhbmdlZENvb2tpZS0+aXNTZXNzaW9uKCkpOwotICAg
IFBhcnNlZENvb2tpZSBjb29raWVDb3B5KGNoYW5nZWRDb29raWUpOwotICAgIENvb2tpZUFjdGlv
biBhY3Rpb24oY29va2llQ29weSwgYWN0aW9uUGFyYW0pOworICAgIENvb2tpZUFjdGlvbiBhY3Rp
b24oY2hhbmdlZENvb2tpZSwgYWN0aW9uUGFyYW0pOwogICAgIHsKICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9jayhtX211dGV4KTsKICAgICAgICAgbV9jaGFuZ2VkQ29va2llcy5hcHBlbmQoYWN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
RGF0YWJhc2VCYWNraW5nU3RvcmUvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUv
Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUuaAppbmRleCA4ODM0ZjRlZjM0YmRlMzM0YTE5NDFh
ZjEwNTQzZjExNGE0MzljNGIxLi43NWMwYjc3MTg5ODA0MDgzYTE4N2Q0YmE3YzVkYzAzYmU4MjQ5
MWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tp
ZURhdGFiYXNlQmFja2luZ1N0b3JlL0Nvb2tpZURhdGFiYXNlQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVEYXRhYmFzZUJhY2tpbmdT
dG9yZS9Db29raWVEYXRhYmFzZUJhY2tpbmdTdG9yZS5oCkBAIC01MCwxNCArNTAsMTQgQEAgcHVi
bGljOgogCiAgICAgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgY29va2llSmFyKTsKIAotICAgIHZv
aWQgaW5zZXJ0KGNvbnN0IFBhcnNlZENvb2tpZSopOwotICAgIHZvaWQgdXBkYXRlKGNvbnN0IFBh
cnNlZENvb2tpZSopOwotICAgIHZvaWQgcmVtb3ZlKGNvbnN0IFBhcnNlZENvb2tpZSopOworICAg
IHZvaWQgaW5zZXJ0KGNvbnN0IFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPik7CisgICAgdm9pZCB1
cGRhdGUoY29uc3QgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+KTsKKyAgICB2b2lkIHJlbW92ZShj
b25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4pOwogCiAgICAgdm9pZCByZW1vdmVBbGwoKTsK
IAogICAgIC8vIElmIGEgbGltaXQgaXMgbm90IHNldCwgdGhlIG1ldGhvZCB3aWxsIHJldHVybiBh
bGwgY29va2llcyBpbiB0aGUgZGF0YWJhc2UKLSAgICB2b2lkIGdldENvb2tpZXNGcm9tRGF0YWJh
c2UoVmVjdG9yPFBhcnNlZENvb2tpZSo+JiBzdGFja09mQ29va2llcywgdW5zaWduZWQgaW50IGxp
bWl0ID0gMCk7CisgICAgdm9pZCBnZXRDb29raWVzRnJvbURhdGFiYXNlKFZlY3RvcjxSZWZQdHI8
UGFyc2VkQ29va2llPiA+JiBzdGFja09mQ29va2llcywgdW5zaWduZWQgbGltaXQgPSAwKTsKIAog
ICAgIHZvaWQgb3BlbkFuZExvYWREYXRhYmFzZVN5bmNocm9ub3VzbHkoY29uc3QgU3RyaW5nJiBj
b29raWVKYXIpOwogICAgIHZvaWQgc2VuZENoYW5nZXNUb0RhdGFiYXNlU3luY2hyb25vdXNseSgp
OwpAQCAtODEsMTggKzgxLDE4IEBAIHByaXZhdGU6CiAgICAgQ29va2llRGF0YWJhc2VCYWNraW5n
U3RvcmUoKTsKICAgICB+Q29va2llRGF0YWJhc2VCYWNraW5nU3RvcmUoKTsKIAotICAgIHZvaWQg
YWRkVG9DaGFuZ2VRdWV1ZShjb25zdCBQYXJzZWRDb29raWUqIGNoYW5nZWRDb29raWUsIFVwZGF0
ZVBhcmFtZXRlciBhY3Rpb25QYXJhbSk7CisgICAgdm9pZCBhZGRUb0NoYW5nZVF1ZXVlKGNvbnN0
IFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBjaGFuZ2VkQ29va2llLCBVcGRhdGVQYXJhbWV0ZXIg
YWN0aW9uUGFyYW0pOwogICAgIHZvaWQgc2VuZENoYW5nZXNUb0RhdGFiYXNlKGludCBpbnRlcnZh
bCk7CiAgICAgdm9pZCBzZW5kQ2hhbmdlc1RvRGF0YWJhc2VUaW1lckZpcmVkKCk7CiAKICAgICB2
b2lkIGludm9rZU9wZW4oY29uc3QgU3RyaW5nJiBjb29raWVKYXIpOwogICAgIHZvaWQgaW52b2tl
UmVtb3ZlQWxsKCk7Ci0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBpbnZva2VHZXRDb29raWVz
V2l0aExpbWl0KHVuc2lnbmVkIGludCBsaW1pdCk7CisgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRD
b29raWU+ID4qIGludm9rZUdldENvb2tpZXNXaXRoTGltaXQodW5zaWduZWQgbGltaXQpOwogICAg
IHZvaWQgaW52b2tlU2VuZENoYW5nZXNUb0RhdGFiYXNlKCk7CiAKICAgICB2b2lkIGNsb3NlKCk7
CiAKLSAgICB0eXBlZGVmIHBhaXI8Y29uc3QgUGFyc2VkQ29va2llLCBVcGRhdGVQYXJhbWV0ZXI+
IENvb2tpZUFjdGlvbjsKKyAgICB0eXBlZGVmIHBhaXI8Y29uc3QgUGFzc1JlZlB0cjxQYXJzZWRD
b29raWU+LCBVcGRhdGVQYXJhbWV0ZXI+IENvb2tpZUFjdGlvbjsKICAgICBWZWN0b3I8Q29va2ll
QWN0aW9uPiBtX2NoYW5nZWRDb29raWVzOwogICAgIE11dGV4IG1fbXV0ZXg7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hbmFnZXIuY3BwCmlu
ZGV4IDBiYmYyNzdhZTM0ODBhODY1ZmMxMTE2NTc4NGI0MGE1YzIxYzM4NWQuLmIyNDZkMjg5NWYw
YWFhMWJiMTJiOWJmZDU0MDZkOTVjZGIwN2Q0YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmNwcApAQCAtMTEwLDcgKzExMCw3
IEBAIENvb2tpZU1hbmFnZXI6On5Db29raWVNYW5hZ2VyKCkKIH0KIAogLy8gU29ydGluZyBsb2dp
YyBpcyBiYXNlZCBvbiBDb29raWUgU3BlYyBSRkM2MjY1LCBzZWN0aW9uIDUuNC4yCi1zdGF0aWMg
Ym9vbCBjb29raWVTb3J0ZXIoUGFyc2VkQ29va2llKiBhLCBQYXJzZWRDb29raWUqIGIpCitzdGF0
aWMgYm9vbCBjb29raWVTb3J0ZXIoUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IGEsIFBhc3NSZWZQ
dHI8UGFyc2VkQ29va2llPiBiKQogewogICAgIGlmIChhLT5wYXRoKCkubGVuZ3RoKCkgPT0gYi0+
cGF0aCgpLmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gYS0+Y3JlYXRpb25UaW1lKCkgPCBiLT5j
cmVhdGlvblRpbWUoKTsKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OnNl
dENvb2tpZXMoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBDb29raWVGaWx0
ZQogCiAgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gU2V0dGluZyBjb29raWVzIik7CiAg
ICAgQ29va2llUGFyc2VyIHBhcnNlcih1cmwpOwotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBj
b29raWVzID0gcGFyc2VyLnBhcnNlKHZhbHVlKTsKKyAgICBWZWN0b3I8UmVmUHRyPFBhcnNlZENv
b2tpZT4gPiBjb29raWVzID0gcGFyc2VyLnBhcnNlKHZhbHVlKTsKIAogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgY29va2llcy5zaXplKCk7ICsraSkgewogICAgICAgICBCYWNraW5nU3RvcmVS
ZW1vdmFsUG9saWN5IHRyZWF0bWVudCA9IG1fcHJpdmF0ZU1vZGUgPyBEb05vdFJlbW92ZUZyb21C
YWNraW5nU3RvcmUgOiBSZW1vdmVGcm9tQmFja2luZ1N0b3JlOwpAQCAtMTUwLDcgKzE1MCw3IEBA
IHZvaWQgQ29va2llTWFuYWdlcjo6c2V0Q29va2llcyhjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBjb29raWVzLCBDCiAgICAgQ29va2llUGFyc2VyIHBhcnNlcih1cmwpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY29va2llcy5zaXplKCk7ICsraSkgewogICAgICAg
ICBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5IHRyZWF0bWVudCA9IG1fcHJpdmF0ZU1vZGUgPyBE
b05vdFJlbW92ZUZyb21CYWNraW5nU3RvcmUgOiBSZW1vdmVGcm9tQmFja2luZ1N0b3JlOwotICAg
ICAgICBpZiAoUGFyc2VkQ29va2llKiBwYXJzZWRDb29raWUgPSBwYXJzZXIucGFyc2VPbmVDb29r
aWUoY29va2llc1tpXSkpCisgICAgICAgIGlmIChSZWZQdHI8UGFyc2VkQ29va2llPiBwYXJzZWRD
b29raWUgPSBwYXJzZXIucGFyc2VPbmVDb29raWUoY29va2llc1tpXSkpCiAgICAgICAgICAgICBj
aGVja0FuZFRyZWF0Q29va2llKHBhcnNlZENvb2tpZSwgdHJlYXRtZW50LCBmaWx0ZXIpOwogICAg
IH0KIH0KQEAgLTE2MSw3ICsxNjEsNyBAQCBTdHJpbmcgQ29va2llTWFuYWdlcjo6Z2V0Q29va2ll
KGNvbnN0IEtVUkwmIHVybCwgQ29va2llRmlsdGVyIGZpbHRlcikgY29uc3QKICAgICBpZiAoIW1f
c3luY2VkV2l0aERhdGFiYXNlICYmICFtX3ByaXZhdGVNb2RlKQogICAgICAgICBtX2Nvb2tpZUJh
Y2tpbmdTdG9yZS0+b3BlbkFuZExvYWREYXRhYmFzZVN5bmNocm9ub3VzbHkoY29va2llSmFyKCkp
OwogCi0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+IHJhd0Nvb2tpZXM7CisgICAgVmVjdG9yPFJl
ZlB0cjxQYXJzZWRDb29raWU+ID4gcmF3Q29va2llczsKICAgICByYXdDb29raWVzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoc19tYXhDb29raWVDb3VudFBlckhvc3QpOwogCiAgICAgLy8gUmV0cmll
dmUgY29va2llcyByZWxhdGVkIHRvIHRoaXMgdXJsCkBAIC0xOTIsMTIgKzE5MiwxMiBAQCBTdHJp
bmcgQ29va2llTWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCkKIAogICAg
IENvb2tpZUxvZygiQ29va2llTWFuYWdlciAtIGdlbmVyYXRlSHRtbEZyYWdtZW50Rm9yQ29va2ll
c1xuIik7CiAKLSAgICBWZWN0b3I8UGFyc2VkQ29va2llKj4gY29va2llQ2FuZGlkYXRlczsKKyAg
ICBWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiBjb29raWVDYW5kaWRhdGVzOwogICAgIGZv
ciAoSGFzaE1hcDxTdHJpbmcsIENvb2tpZU1hcCo+OjppdGVyYXRvciBpdCA9IG1fbWFuYWdlck1h
cC5iZWdpbigpOyBpdCAhPSBtX21hbmFnZXJNYXAuZW5kKCk7ICsraXQpCiAgICAgICAgIGl0LT52
YWx1ZS0+Z2V0QWxsQ2hpbGRDb29raWVzKCZjb29raWVDYW5kaWRhdGVzKTsKIAogICAgIFN0cmlu
ZyByZXN1bHQ7Ci0gICAgUGFyc2VkQ29va2llKiBjb29raWUgPSAwOworICAgIFJlZlB0cjxQYXJz
ZWRDb29raWU+IGNvb2tpZSA9IDA7CiAgICAgcmVzdWx0LmFwcGVuZChTdHJpbmcoIjx0YWJsZSBz
dHlsZT1cIndvcmQtd3JhcDpicmVhay13b3JkXCIgY2VsbFNwYWNpbmc9XCIwXCIgY2VsbFBhZGRp
bmc9XCIwXCIgYm9yZGVyPVwiMVwiPjx0cj48dGg+RG9tYWluPC90aD48dGg+UGF0aDwvdGg+PHRo
PlByb3RvY29sPC90aD48dGg+TmFtZTwvdGg+PHRoPlZhbHVlPC90aD48dGg+U2VjdXJlPC90aD48
dGg+SHR0cE9ubHk8L3RoPjx0aD5TZXNzaW9uPC90aD48L3RyPiIpKTsKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGNvb2tpZUNhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29v
a2llID0gY29va2llQ2FuZGlkYXRlc1tpXTsKQEAgLTIyMyw3ICsyMjMsNyBAQCBTdHJpbmcgQ29v
a2llTWFuYWdlcjo6Z2VuZXJhdGVIdG1sRnJhZ21lbnRGb3JDb29raWVzKCkKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6OmdldFJhd0Nvb2tpZXMoVmVjdG9yPFBh
cnNlZENvb2tpZSo+ICZzdGFja09mQ29va2llcywgY29uc3QgS1VSTCYgcmVxdWVzdFVSTCwgQ29v
a2llRmlsdGVyIGZpbHRlcikgY29uc3QKK3ZvaWQgQ29va2llTWFuYWdlcjo6Z2V0UmF3Q29va2ll
cyhWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiAmc3RhY2tPZkNvb2tpZXMsIGNvbnN0IEtV
UkwmIHJlcXVlc3RVUkwsIENvb2tpZUZpbHRlciBmaWx0ZXIpIGNvbnN0CiB7CiAgICAgLy8gRm9y
Y2UgYSBzeW5jIGxvYWQgb2YgdGhlIGRhdGFiYXNlCiAgICAgaWYgKCFtX3N5bmNlZFdpdGhEYXRh
YmFzZSAmJiAhbV9wcml2YXRlTW9kZSkKQEAgLTIzNSw3ICsyMzUsNyBAQCB2b2lkIENvb2tpZU1h
bmFnZXI6OmdldFJhd0Nvb2tpZXMoVmVjdG9yPFBhcnNlZENvb2tpZSo+ICZzdGFja09mQ29va2ll
cywgY29uc3QgSwogICAgIGNvbnN0IGJvb2wgc3BlY2lhbENhc2VGb3JXZWJXb3JrcyA9IGludmFs
aWRTY2hlbWUgJiYgbV9zaG91bGREdW1wQWxsQ29va2llczsKICAgICBjb25zdCBib29sIGlzQ29u
bmVjdGlvblNlY3VyZSA9IHJlcXVlc3RVUkwucHJvdG9jb2xJcygiaHR0cHMiKSB8fCByZXF1ZXN0
VVJMLnByb3RvY29sSXMoIndzcyIpIHx8IHNwZWNpYWxDYXNlRm9yV2ViV29ya3M7CiAKLSAgICBW
ZWN0b3I8UGFyc2VkQ29va2llKj4gY29va2llQ2FuZGlkYXRlczsKKyAgICBWZWN0b3I8UmVmUHRy
PFBhcnNlZENvb2tpZT4gPiBjb29raWVDYW5kaWRhdGVzOwogICAgIFZlY3RvcjxDb29raWVNYXAq
PiBwcm90b2NvbHNUb1NlYXJjaDsKIAogICAgIC8vIFNwZWNpYWwgQ2FzZTogSWYgYSBzZXJ2ZXIg
c2V0cyBhICJzZWN1cmUiIGNvb2tpZSBvdmVyIGEgbm9uLXNlY3VyZSBjaGFubmVsIGFuZCB0cmll
cyB0byBhY2Nlc3MgdGhlIGNvb2tpZQpAQCAtMzE2LDcgKzMxNiw3IEBAIHZvaWQgQ29va2llTWFu
YWdlcjo6Z2V0UmF3Q29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4gJnN0YWNrT2ZDb29raWVz
LCBjb25zdCBLCiAgICAgQ29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gdGhlcmUgYXJlICVkIGNv
b2tpZXMgaW4gY2FuZGlkYXRlXG4iLCBjb29raWVDYW5kaWRhdGVzLnNpemUoKSk7CiAKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvb2tpZUNhbmRpZGF0ZXMuc2l6ZSgpOyArK2kpIHsKLSAg
ICAgICAgUGFyc2VkQ29va2llKiBjb29raWUgPSBjb29raWVDYW5kaWRhdGVzW2ldOworICAgICAg
ICBSZWZQdHI8UGFyc2VkQ29va2llPiBjb29raWUgPSBjb29raWVDYW5kaWRhdGVzW2ldOwogCiAg
ICAgICAgIC8vIEFjY29yZGluZyB0byB0aGUgcGF0aC1tYXRjaGVzIHJ1bGVzIGluIFJGQzYyNjUs
IHNlY3Rpb24gNS4xLjQsCiAgICAgICAgIC8vIHdlIHNob3VsZCBhZGQgYSAnLycgYXQgdGhlIGVu
ZCBvZiBjb29raWUtcGF0aCBmb3IgY29tcGFyaXNvbiBpZiB0aGUgY29va2llLXBhdGggaXMgbm90
IGVuZCB3aXRoICcvJy4KQEAgLTM1NSwxNyArMzU1LDE2IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6
c2V0Q29va2llSmFyKGNvbnN0IGNoYXIqIGZpbGVOYW1lKQogICAgIG1fY29va2llQmFja2luZ1N0
b3JlLT5vcGVuKG1fY29va2llSmFyRmlsZU5hbWUpOwogfQogCi12b2lkIENvb2tpZU1hbmFnZXI6
OmNoZWNrQW5kVHJlYXRDb29raWUoUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tp
bmdTdG9yZVJlbW92YWxQb2xpY3kgcG9zdFRvQmFja2luZ1N0b3JlLCBDb29raWVGaWx0ZXIgZmls
dGVyKQordm9pZCBDb29raWVNYW5hZ2VyOjpjaGVja0FuZFRyZWF0Q29va2llKFBhc3NSZWZQdHI8
UGFyc2VkQ29va2llPiBwcnBDYW5kaWRhdGVDb29raWUsIEJhY2tpbmdTdG9yZVJlbW92YWxQb2xp
Y3kgcG9zdFRvQmFja2luZ1N0b3JlLCBDb29raWVGaWx0ZXIgZmlsdGVyKQogeworICAgIFJlZlB0
cjxQYXJzZWRDb29raWU+IGNhbmRpZGF0ZUNvb2tpZSA9IHBycENhbmRpZGF0ZUNvb2tpZTsKICAg
ICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBjaGVja0FuZFRyZWF0Q29va2llIC0gcHJvY2Vz
c2luZyB1cmwgd2l0aCBkb21haW4gLSAlcyAmIHByb3RvY29sICVzXG4iLCBjYW5kaWRhdGVDb29r
aWUtPmRvbWFpbigpLnV0ZjgoKS5kYXRhKCksIGNhbmRpZGF0ZUNvb2tpZS0+cHJvdG9jb2woKS51
dGY4KCkuZGF0YSgpKTsKIAogICAgIC8vIERlbGV0ZSBpbnZhbGlkIGNvb2tpZXM6CiAgICAgLy8g
MSkgQSBjb29raWUgd2hpY2ggaXMgbm90IGZyb20gaHR0cCBzaG91bGRuJ3QgaGF2ZSBhIGh0dHBP
bmx5IHByb3BlcnR5LgogICAgIC8vIDIpIENvb2tpZXMgY29taW5nIGZyb20gc2NoZW1lcyB0aGF0
IHdlIGRvIG5vdCBzdXBwb3J0IGFuZCB0aGUgc3BlY2lhbCBmbGFnIGlzbid0IG9uCi0gICAgaWYg
KChmaWx0ZXIgPT0gTm9IdHRwT25seUNvb2tpZSAmJiBjYW5kaWRhdGVDb29raWUtPmlzSHR0cE9u
bHkoKSkgfHwgKHNob3VsZElnbm9yZVNjaGVtZShjYW5kaWRhdGVDb29raWUtPnByb3RvY29sKCkp
ICYmICFtX3Nob3VsZER1bXBBbGxDb29raWVzKSkgewotICAgICAgICBkZWxldGUgY2FuZGlkYXRl
Q29va2llOworICAgIGlmICgoZmlsdGVyID09IE5vSHR0cE9ubHlDb29raWUgJiYgY2FuZGlkYXRl
Q29va2llLT5pc0h0dHBPbmx5KCkpIHx8IChzaG91bGRJZ25vcmVTY2hlbWUoY2FuZGlkYXRlQ29v
a2llLT5wcm90b2NvbCgpKSAmJiAhbV9zaG91bGREdW1wQWxsQ29va2llcykpCiAgICAgICAgIHJl
dHVybjsKLSAgICB9CiAKICAgICBjb25zdCBib29sIGlnbm9yZURvbWFpbiA9IChjYW5kaWRhdGVD
b29raWUtPnByb3RvY29sKCkgPT0gImZpbGUiIHx8IGNhbmRpZGF0ZUNvb2tpZS0+cHJvdG9jb2wo
KSA9PSAibG9jYWwiKTsKIApAQCAtMzk5LDcgKzM5OCw3IEBAIHZvaWQgQ29va2llTWFuYWdlcjo6
Y2hlY2tBbmRUcmVhdENvb2tpZShQYXJzZWRDb29raWUqIGNhbmRpZGF0ZUNvb2tpZSwgQmFja2lu
Z1N0CiAgICAgLy8gSWYgcHJvdG9jb2wgc3VwcG9ydCBkb21haW4sIHdlIGhhdmUgdG8gdHJhdmVy
c2UgdGhlIGRvbWFpbiB0cmVlIHRvIGZpbmQgdGhlIHJpZ2h0CiAgICAgLy8gY29va2llTWFwIHRv
IGhhbmRsZSB3aXRoCiAgICAgaWYgKCFpZ25vcmVEb21haW4pCi0gICAgICAgIGN1ck1hcCA9IGZp
bmRPckNyZWF0ZUNvb2tpZU1hcChjdXJNYXAsICpjYW5kaWRhdGVDb29raWUpOworICAgICAgICBj
dXJNYXAgPSBmaW5kT3JDcmVhdGVDb29raWVNYXAoY3VyTWFwLCBjYW5kaWRhdGVDb29raWUpOwog
CiAgICAgLy8gTm93IHRoYXQgd2UgaGF2ZSB0aGUgcHJvcGVyIG1hcCBmb3IgdGhpcyBjb29raWUs
IHdlIGNhbiBtb2RpZnkgaXQKICAgICAvLyBJZiBjb29raWUgZG9lcyBub3QgZXhpc3QgYW5kIGhh
cyBleHBpcmVkLCBkZWxldGUgaXQKQEAgLTQxMywzMiArNDEyLDI3IEBAIHZvaWQgQ29va2llTWFu
YWdlcjo6Y2hlY2tBbmRUcmVhdENvb2tpZShQYXJzZWRDb29raWUqIGNhbmRpZGF0ZUNvb2tpZSwg
QmFja2luZ1N0CiAgICAgICAgICAgICBtX2Nvb2tpZUJhY2tpbmdTdG9yZS0+cmVtb3ZlKGNhbmRp
ZGF0ZUNvb2tpZSk7CiAgICAgICAgIGVsc2UgaWYgKGN1ck1hcCkgewogICAgICAgICAgICAgLy8g
UmVtb3ZlQ29va2llIHdpbGwgcmV0dXJuIDAgaWYgdGhlIGNvb2tpZSBkb2Vzbid0IGV4aXN0Lgot
ICAgICAgICAgICAgUGFyc2VkQ29va2llKiBleHBpcmVkID0gY3VyTWFwLT5yZW1vdmVDb29raWUo
Y2FuZGlkYXRlQ29va2llLCBmaWx0ZXIpOworICAgICAgICAgICAgUmVmUHRyPFBhcnNlZENvb2tp
ZT4gZXhwaXJlZCA9IGN1ck1hcC0+cmVtb3ZlQ29va2llKGNhbmRpZGF0ZUNvb2tpZSwgZmlsdGVy
KTsKICAgICAgICAgICAgIC8vIENvb2tpZSBpcyB1c2VsZXNzLCBSZW1vdmUgdGhlIGNvb2tpZSBm
cm9tIHRoZSBiYWNraW5nc3RvcmUgaWYgaXQgZXhpc3RzLgogICAgICAgICAgICAgLy8gQmFja3Vw
IGNoZWNrIGZvciBCYWNraW5nU3RvcmVDb29raWVFbnRyeSBpbmNhc2Ugc29tZW9uZSBpbmNvcnJl
Y3RseSB1c2VzIHRoaXMgZW51bS4KICAgICAgICAgICAgIGlmIChleHBpcmVkICYmIHBvc3RUb0Jh
Y2tpbmdTdG9yZSAhPSBCYWNraW5nU3RvcmVDb29raWVFbnRyeSAmJiAhZXhwaXJlZC0+aXNTZXNz
aW9uKCkpIHsKICAgICAgICAgICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIgLSBleHBp
cmVkIGNvb2tpZSBpcyBub25zZXNzaW9uLCBkZWxldGluZyBmcm9tIGRiIik7CiAgICAgICAgICAg
ICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPnJlbW92ZShleHBpcmVkKTsKICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGRlbGV0ZSBleHBpcmVkOwotCi0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgZGVsZXRlIGNhbmRpZGF0ZUNvb2tpZTsKKyAgICAgICAgfQogICAgIH0gZWxzZSB7CiAg
ICAgICAgIEFTU0VSVChjdXJNYXApOwogICAgICAgICBhZGRDb29raWVUb01hcChjdXJNYXAsIGNh
bmRpZGF0ZUNvb2tpZSwgcG9zdFRvQmFja2luZ1N0b3JlLCBmaWx0ZXIpOwogICAgIH0KIH0KIAot
dm9pZCBDb29raWVNYW5hZ2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwg
UGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29raWUsIEJhY2tpbmdTdG9yZVJlbW92YWxQb2xpY3kg
cG9zdFRvQmFja2luZ1N0b3JlLCBDb29raWVGaWx0ZXIgZmlsdGVyKQordm9pZCBDb29raWVNYW5h
Z2VyOjphZGRDb29raWVUb01hcChDb29raWVNYXAqIHRhcmdldE1hcCwgUGFzc1JlZlB0cjxQYXJz
ZWRDb29raWU+IHBycENhbmRpZGF0ZUNvb2tpZSwgQmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSBw
b3N0VG9CYWNraW5nU3RvcmUsIENvb2tpZUZpbHRlciBmaWx0ZXIpCiB7Ci0gICAgUGFyc2VkQ29v
a2llKiByZXBsYWNlZENvb2tpZSA9IDA7Ci0KLSAgICBpZiAoIXRhcmdldE1hcC0+YWRkT3JSZXBs
YWNlQ29va2llKGNhbmRpZGF0ZUNvb2tpZSwgJnJlcGxhY2VkQ29va2llLCBmaWx0ZXIpKSB7Cisg
ICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gcmVwbGFjZWRDb29raWUgPSAwOworICAgIFJlZlB0cjxQ
YXJzZWRDb29raWU+IGNhbmRpZGF0ZUNvb2tpZSA9IHBycENhbmRpZGF0ZUNvb2tpZTsKIAorICAg
IGlmICghdGFyZ2V0TWFwLT5hZGRPclJlcGxhY2VDb29raWUoY2FuZGlkYXRlQ29va2llLCByZXBs
YWNlZENvb2tpZSwgZmlsdGVyKSkgewogICAgICAgICBDb29raWVMb2coIkNvb2tpZU1hbmFnZXIg
LSByZWplY3RpbmcgbmV3IGNvb2tpZSAtICVzLlxuIiwgY2FuZGlkYXRlQ29va2llLT50b1N0cmlu
ZygpLnV0ZjgoKS5kYXRhKCkpOwotCi0gICAgICAgIGRlbGV0ZSBjYW5kaWRhdGVDb29raWU7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQ2NywxMyArNDYxLDEyIEBAIHZvaWQgQ29va2ll
TWFuYWdlcjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tp
ZSogY2FuZGlkYXRlCiAgICAgICAgICAgICAgICAgbV9jb29raWVCYWNraW5nU3RvcmUtPmluc2Vy
dChjYW5kaWRhdGVDb29raWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGRl
bGV0ZSByZXBsYWNlZENvb2tpZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIENvb2tp
ZUxvZygiQ29va2llTWFuYWdlciAtIGFkZGluZyBuZXcgY29va2llIC0gJXMuXG4iLCBjYW5kaWRh
dGVDb29raWUtPnRvU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBQYXJzZWRDb29raWUq
IG9sZGVzdENvb2tpZSA9IDA7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gb2xkZXN0Q29va2ll
ID0gMDsKICAgICAvLyBDaGVjayBpZiB3ZSBoYXZlIG5vdCByZWFjaGVkIHRoZSBwZXIgY29va2ll
IGRvbWFpbiBsaW1pdC4KICAgICAvLyBJZiB0aGF0IGlzIG5vdCB0cnVlLCB3ZSBjaGVjayBpZiB0
aGUgZ2xvYmFsIGxpbWl0IGhhcyBiZWVuIHJlYWNoZWQgaWYgYmFja2luZ3N0b3JlIG1vZGUgaXMg
b24KICAgICAvLyBUd28gcG9pbnRzOgpAQCAtNTAyLDggKzQ5NSw2IEBAIHZvaWQgQ29va2llTWFu
YWdlcjo6YWRkQ29va2llVG9NYXAoQ29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSog
Y2FuZGlkYXRlCiAgICAgICAgIGlmICghY2FuZGlkYXRlQ29va2llLT5pc1Nlc3Npb24oKSkKICAg
ICAgICAgICAgIG1fY29va2llQmFja2luZ1N0b3JlLT5pbnNlcnQoY2FuZGlkYXRlQ29va2llKTsK
ICAgICB9Ci0gICAgaWYgKG9sZGVzdENvb2tpZSkKLSAgICAgICAgZGVsZXRlIG9sZGVzdENvb2tp
ZTsKIH0KIAogdm9pZCBDb29raWVNYW5hZ2VyOjpnZXRCYWNraW5nU3RvcmVDb29raWVzKCkKQEAg
LTUxNiwxMSArNTA3LDExIEBAIHZvaWQgQ29va2llTWFuYWdlcjo6Z2V0QmFja2luZ1N0b3JlQ29v
a2llcygpCiAgICAgaWYgKG1fY291bnQpCiAgICAgICAgIHJlbW92ZUFsbENvb2tpZXMoRG9Ob3RS
ZW1vdmVGcm9tQmFja2luZ1N0b3JlKTsKIAotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBjb29r
aWVzOworICAgIFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+IGNvb2tpZXM7CiAgICAgbV9j
b29raWVCYWNraW5nU3RvcmUtPmdldENvb2tpZXNGcm9tRGF0YWJhc2UoY29va2llcyk7CiAgICAg
Q29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gQmFja2luZ3N0b3JlIGhhcyAlZCBjb29raWVzLCBs
b2FkaW5nIHRoZW0gaW4gbWVtb3J5IG5vdyIsIGNvb2tpZXMuc2l6ZSgpKTsKICAgICBmb3IgKHNp
emVfdCBpID0gMDsgaSA8IGNvb2tpZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgUGFyc2VkQ29v
a2llKiBuZXdDb29raWUgPSBjb29raWVzW2ldOworICAgICAgICBSZWZQdHI8UGFyc2VkQ29va2ll
PiBuZXdDb29raWUgPSBjb29raWVzW2ldOwogCiAgICAgICAgIC8vIFRoZSBJUCBmbGFnIGlzIG5v
dCBwZXJzaXN0ZWQgaW4gdGhlIGRhdGFiYXNlLgogICAgICAgICBpZiAoQmxhY2tCZXJyeTo6UGxh
dGZvcm06OmlzSVBBZGRyZXNzKG5ld0Nvb2tpZS0+ZG9tYWluKCkudXRmOCgpLmRhdGEoKSkpCkBA
IC01NTIsMTYgKzU0MywxNiBAQCB2b2lkIENvb2tpZU1hbmFnZXI6OnNldFByaXZhdGVNb2RlKGJv
b2wgcHJpdmF0ZU1vZGUpCiAgICAgICAgIGdldEJhY2tpbmdTdG9yZUNvb2tpZXMoKTsKIH0KIAot
Q29va2llTWFwKiBDb29raWVNYW5hZ2VyOjpmaW5kT3JDcmVhdGVDb29raWVNYXAoQ29va2llTWFw
KiBwcm90b2NvbE1hcCwgY29uc3QgUGFyc2VkQ29va2llJiBjYW5kaWRhdGVDb29raWUpCitDb29r
aWVNYXAqIENvb2tpZU1hbmFnZXI6OmZpbmRPckNyZWF0ZUNvb2tpZU1hcChDb29raWVNYXAqIHBy
b3RvY29sTWFwLCBjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gY2FuZGlkYXRlQ29va2ll
KQogewogICAgIC8vIEV4cGxvZGUgdGhlIGRvbWFpbiB3aXRoIHRoZSAnLicgZGVsaW1pdGVyCiAg
ICAgVmVjdG9yPFN0cmluZz4gZGVsaW1pdGVkSG9zdDsKIAogICAgIC8vIElmIHRoZSBkb21haW4g
aXMgYW4gSVAgYWRkcmVzcywgZG9uJ3Qgc3BsaXQgaXQuCi0gICAgaWYgKGNhbmRpZGF0ZUNvb2tp
ZS5kb21haW5Jc0lQQWRkcmVzcygpKQotICAgICAgICBkZWxpbWl0ZWRIb3N0LmFwcGVuZChjYW5k
aWRhdGVDb29raWUuZG9tYWluKCkpOworICAgIGlmIChjYW5kaWRhdGVDb29raWUtPmRvbWFpbklz
SVBBZGRyZXNzKCkpCisgICAgICAgIGRlbGltaXRlZEhvc3QuYXBwZW5kKGNhbmRpZGF0ZUNvb2tp
ZS0+ZG9tYWluKCkpOwogICAgIGVsc2UKLSAgICAgICAgY2FuZGlkYXRlQ29va2llLmRvbWFpbigp
LnNwbGl0KCIuIiwgZGVsaW1pdGVkSG9zdCk7CisgICAgICAgIGNhbmRpZGF0ZUNvb2tpZS0+ZG9t
YWluKCkuc3BsaXQoIi4iLCBkZWxpbWl0ZWRIb3N0KTsKIAogICAgIENvb2tpZU1hcCogY3VyTWFw
ID0gcHJvdG9jb2xNYXA7CiAgICAgc2l6ZV90IGhvc3RTaXplID0gZGVsaW1pdGVkSG9zdC5zaXpl
KCk7CkBAIC01NzYsNyArNTY3LDcgQEAgQ29va2llTWFwKiBDb29raWVNYW5hZ2VyOjpmaW5kT3JD
cmVhdGVDb29raWVNYXAoQ29va2llTWFwKiBwcm90b2NvbE1hcCwgY29uc3QgUGEKICAgICAgICAg
Q29va2llTWFwKiBuZXh0TWFwID0gY3VyTWFwLT5nZXRTdWJkb21haW5NYXAoZGVsaW1pdGVkSG9z
dFtpXSk7CiAgICAgICAgIGlmICghbmV4dE1hcCkgewogICAgICAgICAgICAgQ29va2llTG9nKCJD
b29raWVNYW5hZ2VyIC0gY2Fubm90IGZpbmQgbWFwXG4iKTsKLSAgICAgICAgICAgIGlmIChjYW5k
aWRhdGVDb29raWUuaGFzRXhwaXJlZCgpKQorICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZUNvb2tp
ZS0+aGFzRXhwaXJlZCgpKQogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAg
Q29va2llTG9nKCJDb29raWVNYW5hZ2VyIC0gY3JlYXRpbmcgJXMgaW4gY3VycmVudG1hcCAlc1xu
IiwgZGVsaW1pdGVkSG9zdFtpXS51dGY4KCkuZGF0YSgpLCBjdXJNYXAtPmdldE5hbWUoKS51dGY4
KCkuZGF0YSgpKTsKICAgICAgICAgICAgIG5leHRNYXAgPSBuZXcgQ29va2llTWFwKGRlbGltaXRl
ZEhvc3RbaV0pOwpAQCAtNjAyLDExICs1OTMsMTEgQEAgdm9pZCBDb29raWVNYW5hZ2VyOjpyZW1v
dmVDb29raWVXaXRoTmFtZShjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgY29va2llTmEK
IAogICAgIC8vIFdlIGdldCBhbGwgY29va2llcyBmcm9tIGFsbCBkb21haW5zIHRoYXQgZG9tYWlu
IG1hdGNoZXMgdGhlIHJlcXVlc3QgZG9tYWluCiAgICAgLy8gYW5kIGRlbGV0ZSBhbnkgY29va2ll
cyB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSB0aGF0IHBhdGggbWF0Y2hlcyB0aGUgcmVxdWVzdCBw
YXRoCi0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSo+IHJlc3VsdHM7CisgICAgVmVjdG9yPFJlZlB0
cjxQYXJzZWRDb29raWU+ID4gcmVzdWx0czsKICAgICBnZXRSYXdDb29raWVzKHJlc3VsdHMsIHVy
bCwgV2l0aEh0dHBPbmx5Q29va2llcyk7CiAgICAgLy8gRGVsZXRlIHRoZSBjb29raWVzIHRoYXQg
cGF0aCBtYXRjaGVzIHRoZSByZXF1ZXN0IHBhdGgKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IHJlc3VsdHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgUGFyc2VkQ29va2llKiBjb29raWUgPSBy
ZXN1bHRzW2ldOworICAgICAgICBSZWZQdHI8UGFyc2VkQ29va2llPiBjb29raWUgPSByZXN1bHRz
W2ldOwogICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdDYXNlKGNvb2tpZS0+bmFtZSgpLCBjb29r
aWVOYW1lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAodXJsLnBhdGgoKS5z
dGFydHNXaXRoKGNvb2tpZS0+cGF0aCgpLCBmYWxzZSkpIHsKQEAgLTY0MCw3ICs2MzEsNyBAQCB2
b2lkIENvb2tpZU1hbmFnZXI6OmNvb2tpZUxpbWl0Q2xlYW5VcChUaW1lcjxDb29raWVNYW5hZ2Vy
PiogdGltZXIpCiAgICAgQ29va2llTGltaXRMb2coIkNvb2tpZU1hbmFnZXIgLSBFeGNlc3M6ICVk
ICBBbW91bnQgdG8gRGVsZXRlOiAlZCIsIG51bWJlck9mQ29va2llc092ZXJMaW1pdCwgYW1vdW50
VG9EZWxldGUpOwogCiAgICAgLy8gQ2FsbCB0aGUgZGF0YWJhc2UgdG8gZGVsZXRlICdhbW91bnRU
b0RlbGV0ZScgb2YgY29va2llcwotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBjb29raWVzVG9E
ZWxldGU7CisgICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+ID4gY29va2llc1RvRGVsZXRl
OwogICAgIGNvb2tpZXNUb0RlbGV0ZS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFtb3VudFRvRGVs
ZXRlKTsKIAogICAgIENvb2tpZUxpbWl0TG9nKCJDb29raWVNYW5hZ2VyIC0gQ2FsbGluZyBkYXRh
YmFzZSB0byBjbGVhbiB1cCIpOwpAQCAtNjQ5LDcgKzY0MCw3IEBAIHZvaWQgQ29va2llTWFuYWdl
cjo6Y29va2llTGltaXRDbGVhblVwKFRpbWVyPENvb2tpZU1hbmFnZXI+KiB0aW1lcikKICAgICAv
LyBDb29raWVzIGFyZSBvcmRlcmVkIGluIEFTQyBvcmRlciBieSBsYXN0QWNjZXNzZWQKICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGFtb3VudFRvRGVsZXRlOyArK2kpIHsKICAgICAgICAgLy8g
RXhwaXJlIHRoZW0gYW5kIGNhbGwgY2hlY2thbmR0cmVhdCB0byBkZWxldGUgdGhlbSBmcm9tIG1l
bW9yeSBhbmQgZGF0YWJhc2UKLSAgICAgICAgUGFyc2VkQ29va2llKiBuZXdDb29raWUgPSBjb29r
aWVzVG9EZWxldGVbaV07CisgICAgICAgIFJlZlB0cjxQYXJzZWRDb29raWU+IG5ld0Nvb2tpZSA9
IGNvb2tpZXNUb0RlbGV0ZVtpXTsKICAgICAgICAgQ29va2llTGltaXRMb2coIkNvb2tpZU1hbmFn
ZXIgLSBFeHBpcmUgY29va2llOiAlcyBhbmQgZGVsZXRlIiwgbmV3Q29va2llLT50b1N0cmluZygp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICBuZXdDb29raWUtPmZvcmNlRXhwaXJlKCk7CiAgICAg
ICAgIGNoZWNrQW5kVHJlYXRDb29raWUobmV3Q29va2llLCBSZW1vdmVGcm9tQmFja2luZ1N0b3Jl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2ll
TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5h
Z2VyLmgKaW5kZXggM2QxMDFkOWVkNzM2MzdjYzdmZmZkZDdmYzRjM2FiYzg1MzRhMjRiNS4uMGQ2
OTBmYzY5MWMyNzUyN2FjNjI4NTIxMDMyNTdkNTEzNzBhZDk1MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVNYW5hZ2VyLmgKQEAgLTk5LDcgKzk5
LDcgQEAgcHVibGljOgogICAgIFN0cmluZyBnZXRDb29raWUoY29uc3QgS1VSTCYgcmVxdWVzdFVS
TCwgQ29va2llRmlsdGVyKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgYWxsIGNvb2tpZXMgdGhh
dCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgVVJMIGFzIHJhdyBjb29raWVzLgot
ICAgIHZvaWQgZ2V0UmF3Q29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4mIHN0YWNrT2ZDb29r
aWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29raWVGaWx0ZXIgPSBXaXRoSHR0cE9ubHlD
b29raWVzKSBjb25zdDsKKyAgICB2b2lkIGdldFJhd0Nvb2tpZXMoVmVjdG9yPFJlZlB0cjxQYXJz
ZWRDb29raWU+ID4mIHN0YWNrT2ZDb29raWVzLCBjb25zdCBLVVJMJiByZXF1ZXN0VVJMLCBDb29r
aWVGaWx0ZXIgPSBXaXRoSHR0cE9ubHlDb29raWVzKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBm
cmllbmQgQ29va2llTWFuYWdlciYgY29va2llTWFuYWdlcigpOwpAQCAtMTA4LDExICsxMDgsMTEg
QEAgcHJpdmF0ZToKICAgICBDb29raWVNYW5hZ2VyKCk7CiAgICAgdmlydHVhbCB+Q29va2llTWFu
YWdlcigpOwogCi0gICAgdm9pZCBjaGVja0FuZFRyZWF0Q29va2llKFBhcnNlZENvb2tpZSosIEJh
Y2tpbmdTdG9yZVJlbW92YWxQb2xpY3ksIENvb2tpZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tp
ZXMpOworICAgIHZvaWQgY2hlY2tBbmRUcmVhdENvb2tpZShQYXNzUmVmUHRyPFBhcnNlZENvb2tp
ZT4gcHJwQ2FuZGlkYXRlQ29va2llLCBCYWNraW5nU3RvcmVSZW1vdmFsUG9saWN5LCBDb29raWVG
aWx0ZXIgPSBXaXRoSHR0cE9ubHlDb29raWVzKTsKIAotICAgIHZvaWQgYWRkQ29va2llVG9NYXAo
Q29va2llTWFwKiB0YXJnZXRNYXAsIFBhcnNlZENvb2tpZSogY2FuZGlkYXRlQ29va2llLCBCYWNr
aW5nU3RvcmVSZW1vdmFsUG9saWN5IHBvc3RUb0JhY2tpbmdTdG9yZSwgQ29va2llRmlsdGVyID0g
V2l0aEh0dHBPbmx5Q29va2llcyk7CisgICAgdm9pZCBhZGRDb29raWVUb01hcChDb29raWVNYXAq
IHRhcmdldE1hcCwgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IHBycENhbmRpZGF0ZUNvb2tpZSwg
QmFja2luZ1N0b3JlUmVtb3ZhbFBvbGljeSBwb3N0VG9CYWNraW5nU3RvcmUsIENvb2tpZUZpbHRl
ciA9IFdpdGhIdHRwT25seUNvb2tpZXMpOwogCi0gICAgQ29va2llTWFwKiBmaW5kT3JDcmVhdGVD
b29raWVNYXAoQ29va2llTWFwKiBwcm90b2NvbE1hcCwgY29uc3QgUGFyc2VkQ29va2llJiBjYW5k
aWRhdGVDb29raWUpOworICAgIENvb2tpZU1hcCogZmluZE9yQ3JlYXRlQ29va2llTWFwKENvb2tp
ZU1hcCogcHJvdG9jb2xNYXAsIGNvbnN0IFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBjYW5kaWRh
dGVDb29raWUpOwogCiAgICAgdm9pZCBpbml0aWF0ZUNvb2tpZUxpbWl0Q2xlYW5VcCgpOwogICAg
IHZvaWQgY29va2llTGltaXRDbGVhblVwKFRpbWVyPENvb2tpZU1hbmFnZXI+Kik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5jcHAKaW5kZXggYWY0
ODViNTRjMjBlY2NmY2EwYWE0ZDk5NWZiNzIwYTQ1MzRkNzhhNC4uZTQ1ZTNiOGJiZjdkZjA0Zjg0
YjM0MzI3YmQzNTRkZWJlYmRhOTczZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vYmxhY2tiZXJyeS9Db29raWVNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvQ29va2llTWFwLmNwcApAQCAtNTQsOCArNTQsOSBAQCBDb29raWVNYXA6On5D
b29raWVNYXAoKQogICAgIGRlbGV0ZUFsbENvb2tpZXNBbmREb21haW5zKCk7CiB9CiAKLWJvb2wg
Q29va2llTWFwOjphZGRPclJlcGxhY2VDb29raWUoUGFyc2VkQ29va2llKiBjYW5kaWRhdGVDb29r
aWUsIFBhcnNlZENvb2tpZSoqIHJlcGxhY2VkQ29va2llLCBDb29raWVGaWx0ZXIgZmlsdGVyKQor
Ym9vbCBDb29raWVNYXA6OmFkZE9yUmVwbGFjZUNvb2tpZShQYXNzUmVmUHRyPFBhcnNlZENvb2tp
ZT4gcHJwQ2FuZGlkYXRlQ29va2llLCBSZWZQdHI8UGFyc2VkQ29va2llPiYgcmVwbGFjZWRDb29r
aWUsIENvb2tpZUZpbHRlciBmaWx0ZXIpCiB7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gY2Fu
ZGlkYXRlQ29va2llID0gcHJwQ2FuZGlkYXRlQ29va2llOwogICAgIENvb2tpZUxvZygiQ29va2ll
TWFwIC0gQXR0ZW1wdGluZyB0byBhZGQgY29va2llIC0gJXMiLCBjb29raWUtPm5hbWUoKS51dGY4
KCkuZGF0YSgpKTsKIAogICAgIHNpemVfdCBjb29raWVDb3VudCA9IG1fY29va2llVmVjdG9yLnNp
emUoKTsKQEAgLTY1LDkgKzY2LDkgQEAgYm9vbCBDb29raWVNYXA6OmFkZE9yUmVwbGFjZUNvb2tp
ZShQYXJzZWRDb29raWUqIGNhbmRpZGF0ZUNvb2tpZSwgUGFyc2VkQ29va2llKioKICAgICAgICAg
ICAgIGlmIChmaWx0ZXIgPT0gTm9IdHRwT25seUNvb2tpZSAmJiBtX2Nvb2tpZVZlY3RvcltpXS0+
aXNIdHRwT25seSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICAg
ICAgKnJlcGxhY2VkQ29va2llID0gbV9jb29raWVWZWN0b3JbaV07CisgICAgICAgICAgICByZXBs
YWNlZENvb2tpZSA9IG1fY29va2llVmVjdG9yW2ldOwogICAgICAgICAgICAgbV9jb29raWVWZWN0
b3JbaV0gPSBjYW5kaWRhdGVDb29raWU7Ci0gICAgICAgICAgICBpZiAoKnJlcGxhY2VkQ29va2ll
ID09IG1fb2xkZXN0Q29va2llKQorICAgICAgICAgICAgaWYgKHJlcGxhY2VkQ29va2llID09IG1f
b2xkZXN0Q29va2llKQogICAgICAgICAgICAgICAgIHVwZGF0ZU9sZGVzdENvb2tpZSgpOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTgxLDEwICs4MiwxMCBAQCBib29s
IENvb2tpZU1hcDo6YWRkT3JSZXBsYWNlQ29va2llKFBhcnNlZENvb2tpZSogY2FuZGlkYXRlQ29v
a2llLCBQYXJzZWRDb29raWUqKgogICAgIHJldHVybiB0cnVlOwogfQogCi1QYXJzZWRDb29raWUq
IENvb2tpZU1hcDo6cmVtb3ZlQ29va2llQXRJbmRleChpbnQgcG9zaXRpb24sIGNvbnN0IFBhcnNl
ZENvb2tpZSogY29va2llKQorUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IENvb2tpZU1hcDo6cmVt
b3ZlQ29va2llQXRJbmRleChpbnQgcG9zaXRpb24sIGNvbnN0IFBhc3NSZWZQdHI8UGFyc2VkQ29v
a2llPiBjb29raWUpCiB7CiAgICAgQVNTRVJUKDAgPD0gcG9zaXRpb24gJiYgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHBvc2l0aW9uKSA8IG1fY29va2llVmVjdG9yLnNpemUoKSk7Ci0gICAgUGFyc2Vk
Q29va2llKiBwcmV2Q29va2llID0gbV9jb29raWVWZWN0b3JbcG9zaXRpb25dOworICAgIFJlZlB0
cjxQYXJzZWRDb29raWU+IHByZXZDb29raWUgPSBtX2Nvb2tpZVZlY3Rvcltwb3NpdGlvbl07CiAg
ICAgbV9jb29raWVWZWN0b3IucmVtb3ZlKHBvc2l0aW9uKTsKIAogICAgIGlmIChwcmV2Q29va2ll
ID09IG1fb2xkZXN0Q29va2llKQpAQCAtOTQsNyArOTUsNiBAQCBQYXJzZWRDb29raWUqIENvb2tp
ZU1hcDo6cmVtb3ZlQ29va2llQXRJbmRleChpbnQgcG9zaXRpb24sIGNvbnN0IFBhcnNlZENvb2tp
ZSogYwogICAgICAgICAvLyB0byB0aGUgY29va2llIGluIG1lbW9yeSB0b28uCiAgICAgICAgIGlm
IChjb29raWUtPmlzRm9yY2VFeHBpcmVkKCkpCiAgICAgICAgICAgICBwcmV2Q29va2llLT5mb3Jj
ZUV4cGlyZSgpOwotICAgICAgICBkZWxldGUgY29va2llOwogICAgIH0KIAogICAgIGlmICghcHJl
dkNvb2tpZS0+aXNTZXNzaW9uKCkpCkBAIC0xMDIsNyArMTAyLDcgQEAgUGFyc2VkQ29va2llKiBD
b29raWVNYXA6OnJlbW92ZUNvb2tpZUF0SW5kZXgoaW50IHBvc2l0aW9uLCBjb25zdCBQYXJzZWRD
b29raWUqIGMKICAgICByZXR1cm4gcHJldkNvb2tpZTsKIH0KIAotUGFyc2VkQ29va2llKiBDb29r
aWVNYXA6OnJlbW92ZUNvb2tpZShjb25zdCBQYXJzZWRDb29raWUqIGNvb2tpZSwgQ29va2llRmls
dGVyIGZpbHRlcikKK1Bhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBDb29raWVNYXA6OnJlbW92ZUNv
b2tpZShjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4gY29va2llLCBDb29raWVGaWx0ZXIg
ZmlsdGVyKQogewogICAgIHNpemVfdCBjb29raWVDb3VudCA9IG1fY29va2llVmVjdG9yLnNpemUo
KTsKICAgICBmb3IgKHNpemVfdCBwb3NpdGlvbiA9IDA7IHBvc2l0aW9uIDwgY29va2llQ291bnQ7
ICsrcG9zaXRpb24pIHsKQEAgLTEzMCw3ICsxMzAsNyBAQCB2b2lkIENvb2tpZU1hcDo6YWRkU3Vi
ZG9tYWluTWFwKGNvbnN0IFN0cmluZyYgc3ViZG9tYWluLCBDb29raWVNYXAqIG5ld0RvbWFpbikK
ICAgICBtX3N1YmRvbWFpbnMuYWRkKHN1YmRvbWFpbiwgbmV3RG9tYWluKTsKIH0KIAotdm9pZCBD
b29raWVNYXA6OmdldEFsbENvb2tpZXMoVmVjdG9yPFBhcnNlZENvb2tpZSo+KiBzdGFja09mQ29v
a2llcykKK3ZvaWQgQ29va2llTWFwOjpnZXRBbGxDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2Vk
Q29va2llPiA+KiBzdGFja09mQ29va2llcykKIHsKICAgICBDb29raWVMb2coIkNvb2tpZU1hcCAt
IEF0dGVtcHRpbmcgdG8gY29weSBNYXA6JXMgY29va2llcyB3aXRoICVkIGNvb2tpZXMgaW50byB2
ZWN0b3JzIiwgbV9uYW1lLnV0ZjgoKS5kYXRhKCksIG1fY29va2llVmVjdG9yLnNpemUoKSk7CiAK
QEAgLTEzOCwxMiArMTM4LDExIEBAIHZvaWQgQ29va2llTWFwOjpnZXRBbGxDb29raWVzKFZlY3Rv
cjxQYXJzZWRDb29raWUqPiogc3RhY2tPZkNvb2tpZXMpCiAKICAgICBzaXplX3QgcG9zaXRpb24g
PSAwOwogICAgIHdoaWxlIChwb3NpdGlvbiA8IG1fY29va2llVmVjdG9yLnNpemUoKSkgewotICAg
ICAgICBQYXJzZWRDb29raWUqIG5ld0Nvb2tpZSA9IG1fY29va2llVmVjdG9yW3Bvc2l0aW9uXTsK
KyAgICAgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gbmV3Q29va2llID0gbV9jb29raWVWZWN0b3Jb
cG9zaXRpb25dOwogICAgICAgICBpZiAobmV3Q29va2llLT5oYXNFeHBpcmVkKCkpIHsKICAgICAg
ICAgICAgIC8vIE5vdGljZSB0aGF0IHdlIGRvbid0IGRlbGV0ZSBmcm9tIGJhY2tpbmdzdG9yZS4g
VGhlc2UgZXhwaXJlZCBjb29raWVzIHdpbGwgYmUKICAgICAgICAgICAgIC8vIGRlbGV0ZWQgd2hl
biBtYW5hZ2VyIGxvYWRzIHRoZSBiYWNraW5nc3RvcmUgYWdhaW4uCi0gICAgICAgICAgICBQYXJz
ZWRDb29raWUqIGV4cGlyZWQgPSByZW1vdmVDb29raWVBdEluZGV4KHBvc2l0aW9uLCBuZXdDb29r
aWUpOwotICAgICAgICAgICAgZGVsZXRlIGV4cGlyZWQ7CisgICAgICAgICAgICByZW1vdmVDb29r
aWVBdEluZGV4KHBvc2l0aW9uLCBuZXdDb29raWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgc3RhY2tPZkNvb2tpZXMtPmFwcGVuZChuZXdDb29raWUpOwogICAgICAgICAgICAgcG9z
aXRpb24rKzsKQEAgLTE1MywxMCArMTUyLDEwIEBAIHZvaWQgQ29va2llTWFwOjpnZXRBbGxDb29r
aWVzKFZlY3RvcjxQYXJzZWRDb29raWUqPiogc3RhY2tPZkNvb2tpZXMpCiAgICAgQ29va2llTG9n
KCJDb29raWVNYXAgLSBzdGFjayBvZiBjb29raWVzIG5vdyBoYXZlICVkIGNvb2tpZXMgaW4gaXQi
LCAoKnN0YWNrT2ZDb29raWVzKS5zaXplKCkpOwogfQogCi1QYXJzZWRDb29raWUqIENvb2tpZU1h
cDo6cmVtb3ZlT2xkZXN0Q29va2llKCkKK1Bhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBDb29raWVN
YXA6OnJlbW92ZU9sZGVzdENvb2tpZSgpCiB7CiAgICAgLy8gRklYTUU6IE1ha2Ugc3VyZSBpdCBm
aW5kcyB0aGUgR0xPQkFMIG9sZGVzdCBjb29raWUsIG5vdCB0aGUgZmlyc3Qgb2xkZXN0Y29va2ll
IGl0IGZpbmRzLgotICAgIFBhcnNlZENvb2tpZSogb2xkZXN0Q29va2llID0gbV9vbGRlc3RDb29r
aWU7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gb2xkZXN0Q29va2llID0gbV9vbGRlc3RDb29r
aWU7CiAKICAgICAvLyBJZiB0aGlzIG1hcCBoYXMgYW4gb2xkZXN0Q29va2llLCByZW1vdmUgaXQu
IElmIG5vdCwgZG8gYSBERlMgdG8gc2VhcmNoIGZvciBhIGNoaWxkIHRoYXQgZG9lcwogICAgIGlm
ICghb2xkZXN0Q29va2llKSB7CkBAIC0yMDMsMTMgKzIwMiwxMiBAQCB2b2lkIENvb2tpZU1hcDo6
ZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMoKQogewogICAgIGRlbGV0ZUFsbFZhbHVlcyhtX3N1
YmRvbWFpbnMpOwogICAgIG1fc3ViZG9tYWlucy5jbGVhcigpOwotICAgIGRlbGV0ZUFsbFZhbHVl
cyhtX2Nvb2tpZVZlY3Rvcik7CiAgICAgbV9jb29raWVWZWN0b3IuY2xlYXIoKTsKIAogICAgIG1f
b2xkZXN0Q29va2llID0gMDsKIH0KIAotdm9pZCBDb29raWVNYXA6OmdldEFsbENoaWxkQ29va2ll
cyhWZWN0b3I8UGFyc2VkQ29va2llKj4qIHN0YWNrT2ZDb29raWVzKQordm9pZCBDb29raWVNYXA6
OmdldEFsbENoaWxkQ29va2llcyhWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiogc3RhY2tP
ZkNvb2tpZXMpCiB7CiAgICAgQ29va2llTG9nKCJDb29raWVNYXAgLSBnZXRBbGxDaGlsZENvb2tp
ZXMgaW4gTWFwIC0gJXMiLCBnZXROYW1lKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgZ2V0QWxsQ29v
a2llcyhzdGFja09mQ29va2llcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2ti
ZXJyeS9Db29raWVNYXAuaAppbmRleCA2NzFhYzI5ODdlZTRlMDNkOTk0ZDE4MzY3ODFjNmVjZmEx
YzQ2NmMyLi45OGVkMDAxYWQ5MzMzYjYxZWQ4YjE0NjA5M2IyNzk0OGQ1ZGEwMzU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZU1hcC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llTWFwLmgKQEAgLTYwLDMy
ICs2MCwzMiBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBnZXROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9uYW1lOyB9CiAKICAgICAvLyBSZXR1cm4gZmFsc2UgaWYgdGhlIGNhbmRpZGF0ZUNv
b2tpZSBpcyByZWplY3RlZC4KLSAgICBib29sIGFkZE9yUmVwbGFjZUNvb2tpZShQYXJzZWRDb29r
aWUqIGNhbmRpZGF0ZUNvb2tpZSwgUGFyc2VkQ29va2llKiogcmVwbGFjZWRDb29raWUsIENvb2tp
ZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tpZXMpOworICAgIGJvb2wgYWRkT3JSZXBsYWNlQ29v
a2llKFBhc3NSZWZQdHI8UGFyc2VkQ29va2llPiBwcnBDYW5kaWRhdGVDb29raWUsIFJlZlB0cjxQ
YXJzZWRDb29raWU+JiByZXBsYWNlZENvb2tpZSwgQ29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5
Q29va2llcyk7CiAKICAgICAvLyBOZWVkIHRvIHJldHVybiB0aGUgcmVmZXJlbmNlIHRvIHRoZSBy
ZW1vdmVkIGNvb2tpZSBzbyBtYW5hZ2VyIGNhbiBkZWFsIHdpdGggaXQgKGdhcmJhZ2UgY29sbGVj
dCkuCi0gICAgUGFyc2VkQ29va2llKiByZW1vdmVDb29raWUoY29uc3QgUGFyc2VkQ29va2llKiwg
Q29va2llRmlsdGVyID0gV2l0aEh0dHBPbmx5Q29va2llcyk7CisgICAgUGFzc1JlZlB0cjxQYXJz
ZWRDb29raWU+IHJlbW92ZUNvb2tpZShjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4sIENv
b2tpZUZpbHRlciA9IFdpdGhIdHRwT25seUNvb2tpZXMpOwogCiAgICAgLy8gUmV0dXJucyBhIG1h
cCB3aXRoIHRoYXQgZ2l2ZW4gc3ViZG9tYWluLgogICAgIENvb2tpZU1hcCogZ2V0U3ViZG9tYWlu
TWFwKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgYWRkU3ViZG9tYWluTWFwKGNvbnN0IFN0cmlu
ZyYsIENvb2tpZU1hcCopOwogICAgIHZvaWQgZGVsZXRlQWxsQ29va2llc0FuZERvbWFpbnMoKTsK
IAotICAgIHZvaWQgZ2V0QWxsQ29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4qKTsKLSAgICB2
b2lkIGdldEFsbENoaWxkQ29va2llcyhWZWN0b3I8UGFyc2VkQ29va2llKj4qIHN0YWNrT2ZDb29r
aWVzKTsKLSAgICBQYXJzZWRDb29raWUqIHJlbW92ZU9sZGVzdENvb2tpZSgpOworICAgIHZvaWQg
Z2V0QWxsQ29va2llcyhWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiopOworICAgIHZvaWQg
Z2V0QWxsQ2hpbGRDb29raWVzKFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29va2llPiA+KiBzdGFja09m
Q29va2llcyk7CisgICAgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IHJlbW92ZU9sZGVzdENvb2tp
ZSgpOwogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlT2xkZXN0Q29va2llKCk7Ci0gICAgUGFy
c2VkQ29va2llKiByZW1vdmVDb29raWVBdEluZGV4KGludCBwb3NpdGlvbiwgY29uc3QgUGFyc2Vk
Q29va2llKik7CisgICAgUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IHJlbW92ZUNvb2tpZUF0SW5k
ZXgoaW50IHBvc2l0aW9uLCBjb25zdCBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4pOwogCi0gICAg
VmVjdG9yPFBhcnNlZENvb2tpZSo+IG1fY29va2llVmVjdG9yOworICAgIFZlY3RvcjxSZWZQdHI8
UGFyc2VkQ29va2llPiA+IG1fY29va2llVmVjdG9yOwogICAgIC8vIFRoZSBrZXkgaXMgYSBzdWJz
ZWN0aW9uIG9mIHRoZSBkb21haW4uCiAgICAgLy8gZXg6IGlmIGluc2VydGluZyBhY2NvdW50cy5n
b29nbGUuY29tICYgdGhpcyBjb29raWVtYXAgaXMgImNvbSIsIHRoaXMgc3ViZG9tYWluIG1hcCB3
aWxsIGNvbnRhaW4gImdvb2dsZSIKICAgICAvLyB0aGUgImdvb2dsZSIgY29va2llbWFwIHdpbGwg
Y29udGFpbiAiYWNjb3VudHMiIGluIGl0cyBzdWJkb21haW4gbWFwLgogICAgIEhhc2hNYXA8U3Ry
aW5nLCBDb29raWVNYXAqPiBtX3N1YmRvbWFpbnM7CiAKICAgICAvLyBTdG9yZSB0aGUgb2xkZXN0
IGNvb2tpZSB0byBzcGVlZCB1cCBMUlUgY2hlY2tzLgotICAgIFBhcnNlZENvb2tpZSogbV9vbGRl
c3RDb29raWU7CisgICAgUmVmUHRyPFBhcnNlZENvb2tpZT4gbV9vbGRlc3RDb29raWU7CiAgICAg
Y29uc3QgU3RyaW5nIG1fbmFtZTsKIAogICAgIC8vIEZJWE1FIDogc2hvdWxkIGhhdmUgYSBtX3No
b3VsZFVwZGF0ZSBmbGFnIHRvIHVwZGF0ZSB0aGUgbmV0d29yayBsYXllciBvbmx5IHdoZW4gdGhl
IG1hcCBoYXMgY2hhbmdlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Js
YWNrYmVycnkvQ29va2llUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNr
YmVycnkvQ29va2llUGFyc2VyLmNwcAppbmRleCA3OWEzYzMwNWVjYzJjYjU2YWRkMjRlNmZjZjZi
YzllZDFkNmM5YTI2Li5iNDgzNzc4YzA2NzQ2MzAyYjNmYjhmNzNjNjIxMTcwNWM5NTA2ZTIxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Db29raWVQYXJz
ZXIuY3BwCkBAIC0zNSwxMCArMzUsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSNkZWZp
bmUgTE9HX0FORF9ERUxFVEUoZm9ybWF0LCAuLi4pIFwKKyNkZWZpbmUgTE9HX0VSUk9SX0FORF9S
RVRVUk4oZm9ybWF0LCAuLi4pIFwKICAgICB7IFwKICAgICAgICAgTE9HX0VSUk9SKGZvcm1hdCwg
IyMgX19WQV9BUkdTX18pOyBcCi0gICAgICAgIGRlbGV0ZSByZXM7IFwKICAgICAgICAgcmV0dXJu
IDA7IFwKICAgICB9CiAKQEAgLTY5LDExICs2OCwxMSBAQCBDb29raWVQYXJzZXI6On5Db29raWVQ
YXJzZXIoKQogewogfQogCi1WZWN0b3I8UGFyc2VkQ29va2llKj4gQ29va2llUGFyc2VyOjpwYXJz
ZShjb25zdCBTdHJpbmcmIGNvb2tpZXMpCitWZWN0b3I8UmVmUHRyPFBhcnNlZENvb2tpZT4gPiBD
b29raWVQYXJzZXI6OnBhcnNlKGNvbnN0IFN0cmluZyYgY29va2llcykKIHsKICAgICB1bnNpZ25l
ZCBjb29raWVTdGFydCwgY29va2llRW5kID0gMDsKICAgICBkb3VibGUgY3VyVGltZSA9IGN1cnJl
bnRUaW1lKCk7Ci0gICAgVmVjdG9yPFBhcnNlZENvb2tpZSosIDQ+IHBhcnNlZENvb2tpZXM7Cisg
ICAgVmVjdG9yPFJlZlB0cjxQYXJzZWRDb29raWU+LCA0PiBwYXJzZWRDb29raWVzOwogCiAgICAg
dW5zaWduZWQgY29va2llc0xlbmd0aCA9IGNvb2tpZXMubGVuZ3RoKCk7CiAgICAgaWYgKCFjb29r
aWVzTGVuZ3RoKSAvLyBDb2RlIGJlbG93IGRvZXNuJ3QgaGFuZGxlIHRoaXMgY2FzZQpAQCAtOTYs
MjYgKzk1LDI2IEBAIFZlY3RvcjxQYXJzZWRDb29raWUqPiBDb29raWVQYXJzZXI6OnBhcnNlKGNv
bnN0IFN0cmluZyYgY29va2llcykKICAgICAgICAgaWYgKGNvb2tpZUVuZCA8IGNvb2tpZXNMZW5n
dGggJiYgaXNDb29raWVIZWFkZXJTZXBhcmF0b3IoY29va2llc1tjb29raWVFbmRdKSkKICAgICAg
ICAgICAgICsrY29va2llRW5kOwogCi0gICAgICAgIFBhcnNlZENvb2tpZSogY29va2llID0gcGFy
c2VPbmVDb29raWUoY29va2llcywgY29va2llU3RhcnQsIGNvb2tpZUVuZCAtIDEsIGN1clRpbWUp
OworICAgICAgICBSZWZQdHI8UGFyc2VkQ29va2llPiBjb29raWUgPSBwYXJzZU9uZUNvb2tpZShj
b29raWVzLCBjb29raWVTdGFydCwgY29va2llRW5kIC0gMSwgY3VyVGltZSk7CiAgICAgICAgIGlm
IChjb29raWUpCiAgICAgICAgICAgICBwYXJzZWRDb29raWVzLmFwcGVuZChjb29raWUpOwogICAg
IH0KICAgICByZXR1cm4gcGFyc2VkQ29va2llczsKIH0KIAotUGFyc2VkQ29va2llKiBDb29raWVQ
YXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llKQorUGFzc1JlZlB0cjxQ
YXJzZWRDb29raWU+IENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBj
b29raWUpCiB7CiAgICAgcmV0dXJuIHBhcnNlT25lQ29va2llKGNvb2tpZSwgMCwgY29va2llLmxl
bmd0aCgpIC0gMSwgY3VycmVudFRpbWUoKSk7CiB9CiAKIC8vIFRoZSBjb29raWUgU3RyaW5nIHBh
c3NlZCBpbnRvIHRoaXMgbWV0aG9kIHdpbGwgb25seSBjb250aWFuIHRoZSBuYW1lIHZhbHVlIHBh
aXJzIGFzIHdlbGwgYXMgb3RoZXIgcmVsYXRlZCBjb29raWUKIC8vIGF0dHJpYnV0ZXMgc3VjaCBh
cyBtYXgtYWdlIGFuZCBkb21haW4uIFNldC1Db29raWUgc2hvdWxkIG5ldmVyIGJlIHBhcnQgb2Yg
dGhpcyBzdHJpbmcuCi1QYXJzZWRDb29raWUqIENvb2tpZVBhcnNlcjo6cGFyc2VPbmVDb29raWUo
Y29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBlbmQsIGRvdWJs
ZSBjdXJUaW1lKQorUGFzc1JlZlB0cjxQYXJzZWRDb29raWU+IENvb2tpZVBhcnNlcjo6cGFyc2VP
bmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0LCB1bnNpZ25lZCBl
bmQsIGRvdWJsZSBjdXJUaW1lKQogewotICAgIFBhcnNlZENvb2tpZSogcmVzID0gbmV3IFBhcnNl
ZENvb2tpZShjdXJUaW1lKTsKKyAgICBSZWZQdHI8UGFyc2VkQ29va2llPiByZXMgPSBQYXJzZWRD
b29raWU6OmNyZWF0ZShjdXJUaW1lKTsKIAogICAgIGlmICghcmVzKQotICAgICAgICBMT0dfQU5E
X0RFTEVURSgiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICBMT0dfRVJST1JfQU5EX1JFVFVSTigi
T3V0IG9mIG1lbW9yeSIpOwogCiAgICAgcmVzLT5zZXRQcm90b2NvbChtX2RlZmF1bHRDb29raWVV
UkwucHJvdG9jb2woKSk7CiAKQEAgLTE2MCw3ICsxNTksNyBAQCBQYXJzZWRDb29raWUqIENvb2tp
ZVBhcnNlcjo6cGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0
YXJ0LAogICAgICAgICAgICAgdG9rZW5TdGFydCsrOwogCiAgICAgICAgIGlmIChuYW1lRW5kICsg
MSA8PSB0b2tlblN0YXJ0KQotICAgICAgICAgICAgTE9HX0FORF9ERUxFVEUoIkVtcHR5IG5hbWUu
IFJlamVjdGluZyB0aGUgY29va2llIik7CisgICAgICAgICAgICBMT0dfRVJST1JfQU5EX1JFVFVS
TigiRW1wdHkgbmFtZS4gUmVqZWN0aW5nIHRoZSBjb29raWUiKTsKIAogICAgICAgICBTdHJpbmcg
bmFtZSA9IGNvb2tpZS5zdWJzdHJpbmcodG9rZW5TdGFydCwgbmFtZUVuZCArIDEgLSBzdGFydCk7
CiAgICAgICAgIHJlcy0+c2V0TmFtZShuYW1lKTsKQEAgLTE4OSwxMCArMTg4LDkgQEAgUGFyc2Vk
Q29va2llKiBDb29raWVQYXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2ll
LCB1bnNpZ25lZCBzdGFydCwKIAogICAgIGlmIChoYXNOYW1lKQogICAgICAgICByZXMtPnNldFZh
bHVlKHZhbHVlKTsKLSAgICBlbHNlIGlmIChmb3VuZEVxdWFsKSB7Ci0gICAgICAgIGRlbGV0ZSBy
ZXM7CisgICAgZWxzZSBpZiAoZm91bmRFcXVhbCkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfSBl
bHNlCisgICAgZWxzZQogICAgICAgICByZXMtPnNldE5hbWUodmFsdWUpOyAvLyBObyBOQU1FPVZB
TFVFLCBvbmx5IE5BTUUKIAogICAgIHdoaWxlIChwYWlyRW5kIDwgZW5kKSB7CkBAIC0yNTAsNyAr
MjQ4LDcgQEAgUGFyc2VkQ29va2llKiBDb29raWVQYXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0
IFN0cmluZyYgY29va2llLCB1bnNpZ25lZCBzdGFydCwKICNpZiAwCiAgICAgICAgICAgICAgICAg
Ly8gQ2hlY2sgaWYgcGF0aCBhdHRyaWJ1dGUgaXMgYSBwcmVmaXggb2YgdGhlIHJlcXVlc3QgVVJJ
LgogICAgICAgICAgICAgICAgIGlmICghbV9kZWZhdWx0Q29va2llVVJMLnBhdGgoKS5zdGFydHNX
aXRoKHJlcy0+cGF0aCgpKSkKLSAgICAgICAgICAgICAgICAgICAgTE9HX0FORF9ERUxFVEUoIklu
dmFsaWQgY29va2llIGF0dHJpYnV0ZSAlcyAocGF0aCk6IGl0IGRvZXMgbm90IG1hdGggdGhlIFVS
TCIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgIExPR19FUlJP
Ul9BTkRfUkVUVVJOKCJJbnZhbGlkIGNvb2tpZSBhdHRyaWJ1dGUgJXMgKHBhdGgpOiBpdCBkb2Vz
IG5vdCBtYXRoIHRoZSBVUkwiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOwogI2VuZGlmCiAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBMT0dfRVJST1IoIkludmFsaWQgY29va2ll
IGF0dHJpYnV0ZSAlcyAocGF0aCkiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOwpAQCAtMjY2LDcg
KzI2NCw3IEBAIFBhcnNlZENvb2tpZSogQ29va2llUGFyc2VyOjpwYXJzZU9uZUNvb2tpZShjb25z
dCBTdHJpbmcmIGNvb2tpZSwgdW5zaWduZWQgc3RhcnQsCiAgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhlIGRvbWFpbiBjb250YWlucyBhbiBlbWJlZGRlZCBkb3QuCiAgICAgICAgICAgICAg
ICAgc2l6ZV90IGRvdFBvc2l0aW9uID0gcGFyc2VkVmFsdWUuZmluZCgiLiIsIDEpOwogICAgICAg
ICAgICAgICAgIGlmIChkb3RQb3NpdGlvbiA9PSBub3RGb3VuZCB8fCBkb3RQb3NpdGlvbiA9PSBw
YXJzZWRWYWx1ZS5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgTE9HX0FORF9ERUxFVEUo
IkludmFsaWQgY29va2llIGF0dHJpYnV0ZSAlcyAoZG9tYWluKTogaXQgZG9lcyBub3QgY29udGFp
biBhbiBlbWJlZGRlZCBkb3QiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAg
ICAgICAgICBMT0dfRVJST1JfQU5EX1JFVFVSTigiSW52YWxpZCBjb29raWUgYXR0cmlidXRlICVz
IChkb21haW4pOiBpdCBkb2VzIG5vdCBjb250YWluIGFuIGVtYmVkZGVkIGRvdCIsIGNvb2tpZS5h
c2NpaSgpLmRhdGEoKSk7CiAKICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZG9tYWluIGRvZXMg
bm90IHN0YXJ0IHdpdGggYSBkb3QsIGFkZCBvbmUgZm9yIHNlY3VyaXR5IGNoZWNrcywKICAgICAg
ICAgICAgICAgICAvLyBGb3IgZXhhbXBsZTogYWIuYy5jb20gZG9zZSBub3QgZG9tYWluIG1hdGNo
IGIuYy5jb207CkBAIC0yODIsNyArMjgwLDcgQEAgUGFyc2VkQ29va2llKiBDb29raWVQYXJzZXI6
OnBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llLCB1bnNpZ25lZCBzdGFydCwKICAg
ICAgICAgICAgICAgICBpZiAobV9kZWZhdWx0RG9tYWluSXNJUEFkZHJlc3MpIHsKICAgICAgICAg
ICAgICAgICAgICAgU3RyaW5nIHJlYWxEb21haW5DYW5vbmljYWwgPSBTdHJpbmcoQmxhY2tCZXJy
eTo6UGxhdGZvcm06OmdldENhbm9uaWNhbElQRm9ybWF0KHJlYWxEb21haW4udXRmOCgpLmRhdGEo
KSkuY19zdHIoKSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZWFsRG9tYWluQ2Fub25pY2Fs
LmlzRW1wdHkoKSB8fCByZWFsRG9tYWluQ2Fub25pY2FsICE9IG1fZGVmYXVsdENvb2tpZUhvc3Qp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBMT0dfQU5EX0RFTEVURSgiSW52YWxpZCBjb29raWUg
YXR0cmlidXRlICVzIChkb21haW4pOiBkb21haW4gaXMgSVAgYnV0IGRvZXMgbm90IG1hdGNoIGhv
c3QncyBJUCIsIGNvb2tpZS5hc2NpaSgpLmRhdGEoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICBMT0dfRVJST1JfQU5EX1JFVFVSTigiSW52YWxpZCBjb29raWUgYXR0cmlidXRlICVzIChkb21h
aW4pOiBkb21haW4gaXMgSVAgYnV0IGRvZXMgbm90IG1hdGNoIGhvc3QncyBJUCIsIGNvb2tpZS5h
c2NpaSgpLmRhdGEoKSk7CiAgICAgICAgICAgICAgICAgICAgIHJlYWxEb21haW4gPSByZWFsRG9t
YWluQ2Fub25pY2FsOwogICAgICAgICAgICAgICAgICAgICBpc0lQQWRkcmVzcyA9IHRydWU7CiAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTI5NCwxNCArMjkyLDE0IEBAIFBhcnNlZENvb2tp
ZSogQ29va2llUGFyc2VyOjpwYXJzZU9uZUNvb2tpZShjb25zdCBTdHJpbmcmIGNvb2tpZSwgdW5z
aWduZWQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGFsc28gaGF2ZSB0byBtYWtl
IGEgc3BlY2lhbCBjYXNlIGZvciBJUCBhZGRyZXNzZXMuIElmIGEgd2Vic2l0ZSB0cmllcyB0byBz
ZXQKICAgICAgICAgICAgICAgICAgICAgLy8gYSBjb29raWUgdG8gNjEuOTcsIHRoYXQgZG9tYWlu
IGlzIG5vdCBhbiBJUCBhZGRyZXNzIGFuZCB3aWxsIGVuZCB3aXRoIHRoZSBtX2RlZmF1bHRDb29r
aWVIb3N0CiAgICAgICAgICAgICAgICAgICAgIGlmICghbV9kZWZhdWx0Q29va2llSG9zdC5lbmRz
V2l0aChyZWFsRG9tYWluLCBmYWxzZSkpCi0gICAgICAgICAgICAgICAgICAgICAgICBMT0dfQU5E
X0RFTEVURSgiSW52YWxpZCBjb29raWUgYXR0cmlidXRlICVzIChkb21haW4pOiBpdCBkb2VzIG5v
dCBkb21haW4gbWF0Y2ggdGhlIGhvc3QiLCBjb29raWUuYXNjaWkoKS5kYXRhKCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SX0FORF9SRVRVUk4oIkludmFsaWQgY29va2llIGF0
dHJpYnV0ZSAlcyAoZG9tYWluKTogaXQgZG9lcyBub3QgZG9tYWluIG1hdGNoIHRoZSBob3N0Iiwg
Y29va2llLmFzY2lpKCkuZGF0YSgpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugc2hvdWxk
IGNoZWNrIGZvciBhbiBlbWJlZGRlZCBkb3QgaW4gdGhlIHBvcnRpb24gb2Ygc3RyaW5nIGluIHRo
ZSBob3N0IG5vdCBpbiB0aGUgZG9tYWluCiAgICAgICAgICAgICAgICAgICAgIC8vIGJ1dCB0byBt
YXRjaCBmaXJlZm94IGJlaGF2aW91ciB3ZSBkbyBub3QuCiAKICAgICAgICAgICAgICAgICAgICAg
Ly8gQ2hlY2sgd2hldGhlciB0aGUgZG9tYWluIGlzIGEgdG9wIGxldmVsIGRvbWFpbiwgaWYgaXQg
aXMgdGhyb3cgaXQgb3V0CiAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHA6Ly9wdWJsaWNzdWZm
aXgub3JnL2xpc3QvCiAgICAgICAgICAgICAgICAgICAgIGlmIChCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6aXNUb3BMZXZlbERvbWFpbihyZWFsRG9tYWluLnV0ZjgoKS5kYXRhKCkpKQotICAgICAgICAg
ICAgICAgICAgICAgICAgTE9HX0FORF9ERUxFVEUoIkludmFsaWQgY29va2llIGF0dHJpYnV0ZSAl
cyAoZG9tYWluKTogaXQgZGlkIG5vdCBwYXNzIHRoZSB0b3AgbGV2ZWwgZG9tYWluIGNoZWNrIiwg
Y29va2llLmFzY2lpKCkuZGF0YSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPR19FUlJP
Ul9BTkRfUkVUVVJOKCJJbnZhbGlkIGNvb2tpZSBhdHRyaWJ1dGUgJXMgKGRvbWFpbik6IGl0IGRp
ZCBub3QgcGFzcyB0aGUgdG9wIGxldmVsIGRvbWFpbiBjaGVjayIsIGNvb2tpZS5hc2NpaSgpLmRh
dGEoKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHJlcy0+c2V0RG9tYWlu
KHJlYWxEb21haW4sIGlzSVBBZGRyZXNzKTsKICAgICAgICAgICAgIH0gZWxzZQpAQCAtMzQ3LDcg
KzM0NSw3IEBAIFBhcnNlZENvb2tpZSogQ29va2llUGFyc2VyOjpwYXJzZU9uZUNvb2tpZShjb25z
dCBTdHJpbmcmIGNvb2tpZSwgdW5zaWduZWQgc3RhcnQsCiAgICAgICAgICAgICAgICAgICAgIHBh
cnNlZFZhbHVlID0gcGFyc2VkVmFsdWUuc3Vic3RyaW5nKDEsIHBhcnNlZFZhbHVlLmxlbmd0aCgp
IC0gMik7CiAKICAgICAgICAgICAgICAgICBpZiAocGFyc2VkVmFsdWUudG9JbnQoKSAhPSAxKQot
ICAgICAgICAgICAgICAgICAgICBMT0dfQU5EX0RFTEVURSgiUGFyc2VkQ29va2llIHZlcnNpb24g
JWQgbm90IHN1cHBvcnRlZCAob25seSBzdXBwb3J0IHZlcnNpb249MSkiLCBwYXJzZWRWYWx1ZS50
b0ludCgpKTsKKyAgICAgICAgICAgICAgICAgICAgTE9HX0VSUk9SX0FORF9SRVRVUk4oIlBhcnNl
ZENvb2tpZSB2ZXJzaW9uICVkIG5vdCBzdXBwb3J0ZWQgKG9ubHkgc3VwcG9ydCB2ZXJzaW9uPTEp
IiwgcGFyc2VkVmFsdWUudG9JbnQoKSk7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAg
ICAgICBMT0dfRVJST1IoIkludmFsaWQgY29va2llIGF0dHJpYnV0ZSAlcyAodmVyc2lvbikiLCBj
b29raWUuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0zODIsNyArMzgw
LDcgQEAgUGFyc2VkQ29va2llKiBDb29raWVQYXJzZXI6OnBhcnNlT25lQ29va2llKGNvbnN0IFN0
cmluZyYgY29va2llLCB1bnNpZ25lZCBzdGFydCwKIAogICAgIC8vIENoZWNrIGlmIHRoZSBjb29r
aWUgaXMgdmFsaWQgd2l0aCByZXNwZWN0IHRvIHRoZSBzaXplIGxpbWl0LgogICAgIGlmICghcmVz
LT5pc1VuZGVyU2l6ZUxpbWl0KCkpCi0gICAgICAgIExPR19BTkRfREVMRVRFKCJQYXJzZWRDb29r
aWUgJXMgaXMgYWJvdmUgdGhlIDRrYiBpbiBsZW5ndGggOiBSRUpFQ1RFRCIsIGNvb2tpZS5hc2Np
aSgpLmRhdGEoKSk7CisgICAgICAgIExPR19FUlJPUl9BTkRfUkVUVVJOKCJQYXJzZWRDb29raWUg
JXMgaXMgYWJvdmUgdGhlIDRrYiBpbiBsZW5ndGggOiBSRUpFQ1RFRCIsIGNvb2tpZS5hc2NpaSgp
LmRhdGEoKSk7CiAKICAgICAvLyBJZiBzb21lIHBhaXIgd2FzIG5vdCBwcm92aWRlZCwgZHVyaW5n
IHBhcnNpbmcgdGhlbiBhcHBseSBzb21lIGRlZmF1bHQgdmFsdWUKICAgICAvLyB0aGUgcmVzdCBo
YXMgYmVlbiBkb25lIGluIHRoZSBjb25zdHJ1Y3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvQ29va2llUGFyc2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ibGFja2JlcnJ5L0Nvb2tpZVBhcnNlci5oCmluZGV4IGFlZDVlODdlYjdiMWQzNmU0
MGEyM2U5ZTA4OTRjYmVhODQ3NjEyNjcuLmM5NDRmODYzMDE4NTAxNDdmNGVlZDVmZjUyNGNiNmQy
YmQ5ZDA2N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkv
Q29va2llUGFyc2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9D
b29raWVQYXJzZXIuaApAQCAtNDMsMTMgKzQzLDEzIEBAIHB1YmxpYzoKICAgICB+Q29va2llUGFy
c2VyKCk7CiAKICAgICAvLyBQYXJzZXMgYSBzZXF1ZW5jZSBvZiAiQ29va2llOiIgaGVhZGVyIGFu
ZCByZXR1cm4gdGhlIHBhcnNlZCBjb29raWVzLgotICAgIFZlY3RvcjxQYXJzZWRDb29raWUqPiBw
YXJzZShjb25zdCBTdHJpbmcmIGNvb2tpZXMpOworICAgIFZlY3RvcjxSZWZQdHI8UGFyc2VkQ29v
a2llPiA+IHBhcnNlKGNvbnN0IFN0cmluZyYgY29va2llcyk7CiAKLSAgICBQYXJzZWRDb29raWUq
IHBhcnNlT25lQ29va2llKGNvbnN0IFN0cmluZyYgY29va2llKTsKKyAgICBQYXNzUmVmUHRyPFBh
cnNlZENvb2tpZT4gcGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUpOwogCiBwcml2
YXRlOgogICAgIC8vIEZJWE1FOiBjdXJUaW1lLCBzdGFydCwgZW5kIHBhcmFtZXRlcnMgc2hvdWxk
IGJlIHJlbW92ZWQuIEFuZCB0aGlzIG1ldGhvZCBjYW4gYmUgcHVibGljLgotICAgIFBhcnNlZENv
b2tpZSogcGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIGRvdWJsZSBjdXJUaW1lKTsKKyAgICBQYXNzUmVmUHRyPFBhcnNlZENv
b2tpZT4gcGFyc2VPbmVDb29raWUoY29uc3QgU3RyaW5nJiBjb29raWUsIHVuc2lnbmVkIHN0YXJ0
LCB1bnNpZ25lZCBlbmQsIGRvdWJsZSBjdXJUaW1lKTsKIAogICAgIEtVUkwgbV9kZWZhdWx0Q29v
a2llVVJMOwogICAgIFN0cmluZyBtX2RlZmF1bHRDb29raWVIb3N0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuY3BwCmluZGV4IGM0NDlm
YzY4MTQwNTM2NjQzZDUyZGRkNWJkNTUzNmUwYjE4OWFjMjMuLmJmZjhkZTAxMThmM2I2OTQ2MmIx
NmM0MGM4MzM4NGJjZDk1ZGM1OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2JsYWNrYmVycnkvUGFyc2VkQ29va2llLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ibGFja2JlcnJ5L1BhcnNlZENvb2tpZS5jcHAKQEAgLTY2LDI3ICs2Niw2IEBAIFBhcnNlZENv
b2tpZTo6UGFyc2VkQ29va2llKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgY29uc3QgU3RyaW5nCiB7CiB9CiAKLVBhcnNlZENvb2tpZTo6UGFyc2VkQ29va2llKGNvbnN0
IFBhcnNlZENvb2tpZSogY29va2llKQotICAgIDogbV9uYW1lKFN0cmluZyhjb29raWUtPm1fbmFt
ZSkpCi0gICAgLCBtX3ZhbHVlKFN0cmluZyhjb29raWUtPm1fdmFsdWUpKQotICAgICwgbV9kb21h
aW4oU3RyaW5nKGNvb2tpZS0+bV9kb21haW4pKQotICAgICwgbV9wcm90b2NvbChTdHJpbmcoY29v
a2llLT5tX3Byb3RvY29sKSkKLSAgICAsIG1fcGF0aChTdHJpbmcoY29va2llLT5tX3BhdGgpKQot
ICAgICwgbV9leHBpcnkoY29va2llLT5tX2V4cGlyeSkKLSAgICAsIG1fY3JlYXRpb25UaW1lKGNv
b2tpZS0+bV9jcmVhdGlvblRpbWUpCi0gICAgLCBtX2xhc3RBY2Nlc3NlZChjb29raWUtPm1fbGFz
dEFjY2Vzc2VkKQotICAgICwgbV9pc1NlY3VyZShjb29raWUtPm1faXNTZWN1cmUpCi0gICAgLCBt
X2lzSHR0cE9ubHkoY29va2llLT5tX2lzSHR0cE9ubHkpCi0gICAgLCBtX2lzU2Vzc2lvbihjb29r
aWUtPm1faXNTZXNzaW9uKQotICAgICwgbV9pc0ZvcmNlRXhwaXJlZChjb29raWUtPm1faXNGb3Jj
ZUV4cGlyZWQpCi0gICAgLCBtX2RvbWFpbklzSVBBZGRyZXNzKGNvb2tpZS0+bV9kb21haW5Jc0lQ
QWRkcmVzcykKLXsKLX0KLQotUGFyc2VkQ29va2llOjp+UGFyc2VkQ29va2llKCkKLXsKLX0KLQog
dm9pZCBQYXJzZWRDb29raWU6OnNldEV4cGlyeShjb25zdCBTdHJpbmcmIGV4cGlyeSkKIHsKICAg
ICAvLyBJZiBhIGNvb2tpZSBoYXMgYm90aCB0aGUgTWF4LUFnZSBhbmQgdGhlIEV4cGlyZXMgYXR0
cmlidXRlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9Q
YXJzZWRDb29raWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2JsYWNrYmVycnkvUGFyc2Vk
Q29va2llLmgKaW5kZXggOWRiNzU0OTM0YWNjYTFlNGY5N2U3ODU3ZDUwMGU5Zjc3ZjVkYTQ5Ni4u
MWJjY2VjNmE5ZWM5NTVjYzcwYjFmN2RhZGVmOTc5ZjJjMDkyOTJkYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vYmxhY2tiZXJyeS9QYXJzZWRDb29raWUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ibGFja2JlcnJ5L1BhcnNlZENvb2tpZS5oCkBAIC0yOCw3ICsy
OCw5IEBACiAjZGVmaW5lIFBhcnNlZENvb2tpZV9oCiAKICNpbmNsdWRlICJDb29raWUuaCIKLSNp
bmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAK
IG5hbWVzcGFjZSBXVEYgewogY2xhc3MgU3RyaW5nOwpAQCAtNDAsMTggKzQyLDE0IEBAIGNsYXNz
IEtVUkw7CiAvLyBUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBjb29raWUgaW50ZXJuYWxseQogLy8g
SXQgY2FuIGVpdGhlciBiZSBjcmVhdGVkIGJ5IHRoZSBDb29raWVQYXJzZXIgd2hpY2ggd2lsbCB0
aGVuIGZpbGwgaXQKIC8vIG9yIGl0IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSBiYWNraW5nIHN0b3Jl
IGZpbGxpbmcgaXQgaW4gdGhlIGNvbnN0cnVjdG9yLgotY2xhc3MgUGFyc2VkQ29va2llIHsKLVdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworY2xhc3MgUGFyc2VkQ29va2llIDogcHVibGljIFJlZkNv
dW50ZWQ8UGFyc2VkQ29va2llPiB7CiBwdWJsaWM6CisKICAgICAvLyBEZWZhdWx0IGNvb2tpZSA6
IGVtcHR5IGRvbWFpbiwgbm9uIHNlY3VyZSBhbmQgc2Vzc2lvbgotICAgIFBhcnNlZENvb2tpZShk
b3VibGUgY3VycmVudFRpbWUpOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFBhcnNlZENvb2tpZT4g
Y3JlYXRlKGRvdWJsZSBjdXJyZW50VGltZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBhcnNlZENv
b2tpZShjdXJyZW50VGltZSkpOyB9CiAKICAgICAvLyBGb3IgYmFja2luZyBzdG9yZSBjb29raWVz
ICh0aG9zZSBjb29raWVzIGFyZSBuZXZlciBzZXNzaW9uIGNvb2tpZXMpLgotICAgIFBhcnNlZENv
b2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHByb3RvY29sLCBjb25zdCBTdHJpbmcmIHBhdGgsIGRv
dWJsZSBleHBpcnksIGRvdWJsZSBsYXN0QWNjZXNzZWQsIGRvdWJsZSBjcmVhdGlvblRpbWUsIGJv
b2wgaXNTZWN1cmUsIGJvb2wgaXNIdHRwT25seSk7Ci0KLSAgICBQYXJzZWRDb29raWUoY29uc3Qg
UGFyc2VkQ29va2llKik7Ci0KLSAgICB+UGFyc2VkQ29va2llKCk7CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UGFyc2VkQ29va2llPiBjcmVhdGUoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIHZhbHVlLCBjb25zdCBTdHJpbmcmIGRvbWFpbiwgY29uc3QgU3RyaW5nJiBwcm90b2NvbCwg
Y29uc3QgU3RyaW5nJiBwYXRoLCBkb3VibGUgZXhwaXJ5LCBkb3VibGUgbGFzdEFjY2Vzc2VkLCBk
b3VibGUgY3JlYXRpb25UaW1lLCBib29sIGlzU2VjdXJlLCBib29sIGlzSHR0cE9ubHkpICB7IHJl
dHVybiBhZG9wdFJlZihuZXcgUGFyc2VkQ29va2llKG5hbWUsIHZhbHVlLCBkb21haW4sIHByb3Rv
Y29sLCBwYXRoLCBleHBpcnksIGxhc3RBY2Nlc3NlZCwgY3JlYXRpb25UaW1lLCBpc1NlY3VyZSwg
aXNIdHRwT25seSkpOyB9OwogCiAgICAgY29uc3QgU3RyaW5nJiBuYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9uYW1lOyB9CiAgICAgdm9pZCBzZXROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX25h
bWUgPSBuYW1lOyB9CkBAIC05Nyw2ICs5NSwxMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBhcHBlbmRX
ZWJDb3JlQ29va2llKFZlY3RvcjxDb29raWU+JiBjb29raWVWZWN0b3IpIGNvbnN0OwogCiBwcml2
YXRlOgorICAgIC8vIERlZmF1bHQgY29va2llIDogZW1wdHkgZG9tYWluLCBub24gc2VjdXJlIGFu
ZCBzZXNzaW9uCisgICAgUGFyc2VkQ29va2llKGRvdWJsZSBjdXJyZW50VGltZSk7CisKKyAgICAv
LyBGb3IgYmFja2luZyBzdG9yZSBjb29raWVzICh0aG9zZSBjb29raWVzIGFyZSBuZXZlciBzZXNz
aW9uIGNvb2tpZXMpLgorICAgIFBhcnNlZENvb2tpZShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgdmFsdWUsIGNvbnN0IFN0cmluZyYgZG9tYWluLCBjb25zdCBTdHJpbmcmIHByb3Rv
Y29sLCBjb25zdCBTdHJpbmcmIHBhdGgsIGRvdWJsZSBleHBpcnksIGRvdWJsZSBsYXN0QWNjZXNz
ZWQsIGRvdWJsZSBjcmVhdGlvblRpbWUsIGJvb2wgaXNTZWN1cmUsIGJvb2wgaXNIdHRwT25seSk7
CisKICAgICBTdHJpbmcgbV9uYW1lOwogICAgIFN0cmluZyBtX3ZhbHVlOwogICAgIFN0cmluZyBt
X2RvbWFpbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViQ29v
a2llSmFyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9BcGkvV2ViQ29va2llSmFyLmNw
cAppbmRleCA3OTZmNTliZDFlZGM2NTk4NzdiYjVkMTc1MjRhMmExYTQ5ZjRiZGRkLi5iM2JhOGYz
NzJlYjNkYjAwMTA3ZWM2MzgwYjRjZGFjYmJjMGJjODE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2JsYWNrYmVycnkvQXBpL1dlYkNvb2tpZUphci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9i
bGFja2JlcnJ5L0FwaS9XZWJDb29raWVKYXIuY3BwCkBAIC0zNyw3ICszNyw3IEBAIHN0ZDo6dmVj
dG9yPEJsYWNrQmVycnk6OlBsYXRmb3JtOjpTdHJpbmc+IFdlYkNvb2tpZUphcjo6Y29va2llcyhj
b25zdCBCbGFja0JlcnJ5CiB7CiAgICAgS1VSTCBrdXJsID0gS1VSTChLVVJMKCksIHVybCk7CiAK
LSAgICBWZWN0b3I8UGFyc2VkQ29va2llKj4gcmF3Q29va2llczsKKyAgICBWZWN0b3I8UmVmUHRy
PFBhcnNlZENvb2tpZT4gPiByYXdDb29raWVzOwogICAgIGNvb2tpZU1hbmFnZXIoKS5nZXRSYXdD
b29raWVzKHJhd0Nvb2tpZXMsIGt1cmwsIFdpdGhIdHRwT25seUNvb2tpZXMpOwogCiAgICAgc3Rk
Ojp2ZWN0b3I8QmxhY2tCZXJyeTo6UGxhdGZvcm06OlN0cmluZz4gcmVzdWx0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>