<?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>47969</bug_id>
          
          <creation_ts>2010-10-20 00:09:50 -0700</creation_ts>
          <short_desc>Unify globalData APIs</short_desc>
          <delta_ts>2010-10-23 17:15:47 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Xan Lopez">xan.lopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>296662</commentid>
    <comment_count>0</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-20 00:09:50 -0700</bug_when>
    <thetext>The globalData getter in JSGlobalObject returns a pointer, while the one in CallFrame.h returns a reference. There was a FIXME in CallFrame.h suggesting to unify them, so the attached patch does that.

I wasn&apos;t completely sure of which way to go with this, but after some googling I decided to move the getter in JSGlobalObject to return a reference, since it seems it&apos;s the preferred thing to do in the public API of classes when there&apos;s no need to, say, return NULL in special cases.

There&apos;s no change in the tests or significant change in SunSpider.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296665</commentid>
    <comment_count>1</comment_count>
      <attachid>71257</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-20 00:11:39 -0700</bug_when>
    <thetext>Created attachment 71257
globaldataref.diff</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296674</commentid>
    <comment_count>2</comment_count>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2010-10-20 00:34:37 -0700</bug_when>
    <thetext>Attachment 71257 did not build on qt:
Build output: http://queues.webkit.org/results/4545007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296690</commentid>
    <comment_count>3</comment_count>
      <attachid>71262</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-20 00:56:57 -0700</bug_when>
    <thetext>Created attachment 71262
globaldataref.diff

Try to fix WebKit2 build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296700</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 02:04:33 -0700</bug_when>
    <thetext>Attachment 71257 did not build on mac:
Build output: http://queues.webkit.org/results/4514008</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296702</commentid>
    <comment_count>5</comment_count>
      <attachid>71265</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-20 02:15:13 -0700</bug_when>
    <thetext>Created attachment 71265
globaldataref.diff

And objc bindings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296730</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 03:52:09 -0700</bug_when>
    <thetext>Attachment 71262 did not build on mac:
Build output: http://queues.webkit.org/results/4597007</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296742</commentid>
    <comment_count>7</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-10-20 05:37:14 -0700</bug_when>
    <thetext>Attachment 71265 did not build on mac:
Build output: http://queues.webkit.org/results/4576011</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296755</commentid>
    <comment_count>8</comment_count>
      <attachid>71280</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-20 06:12:22 -0700</bug_when>
    <thetext>Created attachment 71280
globaldata.diff

Fix WebKit/mac</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298493</commentid>
    <comment_count>9</comment_count>
      <attachid>71280</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-23 17:15:36 -0700</bug_when>
    <thetext>Comment on attachment 71280
globaldata.diff

Landed as r70406.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298494</commentid>
    <comment_count>10</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-10-23 17:15:47 -0700</bug_when>
    <thetext>Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71257</attachid>
            <date>2010-10-20 00:11:39 -0700</date>
            <delta_ts>2010-10-20 00:56:57 -0700</delta_ts>
            <desc>globaldataref.diff</desc>
            <filename>globaldataref.diff</filename>
            <type>text/plain</type>
            <size>30177</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSAzZmQzNDRhZjVhMGU3NDZmZGQyZTRhNjFiNDQ3NjQxMjUzNGJlZWYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDIwIE9jdCAyMDEwIDEwOjUwOjIzICswOTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMC0x
OSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAgTWFrZSBK
U0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm4gYSByZWZlcmVuY2UgYW5kIGFkYXB0CiAg
ICAgICAgY2FsbGVycy4gVGhpcyB1bmlmaWVzIHRoZSBBUEkgd2l0aCB0aGUgZXhpc3RpbmcKICAg
ICAgICBDYWxsRnJhbWU6Omdsb2JhbERhdGEsIHdoaWNoIGFsc28gcmV0dXJucyBhIHJlZmVyZW5j
ZS4KCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CiAgICAgICAgKEpTQzo6ZXZhbHVh
dGVJbkdsb2JhbENhbGxGcmFtZSk6CiAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoK
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CiAgICAgICAgKiBqc2MuY3BwOgogICAgICAgIChydW5X
aXRoU2NyaXB0cyk6CiAgICAgICAgKiBwYXJzZXIvSlNQYXJzZXIuY3BwOgogICAgICAgIChKU0M6
OmpzUGFyc2UpOgogICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKICAgICAgICAoSlNDOjpj
cmVhdGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlRXZhbEVycm9yKToKICAgICAgICAoSlND
OjpjcmVhdGVSYW5nZUVycm9yKToKICAgICAgICAoSlNDOjpjcmVhdGVSZWZlcmVuY2VFcnJvcik6
CiAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4RXJyb3IpOgogICAgICAgIChKU0M6OmNyZWF0ZVR5
cGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlVVJJRXJyb3IpOgogICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlv
bik6CiAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KToKICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bWFya0NoaWxkcmVuKToKICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSk6CgpXZWJDb3JlOgoKMjAx
MC0xMC0xOSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpp
bnZva2VDYWxsYmFjayk6CiAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29r
dXBOYW1lc3BhY2VVUkkpOgogICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cDoKICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CiAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgogICAgICAgIChXZWJD
b3JlOjpKU1dvcmtlckNvbnRleHQ6Om1hcmtDaGlsZHJlbik6CiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpKU1dv
cmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZSk6CiAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgogICAg
ICAgIChfTlBOX0ludm9rZURlZmF1bHQpOgogICAgICAgIChfTlBOX0ludm9rZSk6CiAgICAgICAg
KF9OUE5fRXZhbHVhdGUpOgogICAgICAgIChfTlBOX0NvbnN0cnVjdCk6Ci0tLQogSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDQwICsrKysrKysr
KysrKysrKysrKysrCiBKYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgICAgICAg
ICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5o
ICAgICAgICAgICAgIHwgICAgMyAtCiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnBy
ZXRlci5jcHAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHwgICAxMCArKy0tCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIv
SlNQYXJzZXIuY3BwICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwICAgICAgICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oICAgICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBKYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrLS0t
CiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICAgICB8ICAg
IDQgKy0KIEphdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwICAgICAgICAg
IHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oICAgICAg
ICAgICAgfCAgICAyICstCiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMzAgKysrKysrKysrKysrKysrCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2FsbGJhY2tEYXRhLmNwcCAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwICAgICAgICAgICAgfCAgICA4ICsrLS0KIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcCAgICAgIHwgICAgMiArLQog
Li4uL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgICAgfCAgICA4
ICsrLS0KIFdlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCAgICAgICAgICAg
IHwgICAgNCArLQogV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cCAgICAgfCAgICA0ICstCiBXZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgICAgICAgICAg
ICAgICAgICAgICB8ICAgMTYgKysrKy0tLS0KIDIxIGZpbGVzIGNoYW5nZWQsIDEyMCBpbnNlcnRp
b25zKCspLCA1MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9DaGFu
Z2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggM2FjNTkxNS4uNjE3NTc4YSAx
MDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0phdmFTY3JpcHRDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTEwLTE5ICBYYW4gTG9wZXogIDx4bG9w
ZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTY5CisKKyAgICAgICAgTWFrZSBKU0dsb2JhbE9iamVj
dDo6Z2xvYmFsRGF0YSByZXR1cm4gYSByZWZlcmVuY2UgYW5kIGFkYXB0CisgICAgICAgIGNhbGxl
cnMuIFRoaXMgdW5pZmllcyB0aGUgQVBJIHdpdGggdGhlIGV4aXN0aW5nCisgICAgICAgIENhbGxG
cmFtZTo6Z2xvYmFsRGF0YSwgd2hpY2ggYWxzbyByZXR1cm5zIGEgcmVmZXJlbmNlLgorCisgICAg
ICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpldmFsdWF0ZUluR2xv
YmFsQ2FsbEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoKKyAgICAg
ICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJl
dGVyOjpkdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAocnVuV2l0
aFNjcmlwdHMpOgorICAgICAgICAqIHBhcnNlci9KU1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6
OmpzUGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3BwOgorICAgICAgICAo
SlNDOjpjcmVhdGVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUV2YWxFcnJvcik6CisgICAg
ICAgIChKU0M6OmNyZWF0ZVJhbmdlRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVSZWZlcmVu
Y2VFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVN5bnRheEVycm9yKToKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlVHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlVVJJRXJyb3IpOgorICAg
ICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNv
bnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCk6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIHJ1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6Omdsb2JhbERh
dGEpOgorCiAyMDEwLTEwLTE5ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29tcGFueTEwMC5uZXQ+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCmluZGV4IDE3ZGZkZjcuLjI5YjZlYjIgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBKU1ZhbHVlIGV2YWx1YXRlSW5HbG9i
YWxDYWxsRnJhbWUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBleGNlcHRpb24sIEpT
RwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIGVycm9yOwogCi0gICAgcmV0dXJuIGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLmdldCgp
LCBnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbEZyYW1lLT5zY29wZUNo
YWluKCksICZleGNlcHRpb24pOworICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLmdldCgpLCBnbG9iYWxDYWxsRnJhbWUsIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsQ2FsbEZyYW1lLT5zY29wZUNoYWluKCksICZleGNlcHRpb24pOwogfQog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgK
aW5kZXggYmRlOTc4Ni4uNjdkZWIzOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZy
YW1lLmgKQEAgLTYzLDkgKzYzLDYgQEAgbmFtZXNwYWNlIEpTQyAgewogICAgICAgICAgICAgcmV0
dXJuIHNjb3BlQ2hhaW4oKS0+Z2xvYmFsVGhpczsKICAgICAgICAgfQogCi0gICAgICAgIC8vIEZJ
WE1FOiBFbHNld2hlcmUsIHdlIHVzZSBKU0dsb2JhbERhdGEqIHJhdGhlciB0aGFuIEpTR2xvYmFs
RGF0YSYuCi0gICAgICAgIC8vIFdlIHNob3VsZCBtYWtlIHRoaXMgbW9yZSB1bmlmb3JtIGFuZCBl
aXRoZXIgdXNlIGEgcmVmZXJlbmNlIGV2ZXJ5d2hlcmUKLSAgICAgICAgLy8gb3IgYSBwb2ludGVy
IGV2ZXJ5d2hlcmUuCiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSgpIGNvbnN0CiAg
ICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzY29wZUNoYWluKCktPmdsb2JhbERhdGEpOwpk
aWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIv
SmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmluZGV4IDI4Nzc1NjUu
LmJmOWJiNzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJl
dGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAK
QEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKENhbGxG
cmFtZSogY2FsbEZyYW1lKQogICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiIpOwog
CiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVCbG9jaygpOwotICAg
IFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlID0gJmNhbGxGcmFtZS0+c2NvcGVDaGFpbigpLT5n
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwor
ICAgIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlID0gJmNhbGxGcmFtZS0+c2NvcGVDaGFpbigp
LT5nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCk7
CiAgICAgY29uc3QgUmVnaXN0ZXIqIGl0OwogICAgIGNvbnN0IFJlZ2lzdGVyKiBlbmQ7CiAgICAg
SlNWYWx1ZSB2OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvanNjLmNwcCBiL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKaW5kZXggZDc1NmEwYy4uYmE1MDZlNCAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zNjgsNyAr
MzY4LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICBpZiAoZHVtcCkKICAgICAgICAg
Qnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSh0cnVlKTsKIAotICAgIEpT
R2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOworICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwog
CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogICAgIFNhbXBsaW5nRmxhZ3M6OnN0YXJ0KCk7
CkBAIC0zODYsNyArMzg2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICAgICAgICAg
IGZpbGVOYW1lID0gIltDb21tYW5kIExpbmVdIjsKICAgICAgICAgfQogCi0gICAgICAgIGdsb2Jh
bERhdGEtPnN0YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5zdGFydFNhbXBsaW5n
KCk7CiAKICAgICAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9uID0gZXZhbHVhdGUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtl
U291cmNlKHNjcmlwdCwgZmlsZU5hbWUpKTsKICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYg
Y29tcGxldGlvbi5jb21wbFR5cGUoKSAhPSBUaHJvdzsKQEAgLTM5NywxOSArMzk3LDE5IEBAIHN0
YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgICAgICAgICAgICAgcHJpbnRmKCJFbmQ6ICVzXG4i
LCBjb21wbGV0aW9uLnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkp
LnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2xvYmFsRGF0YS0+c3RvcFNh
bXBsaW5nKCk7CisgICAgICAgIGdsb2JhbERhdGEuc3RvcFNhbXBsaW5nKCk7CiAgICAgICAgIGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOwogICAgIH0KIAogI2lm
IEVOQUJMRShTQU1QTElOR19GTEFHUykKICAgICBTYW1wbGluZ0ZsYWdzOjpzdG9wKCk7CiAjZW5k
aWYKLSAgICBnbG9iYWxEYXRhLT5kdW1wU2FtcGxlRGF0YShnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSk7CisgICAgZ2xvYmFsRGF0YS5kdW1wU2FtcGxlRGF0YShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSk7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQogICAgIEFic3RyYWN0U2Ft
cGxpbmdDb3VudGVyOjpkdW1wKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoUkVHRVhQX1RSQUNJTkcp
Ci0gICAgZ2xvYmFsRGF0YS0+ZHVtcFJlZ0V4cFRyYWNlKCk7CisgICAgZ2xvYmFsRGF0YS5kdW1w
UmVnRXhwVHJhY2UoKTsKICNlbmRpZgogICAgIHJldHVybiBzdWNjZXNzOwogfQpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9KU1BhcnNlci5jcHAKaW5kZXggMDMzODIxMC4uNGI3ZmNiMiAxMDA2NDQKLS0tIGEvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvSlNQYXJzZXIuY3BwCkBAIC00ODUsNyArNDg1LDcgQEAgcHJpdmF0ZToKIAogaW50IGpzUGFy
c2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEZ1bmN0aW9uUGFyYW1ldGVy
cyogcGFyYW1ldGVycywgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3MsIEpTUGFyc2VyTW9k
ZSBwYXJzZXJNb2RlLCBjb25zdCBTb3VyY2VDb2RlKiBzb3VyY2UpCiB7Ci0gICAgSlNQYXJzZXIg
cGFyc2VyKGxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+bGV4ZXIsIGxleGljYWxH
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgcGFyYW1ldGVycywgc3RyaWN0bmVzcyA9PSBKU1Bh
cnNlU3RyaWN0LCBwYXJzZXJNb2RlID09IEpTUGFyc2VGdW5jdGlvbkNvZGUsIHNvdXJjZS0+cHJv
dmlkZXIoKSk7CisgICAgSlNQYXJzZXIgcGFyc2VyKGxleGljYWxHbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS5sZXhlciwgJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgcGFyYW1l
dGVycywgc3RyaWN0bmVzcyA9PSBKU1BhcnNlU3RyaWN0LCBwYXJzZXJNb2RlID09IEpTUGFyc2VG
dW5jdGlvbkNvZGUsIHNvdXJjZS0+cHJvdmlkZXIoKSk7CiAgICAgcmV0dXJuIHBhcnNlci5wYXJz
ZVByb2dyYW0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiB9CiAKZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5j
cHAKaW5kZXggYWQ4NWE3Yy4uYWZmNzlmNSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAg
LTQ1LDcgKzQ1LDcgQEAgdm9pZCBQYXJzZXI6OnBhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhpY2Fs
R2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmEKICAgICAqZXJyTGluZSA9IC0x
OwogICAgICplcnJNc2cgPSBVU3RyaW5nKCk7CiAKLSAgICBMZXhlciYgbGV4ZXIgPSAqbGV4aWNh
bEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT5sZXhlcjsKKyAgICBMZXhlciYgbGV4ZXIgPSAq
bGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmxleGVyOwogICAgIGxleGVyLnNldENv
ZGUoKm1fc291cmNlLCBtX2FyZW5hKTsKIAogICAgIGludCBwYXJzZUVycm9yID0ganNQYXJzZShs
ZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJhbWV0ZXJzLCBzdHJpY3RuZXNzLCBtb2RlLCBtX3NvdXJj
ZSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggZjViYmNiOC4uNjU0OTA2NyAxMDA2NDQKLS0t
IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuaApAQCAtODQsMTIgKzg0LDEyIEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIG1fc291cmNlID0gJnNvdXJjZTsKICAgICAgICAgaWYgKFBhcnNlZE5vZGU6OnNjb3BlSXNG
dW5jdGlvbikKLSAgICAgICAgICAgIGxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+
bGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CisgICAgICAgICAgICBsZXhpY2FsR2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCkubGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CiAgICAgICAgIHBhcnNlKGxl
eGljYWxHbG9iYWxPYmplY3QsIHBhcmFtZXRlcnMsIHN0cmljdG5lc3MsIFBhcnNlZE5vZGU6Omlz
RnVuY3Rpb25Ob2RlID8gSlNQYXJzZUZ1bmN0aW9uQ29kZSA6IEpTUGFyc2VQcm9ncmFtQ29kZSwg
JmVyckxpbmUsICZlcnJNc2cpOwogCiAgICAgICAgIFJlZlB0cjxQYXJzZWROb2RlPiByZXN1bHQ7
CiAgICAgICAgIGlmIChtX3NvdXJjZUVsZW1lbnRzKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBQ
YXJzZWROb2RlOjpjcmVhdGUobGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLAorICAg
ICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKCZsZXhpY2FsR2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksCiAgICAgICAgICAgICAgICAgbV9zb3VyY2VFbGVtZW50cywKICAgICAg
ICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZtX3ZhckRlY2xhcmF0aW9ucy0+ZGF0YSA6
IDAsCiAgICAgICAgICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zID8gJm1fZnVuY0RlY2xhcmF0
aW9ucy0+ZGF0YSA6IDAsCkBAIC0xMDgsNyArMTA4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgICAgICBpZiAoaXNGdW5jdGlvbkJvZHlOb2RlKHN0YXRpY19jYXN0PFBhcnNlZE5vZGUqPigw
KSkpCiAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNrT3ZlcmZsb3dFcnJv
cihsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKGxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKSwgY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgZXJyTXNnKSwgZXJy
TGluZSwgc291cmNlKTsKKyAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZv
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGNyZWF0ZVN5bnRheEVycm9yKGxl
eGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNvdXJjZSk7CiAgICAgICAgIH0K
IAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0Vycm9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCmluZGV4
IGUzNTQyNGIuLjZiMjdkN2QgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC00NSw0MyAr
NDUsNDMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25FbmRPZmZzZXRQcm9wZXJ0eU5h
bWUgPSAiZXhwcmVzc2lvbkVuZE9mZnNldCI7CiBKU09iamVjdCogY3JlYXRlRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBB
U1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3Jl
YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0
dXJlKCksIG1lc3NhZ2UpOworICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoJmdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPmVycm9yU3RydWN0dXJlKCksIG1l
c3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNz
YWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5ldmFsRXJyb3JDb25zdHJ1Y3Rvcigp
LT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKCZnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5ldmFsRXJy
b3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAogSlNPYmpl
Y3QqIGNyZWF0ZVJhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAg
ICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgp
LCBnbG9iYWxPYmplY3QtPnJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgp
LCBtZXNzYWdlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKCZnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5yYW5nZUVycm9yQ29uc3RydWN0b3IoKS0+
ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWZlcmVu
Y2VFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNz
YWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBFcnJv
ckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVj
dC0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdl
KTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKCZnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5yZWZlcmVuY2VFcnJvckNvbnN0cnVjdG9yKCktPmVycm9y
U3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRlU3ludGF4RXJyb3Io
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsK
ICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJbnN0YW5j
ZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnN5bnRh
eEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CisgICAgcmV0
dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdC0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBt
ZXNzYWdlKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVz
c2FnZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+dHlwZUVycm9yQ29uc3RydWN0b3Io
KS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6
OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+dHlwZUVy
cm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKIEpTT2Jq
ZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwotICAg
IHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdC0+VVJJRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBt
ZXNzYWdlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKCZnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5VUklFcnJvckNvbnN0cnVjdG9yKCktPmVycm9y
U3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRlRXJyb3IoRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggOWI1OTcyMC4uYmMyMTU4ZSAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCkBAIC05
Nyw3ICs5Nyw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpCiAgICAgfQogCiAgICAgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKTsKLSAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsK
KyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocHJvZ3JhbSwgc291cmNlVVJM
LCBsaW5lTnVtYmVyKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsKICAgICBSZWZQdHI8
RnVuY3Rpb25FeGVjdXRhYmxlPiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUds
b2JhbENvZGUoZnVuY3Rpb25OYW1lLCBleGVjLCBleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkt
PmRlYnVnZ2VyKCksIHNvdXJjZSwgJmV4Y2VwdGlvbik7CkBAIC0xMDYsNyArMTA2LDcgQEAgSlNP
YmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYg
YXJncywgY29uc3QgSWRlbnRpZmkKICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgZXhj
ZXB0aW9uKTsKICAgICB9CiAKLSAgICBTY29wZUNoYWluIHNjb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0
LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGV4ZWMtPmdsb2JhbFRoaXNWYWx1ZSgpKTsKKyAg
ICBTY29wZUNoYWluIHNjb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LCAmZ2xvYmFsRGF0YSwgZ2xvYmFs
T2JqZWN0LCBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKSk7CiAgICAgcmV0dXJuIG5ldyAoZXhlYykg
SlNGdW5jdGlvbihleGVjLCBmdW5jdGlvbiwgc2NvcGVDaGFpbi5ub2RlKCkpOwogfQogCmRpZmYg
LS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkwM2U1NzMuLjdiMWVi
MDYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3Bw
CisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0xMTYs
NyArMTE2LDcgQEAgSlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgpCiAgICAgZm9yIChI
YXNoU2V0PEdsb2JhbENvZGVCbG9jayo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvZGVCbG9ja3Mo
KS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5jbGVhckdsb2JhbE9i
amVjdCgpOwogICAgICAgICAKLSAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSA9IGdsb2Jh
bERhdGEoKS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOworICAgIFJlZ2lzdGVyRmlsZSYg
cmVnaXN0ZXJGaWxlID0gZ2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsK
ICAgICBpZiAocmVnaXN0ZXJGaWxlLmNsZWFyR2xvYmFsT2JqZWN0KHRoaXMpKQogICAgICAgICBy
ZWdpc3RlckZpbGUuc2V0TnVtR2xvYmFscygwKTsKICAgICBkKCktPmRlc3RydWN0b3IoZCgpKTsK
QEAgLTM0OSw5ICszNDksOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4oTWFy
a1N0YWNrJiBtYXJrU3RhY2spCiAgICAgZm9yIChIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+Ojpj
b25zdF9pdGVyYXRvciBpdCA9IGNvZGVCbG9ja3MoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQp
CiAgICAgICAgICgqaXQpLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAKLSAgICBSZWdpc3Rl
ckZpbGUmIHJlZ2lzdGVyRmlsZSA9IGdsb2JhbERhdGEoKS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVy
RmlsZSgpOworICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlID0gZ2xvYmFsRGF0YSgpLmlu
dGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKICAgICBpZiAocmVnaXN0ZXJGaWxlLmdsb2JhbE9i
amVjdCgpID09IHRoaXMpCi0gICAgICAgIHJlZ2lzdGVyRmlsZS5tYXJrR2xvYmFscyhtYXJrU3Rh
Y2ssICZnbG9iYWxEYXRhKCktPmhlYXApOworICAgICAgICByZWdpc3RlckZpbGUubWFya0dsb2Jh
bHMobWFya1N0YWNrLCAmZ2xvYmFsRGF0YSgpLmhlYXApOwogCiAgICAgbWFya0lmTmVlZGVkKG1h
cmtTdGFjaywgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgbWFya0lmTmVlZGVkKG1hcmtT
dGFjaywgZCgpLT5lcnJvckNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaAppbmRleCAzNmZhNzBiLi45M2ExYjg4IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yNzYsNyArMjc2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAg
ICAgICAgIAogICAgICAgICB2b2lkIHJlc2V0UHJvdG90eXBlKEpTVmFsdWUgcHJvdG90eXBlKTsK
IAotICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSB7IHJldHVybiBkKCktPmdsb2Jh
bERhdGEuZ2V0KCk7IH0KKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhKCkgeyByZXR1
cm4gKmQoKS0+Z2xvYmFsRGF0YS5nZXQoKTsgfQogICAgICAgICBKU0dsb2JhbE9iamVjdERhdGEq
IGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVjdERhdGEqPihKU1Zh
cmlhYmxlT2JqZWN0OjpkKTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFN0cnVjdHVy
ZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxOTVkN2Q5Li41M2NiY2E4IDEw
MDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDMzIEBACisyMDEwLTEwLTE5ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbmlmeSBn
bG9iYWxEYXRhIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTQ3OTY5CisKKyAgICAgICAgQWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xv
YmFsRGF0YSByZXR1cm5pbmcgYSByZWZlcmVuY2UKKyAgICAgICAgaW5zdGVhZCBvZiBhIHBvaW50
ZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2spOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0V2
ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtl
ckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojpt
YXJrQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEVycm9y
SGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRleHRFcnJvckhhbmRs
ZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rpb25J
bkNvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUp
OgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAgIChfTlBOX0ludm9r
ZURlZmF1bHQpOgorICAgICAgICAoX05QTl9JbnZva2UpOgorICAgICAgICAoX05QTl9FdmFsdWF0
ZSk6CisgICAgICAgIChfTlBOX0NvbnN0cnVjdCk6CisKIDIwMTAtMTAtMTkgIFlvbmdqdW4gWmhh
bmcgIDx5b25nanVuX3poYW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW4g
QmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcAppbmRleCA2YjE5
NjM5Li5mMzljNTNjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tE
YXRhLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcApAQCAt
NTksNyArNTksNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxsYmFjayhNYXJr
ZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgYm9vbCogcmFpc2VkRQogICAgICAgICBmdW5jdGlvbiA9
IGNhbGxiYWNrKCk7CiAgICAgfQogICAgIAotICAgIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRh
KCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbERh
dGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQq
IGNvbnRleHQgPSBnbG9iYWxPYmplY3QoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAg
IC8vIFdlIHdpbGwgZmFpbCB0byBnZXQgdGhlIGNvbnRleHQgaWYgdGhlIGZyYW1lIGhhcyBiZWVu
IGRldGFjaGVkLgogICAgIGlmICghY29udGV4dCkKQEAgLTY4LDcgKzY4LDcgQEAgSlNWYWx1ZSBK
U0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3Ms
IGJvb2wqIHJhaXNlZEUKICAgICBKU1ZhbHVlIHJlc3VsdCA9IGNvbnRleHQtPmlzRG9jdW1lbnQo
KSAKICAgICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24s
IGNhbGxUeXBlLCBjYWxsRGF0YSwgY2FsbGJhY2soKSwgYXJncykKICAgICAgICAgOiBKU0M6OmNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY2FsbGJhY2soKSwgYXJncyk7
Ci0gICAgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgp
OworICAgIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgp
OwogCiAgICAgRG9jdW1lbnQ6OnVwZGF0ZVN0eWxlRm9yQWxsRG9jdW1lbnRzKCk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIGIv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAKaW5kZXggMzdm
MjUxMi4uZThlMTM2OSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQ
YXRoTlNSZXNvbHZlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5jcHAKQEAgLTg5LDkgKzg5LDkgQEAgU3RyaW5nIEpTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkoY29uc3QgU3RyaW5nJiBwcmVmaXgpCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnczsKICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBw
cmVmaXgpKTsKIAotICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVj
a2VyLnN0YXJ0KCk7CisgICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hl
Y2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgcmV0dmFsID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY3VzdG9tUmVzb2x2ZXIsIGFyZ3MpOwotICAgIG1f
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBt
X2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAg
IFN0cmluZyByZXN1bHQ7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwIGIvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCmluZGV4IGNlZWQ0NDUuLjU2MDQzNzQgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKQEAgLTEwOCwxMCArMTA4LDEwIEBA
IHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAgICAgICAgIEV2ZW50KiBzYXZlZEV2ZW50ID0gZ2xv
YmFsT2JqZWN0LT5jdXJyZW50RXZlbnQoKTsKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJy
ZW50RXZlbnQoZXZlbnQpOwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2Nv
cGUgZ2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xvYmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9iamVj
dCA/IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOworICAg
ICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KTsKKyAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4
ZWMsIGdsb2JhbERhdGEuZHluYW1pY0dsb2JhbE9iamVjdCA/IGdsb2JhbERhdGEuZHluYW1pY0ds
b2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdCk7CiAKLSAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91
dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0Q2hlY2tlci5zdGFy
dCgpOwogICAgICAgICBKU1ZhbHVlIHJldHZhbDsKICAgICAgICAgaWYgKGhhbmRsZUV2ZW50RnVu
Y3Rpb24pIHsKICAgICAgICAgICAgIHJldHZhbCA9IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlz
RG9jdW1lbnQoKQpAQCAtMTIzLDcgKzEyMyw3IEBAIHZvaWQgSlNFdmVudExpc3RlbmVyOjpoYW5k
bGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0CiAg
ICAgICAgICAgICAgICAgPyBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywganNGdW5j
dGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjdXJyZW50VGFyZ2V0LCBhcmdzKQogICAgICAgICAg
ICAgICAgIDogSlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
Y3VycmVudFRhcmdldCwgYXJncyk7CiAgICAgICAgIH0KLSAgICAgICAgZ2xvYmFsRGF0YS0+dGlt
ZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2VyLnN0
b3AoKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50
KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0
b20uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCmlu
ZGV4IGI4ODg1Y2YuLmJlNDdiMTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
b3JrZXJDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEN1c3RvbS5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBKU1dvcmtlckNvbnRleHQ6
Om1hcmtDaGlsZHJlbihNYXJrU3RhY2smIG1hcmtTdGFjaykKIHsKICAgICBCYXNlOjptYXJrQ2hp
bGRyZW4obWFya1N0YWNrKTsKIAotICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICp0aGlz
LT5nbG9iYWxEYXRhKCk7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gdGhpcy0+Z2xv
YmFsRGF0YSgpOwogCiAgICAgbWFya0FjdGl2ZU9iamVjdHNGb3JDb250ZXh0KG1hcmtTdGFjaywg
Z2xvYmFsRGF0YSwgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKIApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCmluZGV4IGFkM2Y1
ZWMuLjg1ZmM0OTYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250
ZXh0RXJyb3JIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5jcHAKQEAgLTg4LDE0ICs4OCwxNCBAQCB2b2lkIEpTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2Ny
aXB0RXhlYwogICAgICAgICBhcmdzLmFwcGVuZChqc1N0cmluZyhleGVjLCBlcnJvckV2ZW50LT5m
aWxlbmFtZSgpKSk7CiAgICAgICAgIGFyZ3MuYXBwZW5kKGpzTnVtYmVyKGV4ZWMsIGVycm9yRXZl
bnQtPmxpbmVubygpKSk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7Ci0gICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29w
ZSBnbG9iYWxPYmplY3RTY29wZShleGVjLCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0
ID8gZ2xvYmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdCk7ICAgIAor
ICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKTsKKyAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3Bl
KGV4ZWMsIGdsb2JhbERhdGEuZHluYW1pY0dsb2JhbE9iamVjdCA/IGdsb2JhbERhdGEuZHluYW1p
Y0dsb2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdCk7CiAKICAgICAgICAgSlNWYWx1ZSB0aGlzVmFs
dWUgPSBnbG9iYWxPYmplY3QtPnRvVGhpc09iamVjdChleGVjKTsKIAotICAgICAgICBnbG9iYWxE
YXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBnbG9iYWxEYXRhLnRpbWVvdXRD
aGVja2VyLnN0YXJ0KCk7CiAgICAgICAgIEpTVmFsdWUgcmV0dXJuVmFsdWUgPSBKU0M6OmNhbGwo
ZXhlYywganNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3MpOwot
ICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisgICAgICAgIGdsb2Jh
bERhdGEudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0
Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFj
dGlvbi5jcHAKaW5kZXggYTlkYzZhOC4uZDZmOGEzOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvU2No
ZWR1bGVkQWN0aW9uLmNwcApAQCAtMTAxLDEyICsxMDEsMTIgQEAgdm9pZCBTY2hlZHVsZWRBY3Rp
b246OmV4ZWN1dGVGdW5jdGlvbkluQ29udGV4dChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1YKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKICAgICAgICAgYXJn
cy5hcHBlbmQobV9hcmdzW2ldKTsKIAotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50
aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRp
bWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgaWYgKGNvbnRleHQtPmlzRG9jdW1lbnQoKSkKICAg
ICAgICAgSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKICAgICBlbHNlCiAgICAgICAgIEpTQzo6
Y2FsbChleGVjLCBtX2Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJn
cyk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3Ao
KTsKKyAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7
CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJlcG9ydEN1cnJlbnRF
eGNlcHRpb24oZXhlYyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1dvcmtlclNj
cmlwdENvbnRyb2xsZXIuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250
cm9sbGVyLmNwcAppbmRleCA2ZmY4YTY5Li41ODcyYjJlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAKQEAgLTEyNCw5ICsxMjQsOSBAQCBTY3Jp
cHRWYWx1ZSBXb3JrZXJTY3JpcHRDb250cm9sbGVyOjpldmFsdWF0ZShjb25zdCBTY3JpcHRTb3Vy
Y2VDb2RlJiBzb3VyY2VDb2RlLAogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25s
eSk7CiAKICAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9i
YWxFeGVjKCk7Ci0gICAgbV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsRGF0YSgpLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOworICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbERh
dGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIENvbXBsZXRpb24gY29tcCA9IEpTQzo6
ZXZhbHVhdGUoZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNo
YWluKCksIHNvdXJjZUNvZGUuanNTb3VyY2VDb2RlKCksIG1fd29ya2VyQ29udGV4dFdyYXBwZXIp
OwotICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNr
ZXIuc3RvcCgpOworICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbERhdGEoKS50aW1l
b3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBpZiAoY29tcC5jb21wbFR5cGUoKSA9PSBOb3JtYWwg
fHwgY29tcC5jb21wbFR5cGUoKSA9PSBSZXR1cm5WYWx1ZSkKICAgICAgICAgcmV0dXJuIGNvbXAu
dmFsdWUoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCAxNzI3MGViLi4wNzgwYWQ3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9icmlk
Z2UvTlBfanNvYmplY3QuY3BwCkBAIC0xOTAsOSArMTkwLDkgQEAgYm9vbCBfTlBOX0ludm9rZURl
ZmF1bHQoTlBQLCBOUE9iamVjdCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBh
cmdDb3UKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0
TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJn
TGlzdCk7CiAgICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0
ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJl
c3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZnVu
Y3Rpb24sIGFyZ0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGlt
ZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50
aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRo
ZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBW
YXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CkBAIC0yNDAsOSArMjQwLDkgQEAgYm9vbCBf
TlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUs
IGNvbnN0IE5QVmFyaWFudCoKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsK
ICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9v
dE9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4g
Z2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAg
ICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgb2JqLT5pbXAsIGFyZ0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgLy8gQ29udmVydCBh
bmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNvbnZl
cnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CkBAIC0yNzQsOSArMjc0
LDkgQEAgYm9vbCBfTlBOX0V2YWx1YXRlKE5QUCBpbnN0YW5jZSwgTlBPYmplY3QqIG8sIE5QU3Ry
aW5nKiBzLCBOUFZhcmlhbnQqIHZhcmlhbnQpCiAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBjb252ZXJ0TlBT
dHJpbmdUb1VURjE2KHMpOwogICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGds
b2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAg
Q29tcGxldGlvbiBjb21wbGV0aW9uID0gSlNDOjpldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uoc2Ny
aXB0U3RyaW5nKSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgICAgIENvbXBsVHlwZSB0eXBl
ID0gY29tcGxldGlvbi5jb21wbFR5cGUoKTsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgcmVz
dWx0OwpAQCAtNTE0LDkgKzUxNCw5IEBAIGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVj
dCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3VudCwKICAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50
QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAg
IFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+
Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50
aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNv
bnN0cnVjdChleGVjLCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwg
YXJnTGlzdCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRD
aGVja2VyLnN0b3AoKTsKICAgICAgICAgCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0
aGUgcmVzdWx0LgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRW
LCByZXN1bHQpOwotLSAKMS43LjIuMwoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71262</attachid>
            <date>2010-10-20 00:56:57 -0700</date>
            <delta_ts>2010-10-20 02:15:13 -0700</delta_ts>
            <desc>globaldataref.diff</desc>
            <filename>globaldataref.diff</filename>
            <type>text/plain</type>
            <size>32786</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBlOGIzYmJiYTE0YWVkMmEyMTFlNDIyZWI2OTM0NTE3NmZlMzIzNjViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDIwIE9jdCAyMDEwIDEwOjUwOjIzICswOTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMC0x
OSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAgTWFrZSBK
U0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm4gYSByZWZlcmVuY2UgYW5kIGFkYXB0CiAg
ICAgICAgY2FsbGVycy4gVGhpcyB1bmlmaWVzIHRoZSBBUEkgd2l0aCB0aGUgZXhpc3RpbmcKICAg
ICAgICBDYWxsRnJhbWU6Omdsb2JhbERhdGEsIHdoaWNoIGFsc28gcmV0dXJucyBhIHJlZmVyZW5j
ZS4KCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CiAgICAgICAgKEpTQzo6ZXZhbHVh
dGVJbkdsb2JhbENhbGxGcmFtZSk6CiAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoK
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CiAgICAgICAgKiBqc2MuY3BwOgogICAgICAgIChydW5X
aXRoU2NyaXB0cyk6CiAgICAgICAgKiBwYXJzZXIvSlNQYXJzZXIuY3BwOgogICAgICAgIChKU0M6
OmpzUGFyc2UpOgogICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKICAgICAgICAoSlNDOjpj
cmVhdGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlRXZhbEVycm9yKToKICAgICAgICAoSlND
OjpjcmVhdGVSYW5nZUVycm9yKToKICAgICAgICAoSlNDOjpjcmVhdGVSZWZlcmVuY2VFcnJvcik6
CiAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4RXJyb3IpOgogICAgICAgIChKU0M6OmNyZWF0ZVR5
cGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlVVJJRXJyb3IpOgogICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlv
bik6CiAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KToKICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bWFya0NoaWxkcmVuKToKICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSk6CgpXZWJDb3JlOgoKMjAx
MC0xMC0xOSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpp
bnZva2VDYWxsYmFjayk6CiAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29r
dXBOYW1lc3BhY2VVUkkpOgogICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cDoKICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CiAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgogICAgICAgIChXZWJD
b3JlOjpKU1dvcmtlckNvbnRleHQ6Om1hcmtDaGlsZHJlbik6CiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpKU1dv
cmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZSk6CiAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgogICAg
ICAgIChfTlBOX0ludm9rZURlZmF1bHQpOgogICAgICAgIChfTlBOX0ludm9rZSk6CiAgICAgICAg
KF9OUE5fRXZhbHVhdGUpOgogICAgICAgIChfTlBOX0NvbnN0cnVjdCk6CgpXZWJLaXQyOgoKMjAx
MC0xMC0yMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCiAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKICAgICAgICAoV2ViS2l0OjpOUFJ1bnRp
bWVPYmplY3RNYXA6OmdldE9yQ3JlYXRlSlNPYmplY3QpOgogICAgICAgIChXZWJLaXQ6Ok5QUnVu
dGltZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArKysrKysrKysrKysrKysrKysrKwogSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwICAgICAgICAgICAgICAgfCAgICAyICst
CiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCAgICAgICAgICAgICB8ICAg
IDMgLQogSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwICAgICAgICAg
fCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTAgKystLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcCAgICAg
ICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrKy0tLQogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCAgICAgICAgICB8ICAgIDYgKy0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCAgICAgICAgICAgIHwgICAgMiArLQog
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMw
ICsrKysrKysrKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAg
ICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCAgICB8ICAgIDQgKy0KIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcCAgICAgICAgICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgICAgICB8ICAgIDIgKy0KIC4uLi9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgICAgIHwgICAgNCArLQog
V2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwICAgICAgICAgICAgICAgICAgICAgfCAgIDE2
ICsrKystLS0tCiBXZWJLaXQyL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTQgKysrKysrKwogV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTlBSdW50aW1l
T2JqZWN0TWFwLmNwcCAgfCAgICA2ICstCiAyMyBmaWxlcyBjaGFuZ2VkLCAxMzcgaW5zZXJ0aW9u
cygrKSwgNTYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDNhYzU5MTUuLjYxNzU3OGEgMTAw
NjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0MyBAQAorMjAxMC0xMC0xOSAgWGFuIExvcGV6ICA8eGxvcGV6
QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgVW5pZnkgZ2xvYmFsRGF0YSBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD00Nzk2OQorCisgICAgICAgIE1ha2UgSlNHbG9iYWxPYmplY3Q6
Omdsb2JhbERhdGEgcmV0dXJuIGEgcmVmZXJlbmNlIGFuZCBhZGFwdAorICAgICAgICBjYWxsZXJz
LiBUaGlzIHVuaWZpZXMgdGhlIEFQSSB3aXRoIHRoZSBleGlzdGluZworICAgICAgICBDYWxsRnJh
bWU6Omdsb2JhbERhdGEsIHdoaWNoIGFsc28gcmV0dXJucyBhIHJlZmVyZW5jZS4KKworICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGVJbkdsb2Jh
bENhbGxGcmFtZSk6CisgICAgICAgICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRl
cjo6ZHVtcFJlZ2lzdGVycyk6CisgICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bldpdGhT
Y3JpcHRzKToKKyAgICAgICAgKiBwYXJzZXIvSlNQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpq
c1BhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQ
YXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpT
Qzo6Y3JlYXRlRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVFdmFsRXJyb3IpOgorICAgICAg
ICAoSlNDOjpjcmVhdGVSYW5nZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVmZXJlbmNl
RXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVTeW50YXhFcnJvcik6CisgICAgICAgIChKU0M6
OmNyZWF0ZVR5cGVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVVSSUVycm9yKToKKyAgICAg
ICAgKiBydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RGdW5jdGlvbik6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6Cisg
ICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pT
R2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxEYXRh
KToKKwogMjAxMC0xMC0xOSAgS3dhbmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0Pgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhdmlkIEtpbHplci4KZGlmZiAtLWdpdCBhL0phdmFTY3Jp
cHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Rl
YnVnZ2VyLmNwcAppbmRleCAxN2RmZGY3Li4yOWI2ZWIyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCkBAIC0xMDYsNyArMTA2LDcgQEAgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFs
Q2FsbEZyYW1lKGNvbnN0IFVTdHJpbmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0cK
ICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBlcnJvcjsKIAotICAgIHJldHVybiBnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKS0+aW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbC5nZXQoKSwg
Z2xvYmFsQ2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGdsb2JhbENhbGxGcmFtZS0+c2NvcGVDaGFp
bigpLCAmZXhjZXB0aW9uKTsKKyAgICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCku
aW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbC5nZXQoKSwgZ2xvYmFsQ2FsbEZyYW1lLCBnbG9iYWxP
YmplY3QsIGdsb2JhbENhbGxGcmFtZS0+c2NvcGVDaGFpbigpLCAmZXhjZXB0aW9uKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRl
ci9DYWxsRnJhbWUuaCBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmlu
ZGV4IGJkZTk3ODYuLjY3ZGViMzggMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0NhbGxGcmFtZS5oCisrKyBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFt
ZS5oCkBAIC02Myw5ICs2Myw2IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHJldHVy
biBzY29wZUNoYWluKCktPmdsb2JhbFRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhN
RTogRWxzZXdoZXJlLCB3ZSB1c2UgSlNHbG9iYWxEYXRhKiByYXRoZXIgdGhhbiBKU0dsb2JhbERh
dGEmLgotICAgICAgICAvLyBXZSBzaG91bGQgbWFrZSB0aGlzIG1vcmUgdW5pZm9ybSBhbmQgZWl0
aGVyIHVzZSBhIHJlZmVyZW5jZSBldmVyeXdoZXJlCi0gICAgICAgIC8vIG9yIGEgcG9pbnRlciBl
dmVyeXdoZXJlLgogICAgICAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEoKSBjb25zdAogICAg
ICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoc2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhKTsKZGlm
ZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL0ph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCAyODc3NTY1Li5i
ZjliYjczIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRl
ci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBA
IC00NDgsNyArNDQ4LDcgQEAgdm9pZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJh
bWUqIGNhbGxGcmFtZSkKICAgICBwcmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAog
ICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBS
ZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSA9ICZjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKKyAg
ICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSA9ICZjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwog
ICAgIGNvbnN0IFJlZ2lzdGVyKiBpdDsKICAgICBjb25zdCBSZWdpc3RlciogZW5kOwogICAgIEpT
VmFsdWUgdjsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCmluZGV4IGQ3NTZhMGMuLmJhNTA2ZTQgMTAwNjQ0Ci0tLSBhL0phdmFTY3Jp
cHRDb3JlL2pzYy5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzY4LDcgKzM2
OCw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgaWYgKGR1bXApCiAgICAgICAgIEJ5
dGVjb2RlR2VuZXJhdG9yOjpzZXREdW1wc0dlbmVyYXRlZENvZGUodHJ1ZSk7CiAKLSAgICBKU0ds
b2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKKyAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKIAog
I2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKICAgICBTYW1wbGluZ0ZsYWdzOjpzdGFydCgpOwpA
QCAtMzg2LDcgKzM4Niw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgICAgICAgICBm
aWxlTmFtZSA9ICJbQ29tbWFuZCBMaW5lXSI7CiAgICAgICAgIH0KIAotICAgICAgICBnbG9iYWxE
YXRhLT5zdGFydFNhbXBsaW5nKCk7CisgICAgICAgIGdsb2JhbERhdGEuc3RhcnRTYW1wbGluZygp
OwogCiAgICAgICAgIENvbXBsZXRpb24gY29tcGxldGlvbiA9IGV2YWx1YXRlKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNv
dXJjZShzY3JpcHQsIGZpbGVOYW1lKSk7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNv
bXBsZXRpb24uY29tcGxUeXBlKCkgIT0gVGhyb3c7CkBAIC0zOTcsMTkgKzM5NywxOSBAQCBzdGF0
aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
VmVjdG9yPFNjcmlwdD4mIHNjcgogICAgICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwg
Y29tcGxldGlvbi52YWx1ZSgpLnRvU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51
dGY4KCkuZGF0YSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGdsb2JhbERhdGEtPnN0b3BTYW1w
bGluZygpOworICAgICAgICBnbG9iYWxEYXRhLnN0b3BTYW1wbGluZygpOwogICAgICAgICBnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKS0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICB9CiAKICNpZiBF
TkFCTEUoU0FNUExJTkdfRkxBR1MpCiAgICAgU2FtcGxpbmdGbGFnczo6c3RvcCgpOwogI2VuZGlm
Ci0gICAgZ2xvYmFsRGF0YS0+ZHVtcFNhbXBsZURhdGEoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCkpOworICAgIGdsb2JhbERhdGEuZHVtcFNhbXBsZURhdGEoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCkpOwogI2lmIEVOQUJMRShTQU1QTElOR19DT1VOVEVSUykKICAgICBBYnN0cmFjdFNhbXBs
aW5nQ291bnRlcjo6ZHVtcCgpOwogI2VuZGlmCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQot
ICAgIGdsb2JhbERhdGEtPmR1bXBSZWdFeHBUcmFjZSgpOworICAgIGdsb2JhbERhdGEuZHVtcFJl
Z0V4cFRyYWNlKCk7CiAjZW5kaWYKICAgICByZXR1cm4gc3VjY2VzczsKIH0KZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvSlNQYXJzZXIuY3BwCmluZGV4IDAzMzgyMTAuLjRiN2ZjYjIgMTAwNjQ0Ci0tLSBhL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L0pTUGFyc2VyLmNwcApAQCAtNDg1LDcgKzQ4NSw3IEBAIHByaXZhdGU6CiAKIGludCBqc1BhcnNl
KEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMq
IHBhcmFtZXRlcnMsIEpTUGFyc2VyU3RyaWN0bmVzcyBzdHJpY3RuZXNzLCBKU1BhcnNlck1vZGUg
cGFyc2VyTW9kZSwgY29uc3QgU291cmNlQ29kZSogc291cmNlKQogewotICAgIEpTUGFyc2VyIHBh
cnNlcihsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPmxleGVyLCBsZXhpY2FsR2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHBhcmFtZXRlcnMsIHN0cmljdG5lc3MgPT0gSlNQYXJz
ZVN0cmljdCwgcGFyc2VyTW9kZSA9PSBKU1BhcnNlRnVuY3Rpb25Db2RlLCBzb3VyY2UtPnByb3Zp
ZGVyKCkpOworICAgIEpTUGFyc2VyIHBhcnNlcihsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCkubGV4ZXIsICZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHBhcmFtZXRl
cnMsIHN0cmljdG5lc3MgPT0gSlNQYXJzZVN0cmljdCwgcGFyc2VyTW9kZSA9PSBKU1BhcnNlRnVu
Y3Rpb25Db2RlLCBzb3VyY2UtPnByb3ZpZGVyKCkpOwogICAgIHJldHVybiBwYXJzZXIucGFyc2VQ
cm9ncmFtKGxleGljYWxHbG9iYWxPYmplY3QpOwogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CmluZGV4IGFkODVhN2MuLmFmZjc5ZjUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC00
NSw3ICs0NSw3IEBAIHZvaWQgUGFyc2VyOjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEds
b2JhbE9iamVjdCwgRnVuY3Rpb25QYXJhbWV0ZXJzKiBwYXJhCiAgICAgKmVyckxpbmUgPSAtMTsK
ICAgICAqZXJyTXNnID0gVVN0cmluZygpOwogCi0gICAgTGV4ZXImIGxleGVyID0gKmxleGljYWxH
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+bGV4ZXI7CisgICAgTGV4ZXImIGxleGVyID0gKmxl
eGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5sZXhlcjsKICAgICBsZXhlci5zZXRDb2Rl
KCptX3NvdXJjZSwgbV9hcmVuYSk7CiAKICAgICBpbnQgcGFyc2VFcnJvciA9IGpzUGFyc2UobGV4
aWNhbEdsb2JhbE9iamVjdCwgcGFyYW1ldGVycywgc3RyaWN0bmVzcywgbW9kZSwgbV9zb3VyY2Up
OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IGY1YmJjYjguLjY1NDkwNjcgMTAwNjQ0Ci0tLSBh
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmgKQEAgLTg0LDEyICs4NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAg
ICBtX3NvdXJjZSA9ICZzb3VyY2U7CiAgICAgICAgIGlmIChQYXJzZWROb2RlOjpzY29wZUlzRnVu
Y3Rpb24pCi0gICAgICAgICAgICBsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPmxl
eGVyLT5zZXRJc1JlcGFyc2luZygpOworICAgICAgICAgICAgbGV4aWNhbEdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLmxleGVyLT5zZXRJc1JlcGFyc2luZygpOwogICAgICAgICBwYXJzZShsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBwYXJhbWV0ZXJzLCBzdHJpY3RuZXNzLCBQYXJzZWROb2RlOjppc0Z1
bmN0aW9uTm9kZSA/IEpTUGFyc2VGdW5jdGlvbkNvZGUgOiBKU1BhcnNlUHJvZ3JhbUNvZGUsICZl
cnJMaW5lLCAmZXJyTXNnKTsKIAogICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0Owog
ICAgICAgICBpZiAobV9zb3VyY2VFbGVtZW50cykgewotICAgICAgICAgICAgcmVzdWx0ID0gUGFy
c2VkTm9kZTo6Y3JlYXRlKGxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwKKyAgICAg
ICAgICAgIHJlc3VsdCA9IFBhcnNlZE5vZGU6OmNyZWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLAogICAgICAgICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAgICAgICAg
ICAgICAgICAgbV92YXJEZWNsYXJhdGlvbnMgPyAmbV92YXJEZWNsYXJhdGlvbnMtPmRhdGEgOiAw
LAogICAgICAgICAgICAgICAgIG1fZnVuY0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlv
bnMtPmRhdGEgOiAwLApAQCAtMTA4LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAgICAgaWYgKGlzRnVuY3Rpb25Cb2R5Tm9kZShzdGF0aWNfY2FzdDxQYXJzZWROb2RlKj4oMCkp
KQogICAgICAgICAgICAgICAgICpleGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3Io
bGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
KmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbyhsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCksIGNyZWF0ZVN5bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxp
bmUsIHNvdXJjZSk7CisgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygm
bGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBlcnJNc2cpLCBlcnJMaW5lLCBzb3VyY2UpOwogICAgICAgICB9CiAK
ICAgICAgICAgbV9hcmVuYS5yZXNldCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9FcnJvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCBl
MzU0MjRiLi42YjI3ZDdkIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtNDUsNDMgKzQ1
LDQzIEBAIHN0YXRpYyBjb25zdCBjaGFyKiBleHByZXNzaW9uRW5kT2Zmc2V0UHJvcGVydHlOYW1l
ID0gImV4cHJlc3Npb25FbmRPZmZzZXQiOwogSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNT
RVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0
ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVy
ZSgpLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKCZnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZSgpLCBtZXNz
YWdlKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUV2YWxFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2Fn
ZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+ZXZhbEVycm9yQ29uc3RydWN0b3IoKS0+
ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+ZXZhbEVycm9y
Q29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKIEpTT2JqZWN0
KiBjcmVhdGVSYW5nZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVT
dHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAg
cmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LT5yYW5nZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwg
bWVzc2FnZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yKCktPmVy
cm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qt
PnJlZmVyZW5jZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7
CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCksIGdsb2JhbE9iamVjdC0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0
cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAg
ICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5zeW50YXhF
cnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOworICAgIHJldHVy
biBFcnJvckluc3RhbmNlOjpjcmVhdGUoJmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9i
YWxPYmplY3QtPnN5bnRheEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVz
c2FnZSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3Nh
Z2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCkt
PmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOworICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpj
cmVhdGUoJmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJv
ckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVj
dCogY3JlYXRlVVJJRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICBy
ZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QtPlVSSUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVz
c2FnZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+VVJJRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0
cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwCmluZGV4IDliNTk3MjAuLmJjMjE1OGUgMTAwNjQ0
Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysr
IGIvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtOTcs
NyArOTcsNyBAQCBKU09iamVjdCogY29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBj
b25zdCBBcmdMaXN0JiBhcmdzLCBjb25zdCBJZGVudGlmaQogICAgIH0KIAogICAgIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QgPSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAg
SlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7Cisg
ICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7
CiAgICAgU291cmNlQ29kZSBzb3VyY2UgPSBtYWtlU291cmNlKHByb2dyYW0sIHNvdXJjZVVSTCwg
bGluZU51bWJlcik7CiAgICAgSlNPYmplY3QqIGV4Y2VwdGlvbiA9IDA7CiAgICAgUmVmUHRyPEZ1
bmN0aW9uRXhlY3V0YWJsZT4gZnVuY3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9i
YWxDb2RlKGZ1bmN0aW9uTmFtZSwgZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5k
ZWJ1Z2dlcigpLCBzb3VyY2UsICZleGNlcHRpb24pOwpAQCAtMTA2LDcgKzEwNiw3IEBAIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MsIGNvbnN0IElkZW50aWZpCiAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGV4Y2Vw
dGlvbik7CiAgICAgfQogCi0gICAgU2NvcGVDaGFpbiBzY29wZUNoYWluKGdsb2JhbE9iamVjdCwg
Z2xvYmFsRGF0YSwgZ2xvYmFsT2JqZWN0LCBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKSk7CisgICAg
U2NvcGVDaGFpbiBzY29wZUNoYWluKGdsb2JhbE9iamVjdCwgJmdsb2JhbERhdGEsIGdsb2JhbE9i
amVjdCwgZXhlYy0+Z2xvYmFsVGhpc1ZhbHVlKCkpOwogICAgIHJldHVybiBuZXcgKGV4ZWMpIEpT
RnVuY3Rpb24oZXhlYywgZnVuY3Rpb24sIHNjb3BlQ2hhaW4ubm9kZSgpKTsKIH0KIApkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAppbmRleCA5MDNlNTczLi43YjFlYjA2
IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTE2LDcg
KzExNiw3IEBAIEpTR2xvYmFsT2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogICAgIGZvciAoSGFz
aFNldDxHbG9iYWxDb2RlQmxvY2sqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb2RlQmxvY2tzKCku
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+Y2xlYXJHbG9iYWxPYmpl
Y3QoKTsKICAgICAgICAgCi0gICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUgPSBnbG9iYWxE
YXRhKCktPmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKKyAgICBSZWdpc3RlckZpbGUmIHJl
Z2lzdGVyRmlsZSA9IGdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCk7CiAg
ICAgaWYgKHJlZ2lzdGVyRmlsZS5jbGVhckdsb2JhbE9iamVjdCh0aGlzKSkKICAgICAgICAgcmVn
aXN0ZXJGaWxlLnNldE51bUdsb2JhbHMoMCk7CiAgICAgZCgpLT5kZXN0cnVjdG9yKGQoKSk7CkBA
IC0zNDksOSArMzQ5LDkgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtT
dGFjayYgbWFya1N0YWNrKQogICAgIGZvciAoSGFzaFNldDxHbG9iYWxDb2RlQmxvY2sqPjo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjb2RlQmxvY2tzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQog
ICAgICAgICAoKml0KS0+bWFya0FnZ3JlZ2F0ZShtYXJrU3RhY2spOwogCi0gICAgUmVnaXN0ZXJG
aWxlJiByZWdpc3RlckZpbGUgPSBnbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5yZWdpc3RlckZp
bGUoKTsKKyAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSA9IGdsb2JhbERhdGEoKS5pbnRl
cnByZXRlci0+cmVnaXN0ZXJGaWxlKCk7CiAgICAgaWYgKHJlZ2lzdGVyRmlsZS5nbG9iYWxPYmpl
Y3QoKSA9PSB0aGlzKQotICAgICAgICByZWdpc3RlckZpbGUubWFya0dsb2JhbHMobWFya1N0YWNr
LCAmZ2xvYmFsRGF0YSgpLT5oZWFwKTsKKyAgICAgICAgcmVnaXN0ZXJGaWxlLm1hcmtHbG9iYWxz
KG1hcmtTdGFjaywgJmdsb2JhbERhdGEoKS5oZWFwKTsKIAogICAgIG1hcmtJZk5lZWRlZChtYXJr
U3RhY2ssIGQoKS0+cmVnRXhwQ29uc3RydWN0b3IpOwogICAgIG1hcmtJZk5lZWRlZChtYXJrU3Rh
Y2ssIGQoKS0+ZXJyb3JDb25zdHJ1Y3Rvcik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmgKaW5kZXggMzZmYTcwYi4uOTNhMWI4OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuaApAQCAtMjc2LDcgKzI3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICAKICAgICAgICAgdm9pZCByZXNldFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSk7CiAK
LSAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gZCgpLT5nbG9iYWxE
YXRhLmdldCgpOyB9CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSgpIHsgcmV0dXJu
ICpkKCktPmdsb2JhbERhdGEuZ2V0KCk7IH0KICAgICAgICAgSlNHbG9iYWxPYmplY3REYXRhKiBk
KCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8SlNHbG9iYWxPYmplY3REYXRhKj4oSlNWYXJp
YWJsZU9iamVjdDo6ZCk7IH0KIAogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+
IGNyZWF0ZVN0cnVjdHVyZShKU1ZhbHVlIHByb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTk1ZDdkOS4uNTNjYmNhOCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxMC0xMC0xOSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgZ2xv
YmFsRGF0YSBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD00Nzk2OQorCisgICAgICAgIEFkYXB0IGNvZGUgdG8gSlNHbG9iYWxPYmplY3Q6Omdsb2Jh
bERhdGEgcmV0dXJuaW5nIGEgcmVmZXJlbmNlCisgICAgICAgIGluc3RlYWQgb2YgYSBwb2ludGVy
LgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVu
dExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6bWFy
a0NoaWxkcmVuKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhh
bmRsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVy
OjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5D
b250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToK
KyAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9JbnZva2VE
ZWZhdWx0KToKKyAgICAgICAgKF9OUE5fSW52b2tlKToKKyAgICAgICAgKF9OUE5fRXZhbHVhdGUp
OgorICAgICAgICAoX05QTl9Db25zdHJ1Y3QpOgorCiAyMDEwLTEwLTE5ICBZb25nanVuIFpoYW5n
ICA8eW9uZ2p1bl96aGFuZ0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJl
cm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEu
Y3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKaW5kZXggNmIxOTYz
OS4uZjM5YzUzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAKQEAgLTU5
LDcgKzU5LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2soTWFya2Vk
QXJndW1lbnRCdWZmZXImIGFyZ3MsIGJvb2wqIHJhaXNlZEUKICAgICAgICAgZnVuY3Rpb24gPSBj
YWxsYmFjaygpOwogICAgIH0KICAgICAKLSAgICBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgp
LT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRh
KCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0ID0gZ2xvYmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKICAgICAv
LyBXZSB3aWxsIGZhaWwgdG8gZ2V0IHRoZSBjb250ZXh0IGlmIHRoZSBmcmFtZSBoYXMgYmVlbiBk
ZXRhY2hlZC4KICAgICBpZiAoIWNvbnRleHQpCkBAIC02OCw3ICs2OCw3IEBAIEpTVmFsdWUgSlND
YWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBi
b29sKiByYWlzZWRFCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjb250ZXh0LT5pc0RvY3VtZW50KCkg
CiAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGNhbGxiYWNrKCksIGFyZ3MpCiAgICAgICAgIDogSlNDOjpjYWxs
KGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxiYWNrKCksIGFyZ3MpOwot
ICAgIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsK
KyAgICBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsK
IAogICAgIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygpOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCmluZGV4IDM3ZjI1
MTIuLmU4ZTEzNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0
aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5T
UmVzb2x2ZXIuY3BwCkBAIC04OSw5ICs4OSw5IEBAIFN0cmluZyBKU0N1c3RvbVhQYXRoTlNSZXNv
bHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4KQogICAgIE1hcmtl
ZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgcHJl
Zml4KSk7CiAKLSAgICBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tl
ci5zdGFydCgpOworICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNr
ZXIuc3RhcnQoKTsKICAgICBKU1ZhbHVlIHJldHZhbCA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlv
biwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2N1c3RvbVJlc29sdmVyLCBhcmdzKTsKLSAgICBtX2ds
b2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisgICAgbV9n
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBT
dHJpbmcgcmVzdWx0OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBjZWVkNDQ1Li41NjA0Mzc0IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAKKysrIGIvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMDgsMTAgKzEwOCwxMCBAQCB2
b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICBFdmVudCogc2F2ZWRFdmVudCA9IGdsb2Jh
bE9iamVjdC0+Y3VycmVudEV2ZW50KCk7CiAgICAgICAgIGdsb2JhbE9iamVjdC0+c2V0Q3VycmVu
dEV2ZW50KGV2ZW50KTsKIAotICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9i
YWxPYmplY3QtPmdsb2JhbERhdGEoKTsKLSAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3Bl
IGdsb2JhbE9iamVjdFNjb3BlKGV4ZWMsIGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3Qg
PyBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsKKyAgICAg
ICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7
CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShleGVj
LCBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLmR5bmFtaWNHbG9i
YWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOwogCi0gICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRD
aGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RhcnQo
KTsKICAgICAgICAgSlNWYWx1ZSByZXR2YWw7CiAgICAgICAgIGlmIChoYW5kbGVFdmVudEZ1bmN0
aW9uKSB7CiAgICAgICAgICAgICByZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0Rv
Y3VtZW50KCkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAg
ICAgICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMsIGpzRnVuY3Rp
b24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY3VycmVudFRhcmdldCwgYXJncykKICAgICAgICAgICAg
ICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGN1
cnJlbnRUYXJnZXQsIGFyZ3MpOwogICAgICAgICB9Ci0gICAgICAgIGdsb2JhbERhdGEtPnRpbWVv
dXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVudCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9t
LmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcAppbmRl
eCBiODg4NWNmLi5iZTQ3YjE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNv
bnRleHRDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSlNXb3JrZXJDb250ZXh0Ojpt
YXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgQmFzZTo6bWFya0NoaWxk
cmVuKG1hcmtTdGFjayk7CiAKLSAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqdGhpcy0+
Z2xvYmFsRGF0YSgpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IHRoaXMtPmdsb2Jh
bERhdGEoKTsKIAogICAgIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dChtYXJrU3RhY2ssIGds
b2JhbERhdGEsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcCBiL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcAppbmRleCBhZDNmNWVj
Li44NWZjNDk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4
dEVycm9ySGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXIuY3BwCkBAIC04OCwxNCArODgsMTQgQEAgdm9pZCBKU1dvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWMKICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgZXJyb3JFdmVudC0+Zmls
ZW5hbWUoKSkpOwogICAgICAgICBhcmdzLmFwcGVuZChqc051bWJlcihleGVjLCBlcnJvckV2ZW50
LT5saW5lbm8oKSkpOwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBEeW5hbWljR2xvYmFsT2JqZWN0U2NvcGUg
Z2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xvYmFsRGF0YS0+ZHluYW1pY0dsb2JhbE9iamVjdCA/
IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOyAgICAKKyAg
ICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCk7CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShl
eGVjLCBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLmR5bmFtaWNH
bG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOwogCiAgICAgICAgIEpTVmFsdWUgdGhpc1ZhbHVl
ID0gZ2xvYmFsT2JqZWN0LT50b1RoaXNPYmplY3QoZXhlYyk7CiAKLSAgICAgICAgZ2xvYmFsRGF0
YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0Q2hl
Y2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0gSlNDOjpjYWxsKGV4
ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKLSAg
ICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxE
YXRhLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1
cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rp
b24uY3BwCmluZGV4IGE5ZGM2YTguLmQ2ZjhhMzggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVk
dWxlZEFjdGlvbi5jcHAKQEAgLTEwMSwxMiArMTAxLDEyIEBAIHZvaWQgU2NoZWR1bGVkQWN0aW9u
OjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAgICAgICAgIGFyZ3Mu
YXBwZW5kKG1fYXJnc1tpXSk7CiAKLSAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGlt
ZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOwogICAgIGlmIChjb250ZXh0LT5pc0RvY3VtZW50KCkpCiAgICAg
ICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBtX2Z1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAgICAgZWxzZQogICAgICAgICBKU0M6OmNh
bGwoZXhlYywgbV9mdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUsIGFyZ3Mp
OwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7
CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwog
CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXBvcnRDdXJyZW50RXhj
ZXB0aW9uKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3Jp
cHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJv
bGxlci5jcHAKaW5kZXggNmZmOGE2OS4uNTg3MmIyZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5k
aW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjQsOSArMTI0LDkgQEAgU2NyaXB0
VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3QgU2NyaXB0U291cmNl
Q29kZSYgc291cmNlQ29kZSwKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkp
OwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFs
RXhlYygpOwotICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbERhdGEoKS0+dGltZW91
dENoZWNrZXIuc3RhcnQoKTsKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxEYXRh
KCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBDb21wbGV0aW9uIGNvbXAgPSBKU0M6OmV2
YWx1YXRlKGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xvYmFsU2NvcGVDaGFp
bigpLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckNvbnRleHRXcmFwcGVyKTsK
LSAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2Vy
LnN0b3AoKTsKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RvcCgpOwogCiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkgPT0gTm9ybWFsIHx8
IGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0dXJuVmFsdWUpCiAgICAgICAgIHJldHVybiBjb21wLnZh
bHVlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAgYi9XZWJD
b3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXggMTcyNzBlYi4uMDc4MGFkNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwCisrKyBiL1dlYkNvcmUvYnJpZGdl
L05QX2pzb2JqZWN0LmNwcApAQCAtMTkwLDkgKzE5MCw5IEBAIGJvb2wgX05QTl9JbnZva2VEZWZh
dWx0KE5QUCwgTlBPYmplY3QqIG8sIGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3QgYXJn
Q291CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExp
c3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xp
c3QpOwogICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9
IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1
bHRWID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGZ1bmN0
aW9uLCBhcmdMaXN0KTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVv
dXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGlt
ZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUg
cmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFy
aWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwpAQCAtMjQwLDkgKzI0MCw5IEBAIGJvb2wgX05Q
Tl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG8sIE5QSWRlbnRpZmllciBtZXRob2ROYW1lLCBj
b25zdCBOUFZhcmlhbnQqCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAg
ICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RP
YmplY3QsIGFyZ0xpc3QpOwogICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGds
b2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAg
SlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2Fs
bERhdGEsIG9iai0+aW1wLCBhcmdMaXN0KTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIC8vIENvbnZlcnQgYW5k
IHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAgICAgICBjb252ZXJ0
VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwpAQCAtMjc0LDkgKzI3NCw5
IEBAIGJvb2wgX05QTl9FdmFsdWF0ZShOUFAgaW5zdGFuY2UsIE5QT2JqZWN0KiBvLCBOUFN0cmlu
ZyogcywgTlBWYXJpYW50KiB2YXJpYW50KQogICAgICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwogICAgICAgICBTdHJpbmcgc2NyaXB0U3RyaW5nID0gY29udmVydE5QU3Ry
aW5nVG9VVEYxNihzKTsKICAgICAgICAgUHJvdGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBnbG9i
YWxPYmplY3QgPSByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgICAgIENv
bXBsZXRpb24gY29tcGxldGlvbiA9IEpTQzo6ZXZhbHVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVDaGFpbigpLCBtYWtlU291cmNlKHNjcmlw
dFN0cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgICAgICBDb21wbFR5cGUgdHlwZSA9
IGNvbXBsZXRpb24uY29tcGxUeXBlKCk7CiAgICAgICAgIAogICAgICAgICBKU1ZhbHVlIHJlc3Vs
dDsKQEAgLTUxNCw5ICs1MTQsOSBAQCBib29sIF9OUE5fQ29uc3RydWN0KE5QUCwgTlBPYmplY3Qq
IG8sIGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMyX3QgYXJnQ291bnQsCiAgICAgICAgIE1h
cmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFy
Z3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwogICAgICAgICBQ
cm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmds
b2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91
dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGlt
ZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjb25z
dHJ1Y3QoZXhlYywgY29uc3RydWN0b3IsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFy
Z0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNr
ZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CiAgICAgICAgIAogICAgICAgICAvLyBDb252ZXJ0IGFuZCByZXR1cm4gdGhl
IHJlc3VsdC4KICAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgcmVzdWx0Viwg
cmVzdWx0KTsKZGlmZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VM
b2cKaW5kZXggMzdlODg0ZC4uYTY5NjZkYiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMC0yMCAgWGFu
IExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgZ2xvYmFsRGF0YSBBUElzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzk2OQorCisgICAgICAgIEFkYXB0
IGNvZGUgdG8gSlNHbG9iYWxPYmplY3Q6Omdsb2JhbERhdGEgcmV0dXJuaW5nIGEgcmVmZXJlbmNl
CisgICAgICAgIGluc3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9Q
bHVnaW5zL05QUnVudGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGlt
ZU9iamVjdE1hcDo6Z2V0T3JDcmVhdGVKU09iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVu
dGltZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgorCiAyMDEwLTEwLTE5ICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
ZGlmZiAtLWdpdCBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05QUnVudGltZU9iamVjdE1h
cC5jcHAgYi9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OUFJ1bnRpbWVPYmplY3RNYXAuY3Bw
CmluZGV4IGUwZmFhNWIuLmEzOWJhYWUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL05QUnVudGltZU9iamVjdE1hcC5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1Bs
dWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcApAQCAtOTYsNyArOTYsNyBAQCBKU09iamVjdCog
TlBSdW50aW1lT2JqZWN0TWFwOjpnZXRPckNyZWF0ZUpTT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiAgICAgaWYgKEpTTlBPYmplY3QqIGpzTlBPYmplY3QgPSBtX2pzTlBPYmpl
Y3RzLmdldChucE9iamVjdCkpCiAgICAgICAgIHJldHVybiBqc05QT2JqZWN0OwogCi0gICAgSlNO
UE9iamVjdCoganNOUE9iamVjdCA9IG5ldyAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpIEpT
TlBPYmplY3QoZ2xvYmFsT2JqZWN0LCB0aGlzLCBucE9iamVjdCk7CisgICAgSlNOUE9iamVjdCog
anNOUE9iamVjdCA9IG5ldyAoJmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpKSBKU05QT2JqZWN0
KGdsb2JhbE9iamVjdCwgdGhpcywgbnBPYmplY3QpOwogICAgIG1fanNOUE9iamVjdHMuc2V0KG5w
T2JqZWN0LCBqc05QT2JqZWN0KTsKIAogICAgIHJldHVybiBqc05QT2JqZWN0OwpAQCAtMTk1LDkg
KzE5NSw5IEBAIGJvb2wgTlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamVjdCogbnBP
YmplY3QsIGNvbnN0IFN0cmluZyZzY3JpcHRTdHJpbmcsCiAgICAgSlNMb2NrIGxvY2soU2lsZW5j
ZUFzc2VydGlvbnNPbmx5KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdldE9yQ3JlYXRlSlNP
YmplY3QoZ2xvYmFsT2JqZWN0LCBucE9iamVjdCk7CiAKLSAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIENvbXBsZXRpb24gY29tcGxldGlv
biA9IEpTQzo6ZXZhbHVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCks
IG1ha2VTb3VyY2UoVVN0cmluZyhzY3JpcHRTdHJpbmcuaW1wbCgpKSksIHRoaXNWYWx1ZSk7Ci0g
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAg
ICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAg
ICBDb21wbFR5cGUgY29tcGxldGlvblR5cGUgPSBjb21wbGV0aW9uLmNvbXBsVHlwZSgpOwogCi0t
IAoxLjcuMi4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71265</attachid>
            <date>2010-10-20 02:15:13 -0700</date>
            <delta_ts>2010-10-20 06:12:22 -0700</delta_ts>
            <desc>globaldataref.diff</desc>
            <filename>globaldataref.diff</filename>
            <type>text/plain</type>
            <size>36023</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSBhNTMyOWJkNTQ3ZWIwY2I4MzE1YTVhNTVjMDRiMmJiNjJmYjk5OWI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDIwIE9jdCAyMDEwIDEwOjUwOjIzICswOTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMC0x
OSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAgTWFrZSBK
U0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm4gYSByZWZlcmVuY2UgYW5kIGFkYXB0CiAg
ICAgICAgY2FsbGVycy4gVGhpcyB1bmlmaWVzIHRoZSBBUEkgd2l0aCB0aGUgZXhpc3RpbmcKICAg
ICAgICBDYWxsRnJhbWU6Omdsb2JhbERhdGEsIHdoaWNoIGFsc28gcmV0dXJucyBhIHJlZmVyZW5j
ZS4KCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CiAgICAgICAgKEpTQzo6ZXZhbHVh
dGVJbkdsb2JhbENhbGxGcmFtZSk6CiAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoK
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CiAgICAgICAgKiBqc2MuY3BwOgogICAgICAgIChydW5X
aXRoU2NyaXB0cyk6CiAgICAgICAgKiBwYXJzZXIvSlNQYXJzZXIuY3BwOgogICAgICAgIChKU0M6
OmpzUGFyc2UpOgogICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKICAgICAgICAoSlNDOjpj
cmVhdGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlRXZhbEVycm9yKToKICAgICAgICAoSlND
OjpjcmVhdGVSYW5nZUVycm9yKToKICAgICAgICAoSlNDOjpjcmVhdGVSZWZlcmVuY2VFcnJvcik6
CiAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4RXJyb3IpOgogICAgICAgIChKU0M6OmNyZWF0ZVR5
cGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlVVJJRXJyb3IpOgogICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlv
bik6CiAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KToKICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bWFya0NoaWxkcmVuKToKICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSk6CgpXZWJDb3JlOgoKMjAx
MC0xMC0xOSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpp
bnZva2VDYWxsYmFjayk6CiAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29r
dXBOYW1lc3BhY2VVUkkpOgogICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cDoKICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CiAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgogICAgICAgIChXZWJD
b3JlOjpKU1dvcmtlckNvbnRleHQ6Om1hcmtDaGlsZHJlbik6CiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpKU1dv
cmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZSk6CiAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgogICAg
ICAgIChfTlBOX0ludm9rZURlZmF1bHQpOgogICAgICAgIChfTlBOX0ludm9rZSk6CiAgICAgICAg
KF9OUE5fRXZhbHVhdGUpOgogICAgICAgIChfTlBOX0NvbnN0cnVjdCk6CgpXZWJLaXQyOgoKMjAx
MC0xMC0yMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCiAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKICAgICAgICAoV2ViS2l0OjpOUFJ1bnRp
bWVPYmplY3RNYXA6OmdldE9yQ3JlYXRlSlNPYmplY3QpOgogICAgICAgIChXZWJLaXQ6Ok5QUnVu
dGltZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgotLS0KIEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0MCArKysrKysrKysrKysrKysrKysrKwogSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwICAgICAgICAgICAgICAgfCAgICAyICst
CiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCAgICAgICAgICAgICB8ICAg
IDMgLQogSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwICAgICAgICAg
fCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9qc2MuY3BwICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgMTAgKystLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcCAgICAg
ICAgICAgICAgICAgfCAgICAyICstCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCAg
ICAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
aCAgICAgICAgICAgICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
cnJvci5jcHAgICAgICAgICAgICAgICAgICAgfCAgIDE0ICsrKy0tLQogSmF2YVNjcmlwdENvcmUv
cnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCAgICAgfCAgICA0ICstCiBKYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcCAgICAgICAgICB8ICAgIDYgKy0KIEphdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCAgICAgICAgICAgIHwgICAgMiArLQog
V2ViQ29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDMw
ICsrKysrKysrKysrKysrKwogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAg
ICAgICAgICAgICAgfCAgICA0ICstCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhO
U1Jlc29sdmVyLmNwcCAgICB8ICAgIDQgKy0KIFdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcCAgICAgICAgICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEN1c3RvbS5jcHAgICAgICB8ICAgIDIgKy0KIC4uLi9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwICAgIHwgICAgOCArKy0tCiBXZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAgICAgICAgICAgICB8ICAgIDQgKy0KIFdlYkNv
cmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgICAgIHwgICAgNCArLQog
V2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSAgICAgICAgICAgfCAgICA4
ICsrLS0KIFdlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCAgICAgICAgICAgICAgICAgICAg
IHwgICAxNiArKysrLS0tLQogV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbSAgICAg
ICAgICAgICAgICAgfCAgICA4ICsrLS0KIFdlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHwgICAxNCArKysrKysrCiBXZWJLaXQyL1dlYlByb2Nlc3MvUGx1
Z2lucy9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwICB8ICAgIDYgKy0KIDI1IGZpbGVzIGNoYW5nZWQs
IDE0NSBpbnNlcnRpb25zKCspLCA2NCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9KYXZhU2Ny
aXB0Q29yZS9DaGFuZ2VMb2cgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKaW5kZXggM2FjNTkx
NS4uNjE3NTc4YSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTEwLTE5ICBYYW4g
TG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTY5CisKKyAgICAgICAgTWFrZSBK
U0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm4gYSByZWZlcmVuY2UgYW5kIGFkYXB0Cisg
ICAgICAgIGNhbGxlcnMuIFRoaXMgdW5pZmllcyB0aGUgQVBJIHdpdGggdGhlIGV4aXN0aW5nCisg
ICAgICAgIENhbGxGcmFtZTo6Z2xvYmFsRGF0YSwgd2hpY2ggYWxzbyByZXR1cm5zIGEgcmVmZXJl
bmNlLgorCisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlNDOjpl
dmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJh
bWUuaDoKKyAgICAgICAgKiBpbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChK
U0M6OkludGVycHJldGVyOjpkdW1wUmVnaXN0ZXJzKToKKyAgICAgICAgKiBqc2MuY3BwOgorICAg
ICAgICAocnVuV2l0aFNjcmlwdHMpOgorICAgICAgICAqIHBhcnNlci9KU1BhcnNlci5jcHA6Cisg
ICAgICAgIChKU0M6OmpzUGFyc2UpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpQYXJzZXI6OnBhcnNlKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6Cisg
ICAgICAgIChKU0M6OlBhcnNlcjo6cGFyc2UpOgorICAgICAgICAqIHJ1bnRpbWUvRXJyb3IuY3Bw
OgorICAgICAgICAoSlNDOjpjcmVhdGVFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZUV2YWxF
cnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVJhbmdlRXJyb3IpOgorICAgICAgICAoSlNDOjpj
cmVhdGVSZWZlcmVuY2VFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVN5bnRheEVycm9yKToK
KyAgICAgICAgKEpTQzo6Y3JlYXRlVHlwZUVycm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlVVJJ
RXJyb3IpOgorICAgICAgICAqIHJ1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChKU0M6OmNvbnN0cnVjdEZ1bmN0aW9uKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVj
dCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjptYXJrQ2hpbGRyZW4pOgorICAgICAg
ICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6Omdsb2JhbERhdGEpOgorCiAyMDEwLTEwLTE5ICBLd2FuZyBZdWwgU2VvICA8c2t5dWxAY29t
cGFueTEwMC5uZXQ+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2aWQgS2lsemVyLgpkaWZmIC0t
Z2l0IGEvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCmluZGV4IDE3ZGZkZjcuLjI5YjZlYjIgMTAwNjQ0Ci0t
LSBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTEwNiw3ICsxMDYsNyBAQCBKU1ZhbHVlIGV2
YWx1YXRlSW5HbG9iYWxDYWxsRnJhbWUoY29uc3QgVVN0cmluZyYgc2NyaXB0LCBKU1ZhbHVlJiBl
eGNlcHRpb24sIEpTRwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIGVycm9yOwogCi0g
ICAgcmV0dXJuIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT5pbnRlcnByZXRlci0+ZXhlY3V0
ZShldmFsLmdldCgpLCBnbG9iYWxDYWxsRnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbEZy
YW1lLT5zY29wZUNoYWluKCksICZleGNlcHRpb24pOworICAgIHJldHVybiBnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+ZXhlY3V0ZShldmFsLmdldCgpLCBnbG9iYWxDYWxs
RnJhbWUsIGdsb2JhbE9iamVjdCwgZ2xvYmFsQ2FsbEZyYW1lLT5zY29wZUNoYWluKCksICZleGNl
cHRpb24pOwogfQogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIv
Q2FsbEZyYW1lLmgKaW5kZXggYmRlOTc4Ni4uNjdkZWIzOCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysrIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJw
cmV0ZXIvQ2FsbEZyYW1lLmgKQEAgLTYzLDkgKzYzLDYgQEAgbmFtZXNwYWNlIEpTQyAgewogICAg
ICAgICAgICAgcmV0dXJuIHNjb3BlQ2hhaW4oKS0+Z2xvYmFsVGhpczsKICAgICAgICAgfQogCi0g
ICAgICAgIC8vIEZJWE1FOiBFbHNld2hlcmUsIHdlIHVzZSBKU0dsb2JhbERhdGEqIHJhdGhlciB0
aGFuIEpTR2xvYmFsRGF0YSYuCi0gICAgICAgIC8vIFdlIHNob3VsZCBtYWtlIHRoaXMgbW9yZSB1
bmlmb3JtIGFuZCBlaXRoZXIgdXNlIGEgcmVmZXJlbmNlIGV2ZXJ5d2hlcmUKLSAgICAgICAgLy8g
b3IgYSBwb2ludGVyIGV2ZXJ5d2hlcmUuCiAgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSgpIGNvbnN0CiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChzY29wZUNoYWluKCktPmds
b2JhbERhdGEpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCmlu
ZGV4IDI4Nzc1NjUuLmJmOWJiNzMgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRl
cnByZXRlci5jcHAKQEAgLTQ0OCw3ICs0NDgsNyBAQCB2b2lkIEludGVycHJldGVyOjpkdW1wUmVn
aXN0ZXJzKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgIHByaW50ZigiLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS1cbiIpOwogCiAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSBjYWxsRnJhbWUtPmNvZGVC
bG9jaygpOwotICAgIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlID0gJmNhbGxGcmFtZS0+c2Nv
cGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+aW50ZXJwcmV0ZXItPnJlZ2lz
dGVyRmlsZSgpOworICAgIFJlZ2lzdGVyRmlsZSogcmVnaXN0ZXJGaWxlID0gJmNhbGxGcmFtZS0+
c2NvcGVDaGFpbigpLT5nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVn
aXN0ZXJGaWxlKCk7CiAgICAgY29uc3QgUmVnaXN0ZXIqIGl0OwogICAgIGNvbnN0IFJlZ2lzdGVy
KiBlbmQ7CiAgICAgSlNWYWx1ZSB2OwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvanNjLmNw
cCBiL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKaW5kZXggZDc1NmEwYy4uYmE1MDZlNCAxMDA2NDQK
LS0tIGEvSmF2YVNjcmlwdENvcmUvanNjLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9qc2MuY3Bw
CkBAIC0zNjgsNyArMzY4LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IKICAgICBpZiAoZHVt
cCkKICAgICAgICAgQnl0ZWNvZGVHZW5lcmF0b3I6OnNldER1bXBzR2VuZXJhdGVkQ29kZSh0cnVl
KTsKIAotICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpOwogCiAjaWYgRU5BQkxFKFNBTVBMSU5HX0ZMQUdTKQogICAgIFNhbXBsaW5nRmxh
Z3M6OnN0YXJ0KCk7CkBAIC0zODYsNyArMzg2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlw
dHMoR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFZlY3RvcjxTY3JpcHQ+JiBzY3IK
ICAgICAgICAgICAgIGZpbGVOYW1lID0gIltDb21tYW5kIExpbmVdIjsKICAgICAgICAgfQogCi0g
ICAgICAgIGdsb2JhbERhdGEtPnN0YXJ0U2FtcGxpbmcoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS5z
dGFydFNhbXBsaW5nKCk7CiAKICAgICAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9uID0gZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBtYWtlU291cmNlKHNjcmlwdCwgZmlsZU5hbWUpKTsKICAgICAgICAgc3VjY2VzcyA9
IHN1Y2Nlc3MgJiYgY29tcGxldGlvbi5jb21wbFR5cGUoKSAhPSBUaHJvdzsKQEAgLTM5NywxOSAr
Mzk3LDE5IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBjb25zdCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgICAgICAgICAgICAgcHJpbnRm
KCJFbmQ6ICVzXG4iLCBjb21wbGV0aW9uLnZhbHVlKCkudG9TdHJpbmcoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2xvYmFs
RGF0YS0+c3RvcFNhbXBsaW5nKCk7CisgICAgICAgIGdsb2JhbERhdGEuc3RvcFNhbXBsaW5nKCk7
CiAgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLT5jbGVhckV4Y2VwdGlvbigpOwog
ICAgIH0KIAogI2lmIEVOQUJMRShTQU1QTElOR19GTEFHUykKICAgICBTYW1wbGluZ0ZsYWdzOjpz
dG9wKCk7CiAjZW5kaWYKLSAgICBnbG9iYWxEYXRhLT5kdW1wU2FtcGxlRGF0YShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSk7CisgICAgZ2xvYmFsRGF0YS5kdW1wU2FtcGxlRGF0YShnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSk7CiAjaWYgRU5BQkxFKFNBTVBMSU5HX0NPVU5URVJTKQogICAg
IEFic3RyYWN0U2FtcGxpbmdDb3VudGVyOjpkdW1wKCk7CiAjZW5kaWYKICNpZiBFTkFCTEUoUkVH
RVhQX1RSQUNJTkcpCi0gICAgZ2xvYmFsRGF0YS0+ZHVtcFJlZ0V4cFRyYWNlKCk7CisgICAgZ2xv
YmFsRGF0YS5kdW1wUmVnRXhwVHJhY2UoKTsKICNlbmRpZgogICAgIHJldHVybiBzdWNjZXNzOwog
fQpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9KU1BhcnNlci5jcHAKaW5kZXggMDMzODIxMC4uNGI3ZmNiMiAxMDA2
NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcAorKysgYi9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCkBAIC00ODUsNyArNDg1LDcgQEAgcHJpdmF0ZToK
IAogaW50IGpzUGFyc2UoSlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEZ1bmN0
aW9uUGFyYW1ldGVycyogcGFyYW1ldGVycywgSlNQYXJzZXJTdHJpY3RuZXNzIHN0cmljdG5lc3Ms
IEpTUGFyc2VyTW9kZSBwYXJzZXJNb2RlLCBjb25zdCBTb3VyY2VDb2RlKiBzb3VyY2UpCiB7Ci0g
ICAgSlNQYXJzZXIgcGFyc2VyKGxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+bGV4
ZXIsIGxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgcGFyYW1ldGVycywgc3RyaWN0
bmVzcyA9PSBKU1BhcnNlU3RyaWN0LCBwYXJzZXJNb2RlID09IEpTUGFyc2VGdW5jdGlvbkNvZGUs
IHNvdXJjZS0+cHJvdmlkZXIoKSk7CisgICAgSlNQYXJzZXIgcGFyc2VyKGxleGljYWxHbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS5sZXhlciwgJmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKSwgcGFyYW1ldGVycywgc3RyaWN0bmVzcyA9PSBKU1BhcnNlU3RyaWN0LCBwYXJzZXJNb2Rl
ID09IEpTUGFyc2VGdW5jdGlvbkNvZGUsIHNvdXJjZS0+cHJvdmlkZXIoKSk7CiAgICAgcmV0dXJu
IHBhcnNlci5wYXJzZVByb2dyYW0obGV4aWNhbEdsb2JhbE9iamVjdCk7CiB9CiAKZGlmZiAtLWdp
dCBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKaW5kZXggYWQ4NWE3Yy4uYWZmNzlmNSAxMDA2NDQKLS0tIGEvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBQYXJzZXI6OnBhcnNlKEpTR2xvYmFsT2Jq
ZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmEKICAgICAq
ZXJyTGluZSA9IC0xOwogICAgICplcnJNc2cgPSBVU3RyaW5nKCk7CiAKLSAgICBMZXhlciYgbGV4
ZXIgPSAqbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT5sZXhlcjsKKyAgICBMZXhl
ciYgbGV4ZXIgPSAqbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmxleGVyOwogICAg
IGxleGVyLnNldENvZGUoKm1fc291cmNlLCBtX2FyZW5hKTsKIAogICAgIGludCBwYXJzZUVycm9y
ID0ganNQYXJzZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJhbWV0ZXJzLCBzdHJpY3RuZXNzLCBt
b2RlLCBtX3NvdXJjZSk7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmggYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggZjViYmNiOC4uNjU0OTA2
NyAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtODQsMTIgKzg0LDEyIEBAIG5hbWVzcGFjZSBK
U0MgewogCiAgICAgICAgIG1fc291cmNlID0gJnNvdXJjZTsKICAgICAgICAgaWYgKFBhcnNlZE5v
ZGU6OnNjb3BlSXNGdW5jdGlvbikKLSAgICAgICAgICAgIGxleGljYWxHbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS0+bGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CisgICAgICAgICAgICBsZXhpY2Fs
R2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkubGV4ZXItPnNldElzUmVwYXJzaW5nKCk7CiAgICAg
ICAgIHBhcnNlKGxleGljYWxHbG9iYWxPYmplY3QsIHBhcmFtZXRlcnMsIHN0cmljdG5lc3MsIFBh
cnNlZE5vZGU6OmlzRnVuY3Rpb25Ob2RlID8gSlNQYXJzZUZ1bmN0aW9uQ29kZSA6IEpTUGFyc2VQ
cm9ncmFtQ29kZSwgJmVyckxpbmUsICZlcnJNc2cpOwogCiAgICAgICAgIFJlZlB0cjxQYXJzZWRO
b2RlPiByZXN1bHQ7CiAgICAgICAgIGlmIChtX3NvdXJjZUVsZW1lbnRzKSB7Ci0gICAgICAgICAg
ICByZXN1bHQgPSBQYXJzZWROb2RlOjpjcmVhdGUobGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLAorICAgICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKCZsZXhpY2Fs
R2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksCiAgICAgICAgICAgICAgICAgbV9zb3VyY2VFbGVt
ZW50cywKICAgICAgICAgICAgICAgICBtX3ZhckRlY2xhcmF0aW9ucyA/ICZtX3ZhckRlY2xhcmF0
aW9ucy0+ZGF0YSA6IDAsCiAgICAgICAgICAgICAgICAgbV9mdW5jRGVjbGFyYXRpb25zID8gJm1f
ZnVuY0RlY2xhcmF0aW9ucy0+ZGF0YSA6IDAsCkBAIC0xMDgsNyArMTA4LDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgICAgICBpZiAoaXNGdW5jdGlvbkJvZHlOb2RlKHN0YXRpY19jYXN0PFBh
cnNlZE5vZGUqPigwKSkpCiAgICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGNyZWF0ZVN0YWNr
T3ZlcmZsb3dFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAqZXhjZXB0aW9uID0gYWRkRXJyb3JJbmZvKGxleGljYWxHbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKSwgY3JlYXRlU3ludGF4RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwg
ZXJyTXNnKSwgZXJyTGluZSwgc291cmNlKTsKKyAgICAgICAgICAgICAgICAqZXhjZXB0aW9uID0g
YWRkRXJyb3JJbmZvKCZsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGNyZWF0ZVN5
bnRheEVycm9yKGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNvdXJjZSk7
CiAgICAgICAgIH0KIAogICAgICAgICBtX2FyZW5hLnJlc2V0KCk7CmRpZmYgLS1naXQgYS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJy
b3IuY3BwCmluZGV4IGUzNTQyNGIuLjZiMjdkN2QgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXJyb3IuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3Bw
CkBAIC00NSw0MyArNDUsNDMgQEAgc3RhdGljIGNvbnN0IGNoYXIqIGV4cHJlc3Npb25FbmRPZmZz
ZXRQcm9wZXJ0eU5hbWUgPSAiZXhwcmVzc2lvbkVuZE9mZnNldCI7CiBKU09iamVjdCogY3JlYXRl
RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJ
bnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3Qt
PmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOworICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpj
cmVhdGUoJmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPmVycm9yU3Ry
dWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRlRXZhbEVycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAg
QVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNy
ZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5ldmFsRXJyb3JD
b25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gRXJy
b3JJbnN0YW5jZTo6Y3JlYXRlKCZnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2Jq
ZWN0LT5ldmFsRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsK
IH0KIAogSlNPYmplY3QqIGNyZWF0ZVJhbmdlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNF
bXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnJhbmdlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJv
clN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRl
KCZnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5yYW5nZUVycm9yQ29u
c3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKIEpTT2JqZWN0KiBj
cmVhdGVSZWZlcmVuY2VFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBV
U3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwotICAg
IHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCks
IGdsb2JhbE9iamVjdC0+cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVy
ZSgpLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKCZnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5yZWZlcmVuY2VFcnJvckNvbnN0cnVj
dG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRl
U3ludGF4RXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYg
bWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4g
RXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxP
YmplY3QtPnN5bnRheEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2Fn
ZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCksIGdsb2JhbE9iamVjdC0+c3ludGF4RXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0
cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVR5cGVFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewogICAg
IEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwotICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpj
cmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+dHlwZUVycm9y
Q29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdC0+dHlwZUVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7
CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVVUklFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0Vt
cHR5KCkpOwotICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+VVJJRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0
cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKCZn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5VUklFcnJvckNvbnN0cnVj
dG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRl
RXJyb3IoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBVU3RyaW5nJiBtZXNzYWdlKQpkaWZmIC0tZ2l0
IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcCBiL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKaW5kZXggOWI1OTcyMC4u
YmMyMTU4ZSAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9GdW5jdGlvbkNvbnN0
cnVjdG9yLmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCkBAIC05Nyw3ICs5Nyw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlvbihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpCiAgICAgfQog
CiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKTsKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKTsKICAgICBTb3VyY2VDb2RlIHNvdXJjZSA9IG1ha2VTb3VyY2UocHJvZ3Jh
bSwgc291cmNlVVJMLCBsaW5lTnVtYmVyKTsKICAgICBKU09iamVjdCogZXhjZXB0aW9uID0gMDsK
ICAgICBSZWZQdHI8RnVuY3Rpb25FeGVjdXRhYmxlPiBmdW5jdGlvbiA9IEZ1bmN0aW9uRXhlY3V0
YWJsZTo6ZnJvbUdsb2JhbENvZGUoZnVuY3Rpb25OYW1lLCBleGVjLCBleGVjLT5keW5hbWljR2xv
YmFsT2JqZWN0KCktPmRlYnVnZ2VyKCksIHNvdXJjZSwgJmV4Y2VwdGlvbik7CkBAIC0xMDYsNyAr
MTA2LDcgQEAgSlNPYmplY3QqIGNvbnN0cnVjdEZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQXJnTGlzdCYgYXJncywgY29uc3QgSWRlbnRpZmkKICAgICAgICAgcmV0dXJuIHRocm93RXJy
b3IoZXhlYywgZXhjZXB0aW9uKTsKICAgICB9CiAKLSAgICBTY29wZUNoYWluIHNjb3BlQ2hhaW4o
Z2xvYmFsT2JqZWN0LCBnbG9iYWxEYXRhLCBnbG9iYWxPYmplY3QsIGV4ZWMtPmdsb2JhbFRoaXNW
YWx1ZSgpKTsKKyAgICBTY29wZUNoYWluIHNjb3BlQ2hhaW4oZ2xvYmFsT2JqZWN0LCAmZ2xvYmFs
RGF0YSwgZ2xvYmFsT2JqZWN0LCBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKSk7CiAgICAgcmV0dXJu
IG5ldyAoZXhlYykgSlNGdW5jdGlvbihleGVjLCBmdW5jdGlvbiwgc2NvcGVDaGFpbi5ub2RlKCkp
OwogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDkw
M2U1NzMuLjdiMWViMDYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCkBAIC0xMTYsNyArMTE2LDcgQEAgSlNHbG9iYWxPYmplY3Q6On5KU0dsb2JhbE9iamVjdCgp
CiAgICAgZm9yIChIYXNoU2V0PEdsb2JhbENvZGVCbG9jayo+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IGNvZGVCbG9ja3MoKS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5j
bGVhckdsb2JhbE9iamVjdCgpOwogICAgICAgICAKLSAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVy
RmlsZSA9IGdsb2JhbERhdGEoKS0+aW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOworICAgIFJl
Z2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlID0gZ2xvYmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdp
c3RlckZpbGUoKTsKICAgICBpZiAocmVnaXN0ZXJGaWxlLmNsZWFyR2xvYmFsT2JqZWN0KHRoaXMp
KQogICAgICAgICByZWdpc3RlckZpbGUuc2V0TnVtR2xvYmFscygwKTsKICAgICBkKCktPmRlc3Ry
dWN0b3IoZCgpKTsKQEAgLTM0OSw5ICszNDksOSBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0OjptYXJr
Q2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiAgICAgZm9yIChIYXNoU2V0PEdsb2JhbENv
ZGVCbG9jayo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvZGVCbG9ja3MoKS5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpCiAgICAgICAgICgqaXQpLT5tYXJrQWdncmVnYXRlKG1hcmtTdGFjayk7CiAK
LSAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSA9IGdsb2JhbERhdGEoKS0+aW50ZXJwcmV0
ZXItPnJlZ2lzdGVyRmlsZSgpOworICAgIFJlZ2lzdGVyRmlsZSYgcmVnaXN0ZXJGaWxlID0gZ2xv
YmFsRGF0YSgpLmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKICAgICBpZiAocmVnaXN0ZXJG
aWxlLmdsb2JhbE9iamVjdCgpID09IHRoaXMpCi0gICAgICAgIHJlZ2lzdGVyRmlsZS5tYXJrR2xv
YmFscyhtYXJrU3RhY2ssICZnbG9iYWxEYXRhKCktPmhlYXApOworICAgICAgICByZWdpc3RlckZp
bGUubWFya0dsb2JhbHMobWFya1N0YWNrLCAmZ2xvYmFsRGF0YSgpLmhlYXApOwogCiAgICAgbWFy
a0lmTmVlZGVkKG1hcmtTdGFjaywgZCgpLT5yZWdFeHBDb25zdHJ1Y3Rvcik7CiAgICAgbWFya0lm
TmVlZGVkKG1hcmtTdGFjaywgZCgpLT5lcnJvckNvbnN0cnVjdG9yKTsKZGlmZiAtLWdpdCBhL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCAzNmZhNzBiLi45M2ExYjg4IDEwMDY0NAotLS0g
YS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBAIC0yNzYsNyArMjc2LDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIAogICAgICAgICB2b2lkIHJlc2V0UHJvdG90eXBlKEpTVmFsdWUg
cHJvdG90eXBlKTsKIAotICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEoKSB7IHJldHVy
biBkKCktPmdsb2JhbERhdGEuZ2V0KCk7IH0KKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxE
YXRhKCkgeyByZXR1cm4gKmQoKS0+Z2xvYmFsRGF0YS5nZXQoKTsgfQogICAgICAgICBKU0dsb2Jh
bE9iamVjdERhdGEqIGQoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxKU0dsb2JhbE9iamVj
dERhdGEqPihKU1ZhcmlhYmxlT2JqZWN0OjpkKTsgfQogCiAgICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFN0cnVjdHVyZT4gY3JlYXRlU3RydWN0dXJlKEpTVmFsdWUgcHJvdG90eXBlKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA2ZmRkMzcy
Li40Y2VmYjk4IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEwLTEwLTE5ICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTQ3OTY5CisKKyAgICAgICAgQWRhcHQgY29kZSB0byBKU0dsb2Jh
bE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZlcmVuY2UKKyAgICAgICAgaW5zdGVh
ZCBvZiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2FsbGJhY2spOgor
ICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29rdXBOYW1lc3BhY2VVUkkp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNXb3Jr
ZXJDb250ZXh0OjptYXJrQ2hpbGRyZW4pOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1dvcmtlckNvbnRl
eHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TY2hl
ZHVsZWRBY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NoZWR1bGVkQWN0aW9uOjpleGVj
dXRlRnVuY3Rpb25JbkNvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtlclNjcmlw
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0Q29udHJvbGxl
cjo6ZXZhbHVhdGUpOgorICAgICAgICAqIGJyaWRnZS9OUF9qc29iamVjdC5jcHA6CisgICAgICAg
IChfTlBOX0ludm9rZURlZmF1bHQpOgorICAgICAgICAoX05QTl9JbnZva2UpOgorICAgICAgICAo
X05QTl9FdmFsdWF0ZSk6CisgICAgICAgIChfTlBOX0NvbnN0cnVjdCk6CisKIDIwMTAtMTAtMjAg
IFNoaW5pY2hpcm8gSGFtYWppICA8aGFtYWppQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBLZW50IFRhbXVyYS4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
YWxsYmFja0RhdGEuY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0YS5jcHAK
aW5kZXggNmIxOTYzOS4uZjM5YzUzYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0NhbGxiYWNrRGF0YS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbGxiYWNrRGF0
YS5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgSlNWYWx1ZSBKU0NhbGxiYWNrRGF0YTo6aW52b2tlQ2Fs
bGJhY2soTWFya2VkQXJndW1lbnRCdWZmZXImIGFyZ3MsIGJvb2wqIHJhaXNlZEUKICAgICAgICAg
ZnVuY3Rpb24gPSBjYWxsYmFjaygpOwogICAgIH0KICAgICAKLSAgICBnbG9iYWxPYmplY3QoKS0+
Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIGdsb2JhbE9iamVjdCgp
LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjb250ZXh0ID0gZ2xvYmFsT2JqZWN0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKTsKICAgICAvLyBXZSB3aWxsIGZhaWwgdG8gZ2V0IHRoZSBjb250ZXh0IGlmIHRoZSBmcmFt
ZSBoYXMgYmVlbiBkZXRhY2hlZC4KICAgICBpZiAoIWNvbnRleHQpCkBAIC02OCw3ICs2OCw3IEBA
IEpTVmFsdWUgSlNDYWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKE1hcmtlZEFyZ3VtZW50QnVm
ZmVyJiBhcmdzLCBib29sKiByYWlzZWRFCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjb250ZXh0LT5p
c0RvY3VtZW50KCkgCiAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxiYWNrKCksIGFyZ3MpCiAgICAgICAg
IDogSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIGNhbGxiYWNr
KCksIGFyZ3MpOwotICAgIGdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVj
a2VyLnN0b3AoKTsKKyAgICBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVj
a2VyLnN0b3AoKTsKIAogICAgIERvY3VtZW50Ojp1cGRhdGVTdHlsZUZvckFsbERvY3VtZW50cygp
OwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3Bw
CmluZGV4IDM3ZjI1MTIuLmU4ZTEzNjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwCkBAIC04OSw5ICs4OSw5IEBAIFN0cmluZyBKU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlcjo6bG9va3VwTmFtZXNwYWNlVVJJKGNvbnN0IFN0cmluZyYgcHJlZml4
KQogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ3M7CiAgICAgYXJncy5hcHBlbmQoanNTdHJp
bmcoZXhlYywgcHJlZml4KSk7CiAKLSAgICBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50
aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCku
dGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBKU1ZhbHVlIHJldHZhbCA9IEpTQzo6Y2FsbChl
eGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2N1c3RvbVJlc29sdmVyLCBhcmdz
KTsKLSAgICBtX2dsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CisgICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CiAKICAgICBTdHJpbmcgcmVzdWx0OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcCBiL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAppbmRleCBjZWVkNDQ1Li41NjA0
Mzc0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAK
KysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCkBAIC0xMDgsMTAg
KzEwOCwxMCBAQCB2b2lkIEpTRXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9uQ29udGV4dAogICAgICAgICBFdmVudCogc2F2ZWRF
dmVudCA9IGdsb2JhbE9iamVjdC0+Y3VycmVudEV2ZW50KCk7CiAgICAgICAgIGdsb2JhbE9iamVj
dC0+c2V0Q3VycmVudEV2ZW50KGV2ZW50KTsKIAotICAgICAgICBKU0dsb2JhbERhdGEqIGdsb2Jh
bERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKLSAgICAgICAgRHluYW1pY0dsb2Jh
bE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4ZWMsIGdsb2JhbERhdGEtPmR5bmFtaWNH
bG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2Jq
ZWN0KTsKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCk7CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmpl
Y3RTY29wZShleGVjLCBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRh
LmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOwogCi0gICAgICAgIGdsb2JhbERh
dGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENo
ZWNrZXIuc3RhcnQoKTsKICAgICAgICAgSlNWYWx1ZSByZXR2YWw7CiAgICAgICAgIGlmIChoYW5k
bGVFdmVudEZ1bmN0aW9uKSB7CiAgICAgICAgICAgICByZXR2YWwgPSBzY3JpcHRFeGVjdXRpb25D
b250ZXh0LT5pc0RvY3VtZW50KCkKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lkIEpTRXZlbnRMaXN0
ZW5lcjo6aGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dAogICAgICAgICAgICAgICAgID8gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgY3VycmVudFRhcmdldCwgYXJncykK
ICAgICAgICAgICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwg
Y2FsbERhdGEsIGN1cnJlbnRUYXJnZXQsIGFyZ3MpOwogICAgICAgICB9Ci0gICAgICAgIGdsb2Jh
bERhdGEtPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0
Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50RXZlbnQo
c2F2ZWRFdmVudCk7CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJD
b250ZXh0Q3VzdG9tLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3Vz
dG9tLmNwcAppbmRleCBiODg4NWNmLi5iZTQ3YjE2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCkBAIC01Nyw3ICs1Nyw3IEBAIHZvaWQgSlNXb3Jr
ZXJDb250ZXh0OjptYXJrQ2hpbGRyZW4oTWFya1N0YWNrJiBtYXJrU3RhY2spCiB7CiAgICAgQmFz
ZTo6bWFya0NoaWxkcmVuKG1hcmtTdGFjayk7CiAKLSAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSAqdGhpcy0+Z2xvYmFsRGF0YSgpOworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9
IHRoaXMtPmdsb2JhbERhdGEoKTsKIAogICAgIG1hcmtBY3RpdmVPYmplY3RzRm9yQ29udGV4dCht
YXJrU3RhY2ssIGdsb2JhbERhdGEsIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNw
cCBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcApp
bmRleCBhZDNmNWVjLi44NWZjNDk2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCkBAIC04OCwxNCArODgsMTQgQEAgdm9pZCBK
U1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWMKICAgICAgICAgYXJncy5hcHBlbmQoanNTdHJpbmcoZXhlYywgZXJy
b3JFdmVudC0+ZmlsZW5hbWUoKSkpOwogICAgICAgICBhcmdzLmFwcGVuZChqc051bWJlcihleGVj
LCBlcnJvckV2ZW50LT5saW5lbm8oKSkpOwogCi0gICAgICAgIEpTR2xvYmFsRGF0YSogZ2xvYmFs
RGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOwotICAgICAgICBEeW5hbWljR2xvYmFs
T2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xvYmFsRGF0YS0+ZHluYW1pY0ds
b2JhbE9iamVjdCA/IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmpl
Y3QpOyAgICAKKyAgICAgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0
LT5nbG9iYWxEYXRhKCk7CisgICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxP
YmplY3RTY29wZShleGVjLCBnbG9iYWxEYXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxE
YXRhLmR5bmFtaWNHbG9iYWxPYmplY3QgOiBnbG9iYWxPYmplY3QpOwogCiAgICAgICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZ2xvYmFsT2JqZWN0LT50b1RoaXNPYmplY3QoZXhlYyk7CiAKLSAgICAg
ICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xvYmFsRGF0
YS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJldHVyblZhbHVlID0g
SlNDOjpjYWxsKGV4ZWMsIGpzRnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVl
LCBhcmdzKTsKLSAgICAgICAgZ2xvYmFsRGF0YS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAg
ICAgICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgICAgICBnbG9iYWxP
YmplY3QtPnNldEN1cnJlbnRFdmVudChzYXZlZEV2ZW50KTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9T
Y2hlZHVsZWRBY3Rpb24uY3BwCmluZGV4IGE5ZGM2YTguLmQ2ZjhhMzggMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAorKysgYi9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKQEAgLTEwMSwxMiArMTAxLDEyIEBAIHZvaWQgU2No
ZWR1bGVkQWN0aW9uOjpleGVjdXRlRnVuY3Rpb25JbkNvbnRleHQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCiAg
ICAgICAgIGFyZ3MuYXBwZW5kKG1fYXJnc1tpXSk7CiAKLSAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIGlmIChjb250ZXh0LT5pc0RvY3Vt
ZW50KCkpCiAgICAgICAgIEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBtX2Z1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7CiAgICAgZWxzZQogICAg
ICAgICBKU0M6OmNhbGwoZXhlYywgbV9mdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlz
VmFsdWUsIGFyZ3MpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNr
ZXIuc3RvcCgpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXBv
cnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCBiL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2Vy
U2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggNmZmOGE2OS4uNTg3MmIyZSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcAorKysgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCkBAIC0xMjQsOSArMTI0
LDkgQEAgU2NyaXB0VmFsdWUgV29ya2VyU2NyaXB0Q29udHJvbGxlcjo6ZXZhbHVhdGUoY29uc3Qg
U2NyaXB0U291cmNlQ29kZSYgc291cmNlQ29kZSwKICAgICBKU0xvY2sgbG9jayhTaWxlbmNlQXNz
ZXJ0aW9uc09ubHkpOwogCiAgICAgRXhlY1N0YXRlKiBleGVjID0gbV93b3JrZXJDb250ZXh0V3Jh
cHBlci0+Z2xvYmFsRXhlYygpOwotICAgIG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbERh
dGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVy
LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBDb21wbGV0aW9uIGNv
bXAgPSBKU0M6OmV2YWx1YXRlKGV4ZWMsIGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKS0+Z2xv
YmFsU2NvcGVDaGFpbigpLCBzb3VyY2VDb2RlLmpzU291cmNlQ29kZSgpLCBtX3dvcmtlckNvbnRl
eHRXcmFwcGVyKTsKLSAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxEYXRhKCktPnRp
bWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBtX3dvcmtlckNvbnRleHRXcmFwcGVyLT5nbG9iYWxE
YXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgaWYgKGNvbXAuY29tcGxUeXBlKCkg
PT0gTm9ybWFsIHx8IGNvbXAuY29tcGxUeXBlKCkgPT0gUmV0dXJuVmFsdWUpCiAgICAgICAgIHJl
dHVybiBjb21wLnZhbHVlKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL29iamMvV2Vi
U2NyaXB0T2JqZWN0Lm1tIGIvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5t
bQppbmRleCBhMjZjMzE1Li42YmY3YWZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL29i
amMvV2ViU2NyaXB0T2JqZWN0Lm1tCisrKyBiL1dlYkNvcmUvYmluZGluZ3Mvb2JqYy9XZWJTY3Jp
cHRPYmplY3QubW0KQEAgLTMwNCw5ICszMDQsOSBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5T
QXJyYXkoRXhlY1N0YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAog
ICAgIGlmICghW3NlbGYgX2lzU2FmZVNjcmlwdF0pCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAg
ICBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCktPnRpbWVv
dXRDaGVja2VyLnN0YXJ0KCk7CisgICAgW3NlbGYgX3Jvb3RPYmplY3RdLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgSlNWYWx1ZSByZXN1
bHQgPSBKU01haW5UaHJlYWRFeGVjU3RhdGU6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgW3NlbGYgX2ltcF0sIGFyZ0xpc3QpOwotICAgIFtzZWxmIF9yb290T2JqZWN0
XS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOwor
ICAgIFtzZWxmIF9yb290T2JqZWN0XS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS50aW1l
b3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKICAg
ICAgICAgYWRkRXhjZXB0aW9uVG9Db25zb2xlKGV4ZWMpOwpAQCAtMzMzLDkgKzMzMyw5IEBAIHN0
YXRpYyB2b2lkIGdldExpc3RGcm9tTlNBcnJheShFeGVjU3RhdGUgKmV4ZWMsIE5TQXJyYXkgKmFy
cmF5LCBSb290T2JqZWN0KiByb290CiAgICAgSlNWYWx1ZSByZXN1bHQ7CiAgICAgSlNMb2NrIGxv
Y2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKICAgICAKLSAgICBbc2VsZiBfcm9vdE9iamVjdF0t
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Cisg
ICAgW3NlbGYgX3Jvb3RPYmplY3RdLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVv
dXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgQ29tcGxldGlvbiBjb21wbGV0aW9uID0gSlNNYWluVGhy
ZWFkRXhlY1N0YXRlOjpldmFsdWF0ZShbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxFeGVjKCksIFtzZWxmIF9yb290T2JqZWN0XS0+Z2xvYmFsT2JqZWN0KCktPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShTdHJpbmcoc2NyaXB0KSksIEpTQzo6SlNWYWx1ZSgp
KTsKLSAgICBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkt
PnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9i
amVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgIENvbXBsVHlw
ZSB0eXBlID0gY29tcGxldGlvbi5jb21wbFR5cGUoKTsKICAgICAKICAgICBpZiAodHlwZSA9PSBO
b3JtYWwpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcCBiL1dl
YkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcAppbmRleCAxNzI3MGViLi4wNzgwYWQ3IDEwMDY0
NAotLS0gYS9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKKysrIGIvV2ViQ29yZS9icmlk
Z2UvTlBfanNvYmplY3QuY3BwCkBAIC0xOTAsOSArMTkwLDkgQEAgYm9vbCBfTlBOX0ludm9rZURl
ZmF1bHQoTlBQLCBOUE9iamVjdCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBh
cmdDb3UKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0
TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJn
TGlzdCk7CiAgICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0
ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJl
c3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgZnVu
Y3Rpb24sIGFyZ0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGlt
ZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50
aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgLy8gQ29udmVydCBhbmQgcmV0dXJuIHRo
ZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBW
YXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CkBAIC0yNDAsOSArMjQwLDkgQEAgYm9vbCBf
TlBOX0ludm9rZShOUFAgbnBwLCBOUE9iamVjdCogbywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUs
IGNvbnN0IE5QVmFyaWFudCoKICAgICAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsK
ICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9v
dE9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4g
Z2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBn
bG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAg
ICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgb2JqLT5pbXAsIGFyZ0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICAgICAgLy8gQ29udmVydCBh
bmQgcmV0dXJuIHRoZSByZXN1bHQgb2YgdGhlIGZ1bmN0aW9uIGNhbGwuCiAgICAgICAgIGNvbnZl
cnRWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIHJlc3VsdFYsIHJlc3VsdCk7CkBAIC0yNzQsOSArMjc0
LDkgQEAgYm9vbCBfTlBOX0V2YWx1YXRlKE5QUCBpbnN0YW5jZSwgTlBPYmplY3QqIG8sIE5QU3Ry
aW5nKiBzLCBOUFZhcmlhbnQqIHZhcmlhbnQpCiAgICAgICAgIEpTTG9jayBsb2NrKFNpbGVuY2VB
c3NlcnRpb25zT25seSk7CiAgICAgICAgIFN0cmluZyBzY3JpcHRTdHJpbmcgPSBjb252ZXJ0TlBT
dHJpbmdUb1VURjE2KHMpOwogICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGds
b2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xv
YmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAg
Q29tcGxldGlvbiBjb21wbGV0aW9uID0gSlNDOjpldmFsdWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uoc2Ny
aXB0U3RyaW5nKSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgICAgIENvbXBsVHlwZSB0eXBl
ID0gY29tcGxldGlvbi5jb21wbFR5cGUoKTsKICAgICAgICAgCiAgICAgICAgIEpTVmFsdWUgcmVz
dWx0OwpAQCAtNTE0LDkgKzUxNCw5IEBAIGJvb2wgX05QTl9Db25zdHJ1Y3QoTlBQLCBOUE9iamVj
dCogbywgY29uc3QgTlBWYXJpYW50KiBhcmdzLCB1aW50MzJfdCBhcmdDb3VudCwKICAgICAgICAg
TWFya2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICAgICAgZ2V0TGlzdEZyb21WYXJpYW50
QXJncyhleGVjLCBhcmdzLCBhcmdDb3VudCwgcm9vdE9iamVjdCwgYXJnTGlzdCk7CiAgICAgICAg
IFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2JqZWN0ID0gcm9vdE9iamVjdC0+
Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOworICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50
aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgICAgICBKU1ZhbHVlIHJlc3VsdFYgPSBKU0M6OmNv
bnN0cnVjdChleGVjLCBjb25zdHJ1Y3RvciwgY29uc3RydWN0VHlwZSwgY29uc3RydWN0RGF0YSwg
YXJnTGlzdCk7Ci0gICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hl
Y2tlci5zdG9wKCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRD
aGVja2VyLnN0b3AoKTsKICAgICAgICAgCiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0
aGUgcmVzdWx0LgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRW
LCByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5t
bSBiL1dlYkNvcmUvYnJpZGdlL2puaS9qbmlfanNvYmplY3QubW0KaW5kZXggZDdkM2E1NC4uZjhl
YzFjNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5tbQorKysg
Yi9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tCkBAIC0yOTYsOSArMjk2LDkgQEAg
am9iamVjdCBKYXZhSlNPYmplY3Q6OmNhbGwoanN0cmluZyBtZXRob2ROYW1lLCBqb2JqZWN0QXJy
YXkgYXJncykgY29uc3QKICAgICAvLyBDYWxsIHRoZSBmdW5jdGlvbiBvYmplY3QuCiAgICAgTWFy
a2VkQXJndW1lbnRCdWZmZXIgYXJnTGlzdDsKICAgICBnZXRMaXN0RnJvbUpBcnJheShleGVjLCBh
cmdzLCBhcmdMaXN0KTsKLSAgICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0
YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBKU1ZhbHVlIHJl
c3VsdCA9IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBfaW1w
LCBhcmdMaXN0KTsKLSAgICByb290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgp
LT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisgICAgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCkt
Pmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICByZXR1cm4gY29udmVy
dFZhbHVlVG9KT2JqZWN0KHJlc3VsdCk7CiB9CkBAIC0zMTUsOSArMzE1LDkgQEAgam9iamVjdCBK
YXZhSlNPYmplY3Q6OmV2YWwoanN0cmluZyBzY3JpcHQpIGNvbnN0CiAgICAgaWYgKCFyb290T2Jq
ZWN0KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgp
LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAgcm9vdE9iamVjdC0+
Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAg
IENvbXBsZXRpb24gY29tcGxldGlvbiA9IEpTQzo6ZXZhbHVhdGUocm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2Jh
bFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShKYXZhU3RyaW5nKHNjcmlwdCkpLCBKU0M6OkpTVmFs
dWUoKSk7Ci0gICAgcm9vdE9iamVjdC0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS0+dGlt
ZW91dENoZWNrZXIuc3RvcCgpOworICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogICAgIENvbXBsVHlwZSB0eXBlID0gY29t
cGxldGlvbi5jb21wbFR5cGUoKTsKICAgICAKICAgICBpZiAodHlwZSA9PSBOb3JtYWwpIHsKZGlm
ZiAtLWdpdCBhL1dlYktpdDIvQ2hhbmdlTG9nIGIvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzdl
ODg0ZC4uYTY5NjZkYiAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0xMC0yMCAgWGFuIExvcGV6ICA8eGxv
cGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVW5pZnkgZ2xvYmFsRGF0YSBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzk2OQorCisgICAgICAgIEFkYXB0IGNvZGUgdG8gSlNH
bG9iYWxPYmplY3Q6Omdsb2JhbERhdGEgcmV0dXJuaW5nIGEgcmVmZXJlbmNlCisgICAgICAgIGlu
c3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9QbHVnaW5zL05QUnVu
dGltZU9iamVjdE1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1hcDo6
Z2V0T3JDcmVhdGVKU09iamVjdCk6CisgICAgICAgIChXZWJLaXQ6Ok5QUnVudGltZU9iamVjdE1h
cDo6ZXZhbHVhdGUpOgorCiAyMDEwLTEwLTE5ICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KZGlmZiAtLWdpdCBh
L1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05QUnVudGltZU9iamVjdE1hcC5jcHAgYi9XZWJL
aXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCmluZGV4IGUwZmFh
NWIuLmEzOWJhYWUgMTAwNjQ0Ci0tLSBhL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05QUnVu
dGltZU9iamVjdE1hcC5jcHAKKysrIGIvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTlBSdW50
aW1lT2JqZWN0TWFwLmNwcApAQCAtOTYsNyArOTYsNyBAQCBKU09iamVjdCogTlBSdW50aW1lT2Jq
ZWN0TWFwOjpnZXRPckNyZWF0ZUpTT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
CiAgICAgaWYgKEpTTlBPYmplY3QqIGpzTlBPYmplY3QgPSBtX2pzTlBPYmplY3RzLmdldChucE9i
amVjdCkpCiAgICAgICAgIHJldHVybiBqc05QT2JqZWN0OwogCi0gICAgSlNOUE9iamVjdCoganNO
UE9iamVjdCA9IG5ldyAoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpIEpTTlBPYmplY3QoZ2xv
YmFsT2JqZWN0LCB0aGlzLCBucE9iamVjdCk7CisgICAgSlNOUE9iamVjdCoganNOUE9iamVjdCA9
IG5ldyAoJmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpKSBKU05QT2JqZWN0KGdsb2JhbE9iamVj
dCwgdGhpcywgbnBPYmplY3QpOwogICAgIG1fanNOUE9iamVjdHMuc2V0KG5wT2JqZWN0LCBqc05Q
T2JqZWN0KTsKIAogICAgIHJldHVybiBqc05QT2JqZWN0OwpAQCAtMTk1LDkgKzE5NSw5IEBAIGJv
b2wgTlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZShOUE9iamVjdCogbnBPYmplY3QsIGNvbnN0
IFN0cmluZyZzY3JpcHRTdHJpbmcsCiAgICAgSlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNP
bmx5KTsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdldE9yQ3JlYXRlSlNPYmplY3QoZ2xvYmFs
T2JqZWN0LCBucE9iamVjdCk7CiAKLSAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGlt
ZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOwogICAgIENvbXBsZXRpb24gY29tcGxldGlvbiA9IEpTQzo6ZXZh
bHVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2Uo
VVN0cmluZyhzY3JpcHRTdHJpbmcuaW1wbCgpKSksIHRoaXNWYWx1ZSk7Ci0gICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBDb21wbFR5cGUg
Y29tcGxldGlvblR5cGUgPSBjb21wbGV0aW9uLmNvbXBsVHlwZSgpOwogCi0tIAoxLjcuMi4zCgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71280</attachid>
            <date>2010-10-20 06:12:22 -0700</date>
            <delta_ts>2010-10-23 17:15:36 -0700</delta_ts>
            <desc>globaldata.diff</desc>
            <filename>globaldata.diff</filename>
            <type>text/plain</type>
            <size>41512</size>
            <attacher name="Xan Lopez">xan.lopez</attacher>
            
              <data encoding="base64">RnJvbSA5NjQyYTEwMzdkMWM4NWQ0NzhlZGI0YWExMzcyYTFlZDdjMDE4NjQxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBYYW4gTG9wZXogPHhsb3BlekBpZ2FsaWEuY29tPgpEYXRlOiBX
ZWQsIDIwIE9jdCAyMDEwIDEwOjUwOjIzICswOTAwClN1YmplY3Q6IFtQQVRDSF0gMjAxMC0xMC0x
OSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAgTWFrZSBK
U0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm4gYSByZWZlcmVuY2UgYW5kIGFkYXB0CiAg
ICAgICAgY2FsbGVycy4gVGhpcyB1bmlmaWVzIHRoZSBBUEkgd2l0aCB0aGUgZXhpc3RpbmcKICAg
ICAgICBDYWxsRnJhbWU6Omdsb2JhbERhdGEsIHdoaWNoIGFsc28gcmV0dXJucyBhIHJlZmVyZW5j
ZS4KCiAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHA6CiAgICAgICAgKEpTQzo6ZXZhbHVh
dGVJbkdsb2JhbENhbGxGcmFtZSk6CiAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJhbWUuaDoK
ICAgICAgICAqIGludGVycHJldGVyL0ludGVycHJldGVyLmNwcDoKICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6CiAgICAgICAgKiBqc2MuY3BwOgogICAgICAgIChydW5X
aXRoU2NyaXB0cyk6CiAgICAgICAgKiBwYXJzZXIvSlNQYXJzZXIuY3BwOgogICAgICAgIChKU0M6
OmpzUGFyc2UpOgogICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CiAgICAgICAgKEpTQzo6UGFy
c2VyOjpwYXJzZSk6CiAgICAgICAgKiBydW50aW1lL0Vycm9yLmNwcDoKICAgICAgICAoSlNDOjpj
cmVhdGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlRXZhbEVycm9yKToKICAgICAgICAoSlND
OjpjcmVhdGVSYW5nZUVycm9yKToKICAgICAgICAoSlNDOjpjcmVhdGVSZWZlcmVuY2VFcnJvcik6
CiAgICAgICAgKEpTQzo6Y3JlYXRlU3ludGF4RXJyb3IpOgogICAgICAgIChKU0M6OmNyZWF0ZVR5
cGVFcnJvcik6CiAgICAgICAgKEpTQzo6Y3JlYXRlVVJJRXJyb3IpOgogICAgICAgICogcnVudGlt
ZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcDoKICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlv
bik6CiAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKICAgICAgICAoSlNDOjpK
U0dsb2JhbE9iamVjdDo6fkpTR2xvYmFsT2JqZWN0KToKICAgICAgICAoSlNDOjpKU0dsb2JhbE9i
amVjdDo6bWFya0NoaWxkcmVuKToKICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
ICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSk6CgpXZWJDb3JlOgoKMjAx
MC0xMC0xOSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0NhbGxiYWNrRGF0YS5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ2FsbGJhY2tEYXRhOjpp
bnZva2VDYWxsYmFjayk6CiAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNv
bHZlci5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyOjpsb29r
dXBOYW1lc3BhY2VVUkkpOgogICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNw
cDoKICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudCk6CiAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgogICAgICAgIChXZWJD
b3JlOjpKU1dvcmtlckNvbnRleHQ6Om1hcmtDaGlsZHJlbik6CiAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpKU1dv
cmtlckNvbnRleHRFcnJvckhhbmRsZXI6OmhhbmRsZUV2ZW50KToKICAgICAgICAqIGJpbmRpbmdz
L2pzL1NjaGVkdWxlZEFjdGlvbi5jcHA6CiAgICAgICAgKFdlYkNvcmU6OlNjaGVkdWxlZEFjdGlv
bjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKICAgICAgICAqIGJpbmRpbmdzL2pzL1dvcmtl
clNjcmlwdENvbnRyb2xsZXIuY3BwOgogICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHRDb250
cm9sbGVyOjpldmFsdWF0ZSk6CiAgICAgICAgKiBicmlkZ2UvTlBfanNvYmplY3QuY3BwOgogICAg
ICAgIChfTlBOX0ludm9rZURlZmF1bHQpOgogICAgICAgIChfTlBOX0ludm9rZSk6CiAgICAgICAg
KF9OUE5fRXZhbHVhdGUpOgogICAgICAgIChfTlBOX0NvbnN0cnVjdCk6CgpXZWJLaXQyOgoKMjAx
MC0xMC0yMCAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CgogICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDc5NjkKCiAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKICAgICAgICBpbnN0ZWFkIG9mIGEgcG9pbnRlci4KCiAgICAgICAgKiBXZWJQcm9jZXNz
L1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKICAgICAgICAoV2ViS2l0OjpOUFJ1bnRp
bWVPYmplY3RNYXA6OmdldE9yQ3JlYXRlSlNPYmplY3QpOgogICAgICAgIChXZWJLaXQ6Ok5QUnVu
dGltZU9iamVjdE1hcDo6ZXZhbHVhdGUpOgoKV2ViS2l0L21hYzoKCjIwMTAtMTAtMjAgIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KCiAgICAgICAgVW5pZnkgZ2xvYmFsRGF0YSBBUElzCiAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTY5CgogICAgICAgICogUGx1Z2lucy9Ib3N0
ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgogICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUpOgogICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6aW52b2tlKToKICAgICAgICAoV2ViS2l0OjpOZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHk6Omludm9rZURlZmF1bHQpOgogICAgICAgIChXZWJLaXQ6Ok5l
dHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y29uc3RydWN0KToKICAgICAgICAqIFdlYlZpZXcv
V2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbToKICAgICAgICAoLVtXZWJTY3JpcHRDYWxsRnJhbWUg
ZXZhbHVhdGVXZWJTY3JpcHQ6XSk6Ci0tLQogSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDQwICsrKysrKysrKysrKysrKysrKysrCiBKYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAgICAgICAgICAgICAgICB8ICAgIDIgKy0KIEph
dmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oICAgICAgICAgICAgIHwgICAgMyAt
CiBKYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAgICAgICAgICB8ICAg
IDIgKy0KIEphdmFTY3JpcHRDb3JlL2pzYy5jcHAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHwgICAxMCArKy0tCiBKYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwICAgICAgICAg
ICAgICAgICB8ICAgIDIgKy0KIEphdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwICAgICAg
ICAgICAgICAgICAgIHwgICAgMiArLQogSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oICAg
ICAgICAgICAgICAgICAgICAgfCAgICA2ICstCiBKYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmNwcCAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrLS0tCiBKYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0Z1bmN0aW9uQ29uc3RydWN0b3IuY3BwICAgICB8ICAgIDQgKy0KIEphdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwICAgICAgICAgIHwgICAgNiArLQogSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oICAgICAgICAgICAgfCAgICAyICstCiBXZWJD
b3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMzAgKysr
KysrKysrKysrKysrCiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcCAgICAg
ICAgICAgICB8ICAgIDQgKy0KIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwICAgIHwgICAgNCArLQogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVu
ZXIuY3BwICAgICAgICAgICAgfCAgICA4ICsrLS0KIFdlYkNvcmUvYmluZGluZ3MvanMvSlNXb3Jr
ZXJDb250ZXh0Q3VzdG9tLmNwcCAgICAgIHwgICAgMiArLQogLi4uL2JpbmRpbmdzL2pzL0pTV29y
a2VyQ29udGV4dEVycm9ySGFuZGxlci5jcHAgICAgfCAgICA4ICsrLS0KIFdlYkNvcmUvYmluZGlu
Z3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCAgICAgICAgICAgIHwgICAgNCArLQogV2ViQ29yZS9i
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcCAgICAgfCAgICA0ICstCiBXZWJD
b3JlL2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tICAgICAgICAgICB8ICAgIDggKyst
LQogV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3QuY3BwICAgICAgICAgICAgICAgICAgICAgfCAg
IDE2ICsrKystLS0tCiBXZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0Lm1tICAgICAgICAg
ICAgICAgICB8ICAgIDggKystLQogV2ViS2l0L21hYy9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfCAgIDE1ICsrKysrKysKIC4uLi9QbHVnaW5zL0hvc3RlZC9OZXRzY2Fw
ZVBsdWdpbkluc3RhbmNlUHJveHkubW0gIHwgICAxNiArKysrLS0tLQogV2ViS2l0L21hYy9XZWJW
aWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gICAgICAgfCAgICAyICstCiBXZWJLaXQyL0No
YW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMTQgKysrKysrKwog
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcCAgfCAgICA2
ICstCiAyOCBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgNzMgZGVsZXRpb25zKC0p
CgpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvSmF2YVNjcmlwdENvcmUv
Q2hhbmdlTG9nCmluZGV4IDNhYzU5MTUuLjYxNzU3OGEgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZworKysgYi9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0
MyBAQAorMjAxMC0xMC0xOSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgZ2xvYmFsRGF0
YSBBUElzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
Nzk2OQorCisgICAgICAgIE1ha2UgSlNHbG9iYWxPYmplY3Q6Omdsb2JhbERhdGEgcmV0dXJuIGEg
cmVmZXJlbmNlIGFuZCBhZGFwdAorICAgICAgICBjYWxsZXJzLiBUaGlzIHVuaWZpZXMgdGhlIEFQ
SSB3aXRoIHRoZSBleGlzdGluZworICAgICAgICBDYWxsRnJhbWU6Omdsb2JhbERhdGEsIHdoaWNo
IGFsc28gcmV0dXJucyBhIHJlZmVyZW5jZS4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2Vy
LmNwcDoKKyAgICAgICAgKEpTQzo6ZXZhbHVhdGVJbkdsb2JhbENhbGxGcmFtZSk6CisgICAgICAg
ICogaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmg6CisgICAgICAgICogaW50ZXJwcmV0ZXIvSW50ZXJw
cmV0ZXIuY3BwOgorICAgICAgICAoSlNDOjpJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyk6Cisg
ICAgICAgICoganNjLmNwcDoKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRzKToKKyAgICAgICAgKiBw
YXJzZXIvSlNQYXJzZXIuY3BwOgorICAgICAgICAoSlNDOjpqc1BhcnNlKToKKyAgICAgICAgKiBw
YXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyOjpwYXJzZSk6CisgICAgICAg
ICogcGFyc2VyL1BhcnNlci5oOgorICAgICAgICAoSlNDOjpQYXJzZXI6OnBhcnNlKToKKyAgICAg
ICAgKiBydW50aW1lL0Vycm9yLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlRXJyb3IpOgorICAg
ICAgICAoSlNDOjpjcmVhdGVFdmFsRXJyb3IpOgorICAgICAgICAoSlNDOjpjcmVhdGVSYW5nZUVy
cm9yKToKKyAgICAgICAgKEpTQzo6Y3JlYXRlUmVmZXJlbmNlRXJyb3IpOgorICAgICAgICAoSlND
OjpjcmVhdGVTeW50YXhFcnJvcik6CisgICAgICAgIChKU0M6OmNyZWF0ZVR5cGVFcnJvcik6Cisg
ICAgICAgIChKU0M6OmNyZWF0ZVVSSUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0Z1bmN0aW9u
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RGdW5jdGlvbik6CisgICAg
ICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp+SlNHbG9iYWxPYmplY3QpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
bWFya0NoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAg
ICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpnbG9iYWxEYXRhKToKKwogMjAxMC0xMC0xOSAgS3dh
bmcgWXVsIFNlbyAgPHNreXVsQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhdmlkIEtpbHplci4KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCAxN2Rm
ZGY3Li4yOWI2ZWIyIDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0xMDYs
NyArMTA2LDcgQEAgSlNWYWx1ZSBldmFsdWF0ZUluR2xvYmFsQ2FsbEZyYW1lKGNvbnN0IFVTdHJp
bmcmIHNjcmlwdCwgSlNWYWx1ZSYgZXhjZXB0aW9uLCBKU0cKICAgICBpZiAoZXJyb3IpCiAgICAg
ICAgIHJldHVybiBlcnJvcjsKIAotICAgIHJldHVybiBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KS0+aW50ZXJwcmV0ZXItPmV4ZWN1dGUoZXZhbC5nZXQoKSwgZ2xvYmFsQ2FsbEZyYW1lLCBnbG9i
YWxPYmplY3QsIGdsb2JhbENhbGxGcmFtZS0+c2NvcGVDaGFpbigpLCAmZXhjZXB0aW9uKTsKKyAg
ICByZXR1cm4gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkuaW50ZXJwcmV0ZXItPmV4ZWN1dGUo
ZXZhbC5nZXQoKSwgZ2xvYmFsQ2FsbEZyYW1lLCBnbG9iYWxPYmplY3QsIGdsb2JhbENhbGxGcmFt
ZS0+c2NvcGVDaGFpbigpLCAmZXhjZXB0aW9uKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCBiL0phdmFT
Y3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCmluZGV4IGJkZTk3ODYuLjY3ZGViMzgg
MTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCisrKyBi
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC02Myw5ICs2Myw2IEBA
IG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgICAgIHJldHVybiBzY29wZUNoYWluKCktPmdsb2Jh
bFRoaXM7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGSVhNRTogRWxzZXdoZXJlLCB3ZSB1c2Ug
SlNHbG9iYWxEYXRhKiByYXRoZXIgdGhhbiBKU0dsb2JhbERhdGEmLgotICAgICAgICAvLyBXZSBz
aG91bGQgbWFrZSB0aGlzIG1vcmUgdW5pZm9ybSBhbmQgZWl0aGVyIHVzZSBhIHJlZmVyZW5jZSBl
dmVyeXdoZXJlCi0gICAgICAgIC8vIG9yIGEgcG9pbnRlciBldmVyeXdoZXJlLgogICAgICAgICBK
U0dsb2JhbERhdGEmIGdsb2JhbERhdGEoKSBjb25zdAogICAgICAgICB7CiAgICAgICAgICAgICBB
U1NFUlQoc2NvcGVDaGFpbigpLT5nbG9iYWxEYXRhKTsKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcCBiL0phdmFTY3JpcHRDb3JlL2ludGVycHJl
dGVyL0ludGVycHJldGVyLmNwcAppbmRleCAyODc3NTY1Li5iZjliYjczIDEwMDY0NAotLS0gYS9K
YXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKKysrIGIvSmF2YVNjcmlw
dENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCkBAIC00NDgsNyArNDQ4LDcgQEAgdm9p
ZCBJbnRlcnByZXRlcjo6ZHVtcFJlZ2lzdGVycyhDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICBw
cmludGYoIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iKTsKIAogICAgIENvZGVCbG9jayogY29kZUJs
b2NrID0gY2FsbEZyYW1lLT5jb2RlQmxvY2soKTsKLSAgICBSZWdpc3RlckZpbGUqIHJlZ2lzdGVy
RmlsZSA9ICZjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCktPmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKKyAgICBSZWdpc3RlckZpbGUqIHJlZ2lz
dGVyRmlsZSA9ICZjYWxsRnJhbWUtPnNjb3BlQ2hhaW4oKS0+Z2xvYmFsT2JqZWN0LT5nbG9iYWxE
YXRhKCkuaW50ZXJwcmV0ZXItPnJlZ2lzdGVyRmlsZSgpOwogICAgIGNvbnN0IFJlZ2lzdGVyKiBp
dDsKICAgICBjb25zdCBSZWdpc3RlciogZW5kOwogICAgIEpTVmFsdWUgdjsKZGlmZiAtLWdpdCBh
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IGQ3
NTZhMGMuLmJhNTA2ZTQgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAKKysrIGIv
SmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtMzY4LDcgKzM2OCw3IEBAIHN0YXRpYyBib29sIHJ1
bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBWZWN0b3I8U2Ny
aXB0PiYgc2NyCiAgICAgaWYgKGR1bXApCiAgICAgICAgIEJ5dGVjb2RlR2VuZXJhdG9yOjpzZXRE
dW1wc0dlbmVyYXRlZENvZGUodHJ1ZSk7CiAKLSAgICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEg
PSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsKIAogI2lmIEVOQUJMRShTQU1QTElOR19G
TEFHUykKICAgICBTYW1wbGluZ0ZsYWdzOjpzdGFydCgpOwpAQCAtMzg2LDcgKzM4Niw3IEBAIHN0
YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBWZWN0b3I8U2NyaXB0PiYgc2NyCiAgICAgICAgICAgICBmaWxlTmFtZSA9ICJbQ29tbWFuZCBM
aW5lXSI7CiAgICAgICAgIH0KIAotICAgICAgICBnbG9iYWxEYXRhLT5zdGFydFNhbXBsaW5nKCk7
CisgICAgICAgIGdsb2JhbERhdGEuc3RhcnRTYW1wbGluZygpOwogCiAgICAgICAgIENvbXBsZXRp
b24gY29tcGxldGlvbiA9IGV2YWx1YXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBnbG9i
YWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hhaW4oKSwgbWFrZVNvdXJjZShzY3JpcHQsIGZpbGVOYW1l
KSk7CiAgICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIGNvbXBsZXRpb24uY29tcGxUeXBlKCkg
IT0gVGhyb3c7CkBAIC0zOTcsMTkgKzM5NywxOSBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0
cyhHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVmVjdG9yPFNjcmlwdD4mIHNjcgog
ICAgICAgICAgICAgICAgIHByaW50ZigiRW5kOiAlc1xuIiwgY29tcGxldGlvbi52YWx1ZSgpLnRv
U3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGdsb2JhbERhdGEtPnN0b3BTYW1wbGluZygpOworICAgICAgICBnbG9i
YWxEYXRhLnN0b3BTYW1wbGluZygpOwogICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KS0+Y2xlYXJFeGNlcHRpb24oKTsKICAgICB9CiAKICNpZiBFTkFCTEUoU0FNUExJTkdfRkxBR1Mp
CiAgICAgU2FtcGxpbmdGbGFnczo6c3RvcCgpOwogI2VuZGlmCi0gICAgZ2xvYmFsRGF0YS0+ZHVt
cFNhbXBsZURhdGEoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOworICAgIGdsb2JhbERhdGEu
ZHVtcFNhbXBsZURhdGEoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCkpOwogI2lmIEVOQUJMRShT
QU1QTElOR19DT1VOVEVSUykKICAgICBBYnN0cmFjdFNhbXBsaW5nQ291bnRlcjo6ZHVtcCgpOwog
I2VuZGlmCiAjaWYgRU5BQkxFKFJFR0VYUF9UUkFDSU5HKQotICAgIGdsb2JhbERhdGEtPmR1bXBS
ZWdFeHBUcmFjZSgpOworICAgIGdsb2JhbERhdGEuZHVtcFJlZ0V4cFRyYWNlKCk7CiAjZW5kaWYK
ICAgICByZXR1cm4gc3VjY2VzczsKIH0KZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9KU1BhcnNlci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvSlNQYXJzZXIuY3BwCmluZGV4
IDAzMzgyMTAuLjRiN2ZjYjIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9KU1Bh
cnNlci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0pTUGFyc2VyLmNwcApAQCAtNDg1
LDcgKzQ4NSw3IEBAIHByaXZhdGU6CiAKIGludCBqc1BhcnNlKEpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBGdW5jdGlvblBhcmFtZXRlcnMqIHBhcmFtZXRlcnMsIEpTUGFyc2Vy
U3RyaWN0bmVzcyBzdHJpY3RuZXNzLCBKU1BhcnNlck1vZGUgcGFyc2VyTW9kZSwgY29uc3QgU291
cmNlQ29kZSogc291cmNlKQogewotICAgIEpTUGFyc2VyIHBhcnNlcihsZXhpY2FsR2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCktPmxleGVyLCBsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCksIHBhcmFtZXRlcnMsIHN0cmljdG5lc3MgPT0gSlNQYXJzZVN0cmljdCwgcGFyc2VyTW9kZSA9
PSBKU1BhcnNlRnVuY3Rpb25Db2RlLCBzb3VyY2UtPnByb3ZpZGVyKCkpOworICAgIEpTUGFyc2Vy
IHBhcnNlcihsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkubGV4ZXIsICZsZXhpY2Fs
R2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIHBhcmFtZXRlcnMsIHN0cmljdG5lc3MgPT0gSlNQ
YXJzZVN0cmljdCwgcGFyc2VyTW9kZSA9PSBKU1BhcnNlRnVuY3Rpb25Db2RlLCBzb3VyY2UtPnBy
b3ZpZGVyKCkpOwogICAgIHJldHVybiBwYXJzZXIucGFyc2VQcm9ncmFtKGxleGljYWxHbG9iYWxP
YmplY3QpOwogfQogCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNw
cCBiL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGFkODVhN2MuLmFmZjc5
ZjUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC00NSw3ICs0NSw3IEBAIHZvaWQgUGFy
c2VyOjpwYXJzZShKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgRnVuY3Rpb25Q
YXJhbWV0ZXJzKiBwYXJhCiAgICAgKmVyckxpbmUgPSAtMTsKICAgICAqZXJyTXNnID0gVVN0cmlu
ZygpOwogCi0gICAgTGV4ZXImIGxleGVyID0gKmxleGljYWxHbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKS0+bGV4ZXI7CisgICAgTGV4ZXImIGxleGVyID0gKmxleGljYWxHbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS5sZXhlcjsKICAgICBsZXhlci5zZXRDb2RlKCptX3NvdXJjZSwgbV9hcmVuYSk7
CiAKICAgICBpbnQgcGFyc2VFcnJvciA9IGpzUGFyc2UobGV4aWNhbEdsb2JhbE9iamVjdCwgcGFy
YW1ldGVycywgc3RyaWN0bmVzcywgbW9kZSwgbV9zb3VyY2UpOwpkaWZmIC0tZ2l0IGEvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5o
CmluZGV4IGY1YmJjYjguLjY1NDkwNjcgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTg0LDEy
ICs4NCwxMiBAQCBuYW1lc3BhY2UgSlNDIHsKIAogICAgICAgICBtX3NvdXJjZSA9ICZzb3VyY2U7
CiAgICAgICAgIGlmIChQYXJzZWROb2RlOjpzY29wZUlzRnVuY3Rpb24pCi0gICAgICAgICAgICBs
ZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPmxleGVyLT5zZXRJc1JlcGFyc2luZygp
OworICAgICAgICAgICAgbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmxleGVyLT5z
ZXRJc1JlcGFyc2luZygpOwogICAgICAgICBwYXJzZShsZXhpY2FsR2xvYmFsT2JqZWN0LCBwYXJh
bWV0ZXJzLCBzdHJpY3RuZXNzLCBQYXJzZWROb2RlOjppc0Z1bmN0aW9uTm9kZSA/IEpTUGFyc2VG
dW5jdGlvbkNvZGUgOiBKU1BhcnNlUHJvZ3JhbUNvZGUsICZlcnJMaW5lLCAmZXJyTXNnKTsKIAog
ICAgICAgICBSZWZQdHI8UGFyc2VkTm9kZT4gcmVzdWx0OwogICAgICAgICBpZiAobV9zb3VyY2VF
bGVtZW50cykgewotICAgICAgICAgICAgcmVzdWx0ID0gUGFyc2VkTm9kZTo6Y3JlYXRlKGxleGlj
YWxHbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwKKyAgICAgICAgICAgIHJlc3VsdCA9IFBhcnNl
ZE5vZGU6OmNyZWF0ZSgmbGV4aWNhbEdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLAogICAgICAg
ICAgICAgICAgIG1fc291cmNlRWxlbWVudHMsCiAgICAgICAgICAgICAgICAgbV92YXJEZWNsYXJh
dGlvbnMgPyAmbV92YXJEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLAogICAgICAgICAgICAgICAgIG1f
ZnVuY0RlY2xhcmF0aW9ucyA/ICZtX2Z1bmNEZWNsYXJhdGlvbnMtPmRhdGEgOiAwLApAQCAtMTA4
LDcgKzEwOCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgaWYgKGlzRnVuY3Rpb25C
b2R5Tm9kZShzdGF0aWNfY2FzdDxQYXJzZWROb2RlKj4oMCkpKQogICAgICAgICAgICAgICAgICpl
eGNlcHRpb24gPSBjcmVhdGVTdGFja092ZXJmbG93RXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCk7
CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9y
SW5mbyhsZXhpY2FsR2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGNyZWF0ZVN5bnRheEVycm9y
KGxleGljYWxHbG9iYWxPYmplY3QsIGVyck1zZyksIGVyckxpbmUsIHNvdXJjZSk7CisgICAgICAg
ICAgICAgICAgKmV4Y2VwdGlvbiA9IGFkZEVycm9ySW5mbygmbGV4aWNhbEdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLCBjcmVhdGVTeW50YXhFcnJvcihsZXhpY2FsR2xvYmFsT2JqZWN0LCBlcnJN
c2cpLCBlcnJMaW5lLCBzb3VyY2UpOwogICAgICAgICB9CiAKICAgICAgICAgbV9hcmVuYS5yZXNl
dCgpOwpkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAgYi9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAppbmRleCBlMzU0MjRiLi42YjI3ZDdkIDEwMDY0
NAotLS0gYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcAorKysgYi9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0Vycm9yLmNwcApAQCAtNDUsNDMgKzQ1LDQzIEBAIHN0YXRpYyBjb25zdCBj
aGFyKiBleHByZXNzaW9uRW5kT2Zmc2V0UHJvcGVydHlOYW1lID0gImV4cHJlc3Npb25FbmRPZmZz
ZXQiOwogSlNPYmplY3QqIGNyZWF0ZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHko
KSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKKyAgICBy
ZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKCZnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwg
Z2xvYmFsT2JqZWN0LT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsKIH0KIAogSlNPYmplY3Qq
IGNyZWF0ZUV2YWxFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBVU3Ry
aW5nJiBtZXNzYWdlKQogewogICAgIEFTU0VSVCghbWVzc2FnZS5pc0VtcHR5KCkpOwotICAgIHJl
dHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGds
b2JhbE9iamVjdC0+ZXZhbEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVz
c2FnZSk7CisgICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5n
bG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+ZXZhbEVycm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JT
dHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSYW5nZUVycm9yKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAg
ICAgQVNTRVJUKCFtZXNzYWdlLmlzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6
OmNyZWF0ZShnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5yYW5nZUVy
cm9yQ29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CisgICAgcmV0dXJu
IEVycm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2Jh
bE9iamVjdC0+cmFuZ2VFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1lc3Nh
Z2UpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVmZXJlbmNlRXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1l
c3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnJlZmVyZW5jZUVycm9yQ29uc3Ry
dWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIEVycm9ySW5z
dGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9iamVjdC0+
cmVmZXJlbmNlRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsK
IH0KIAogSlNPYmplY3QqIGNyZWF0ZVN5bnRheEVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFVTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKCFtZXNzYWdlLmlz
RW1wdHkoKSk7Ci0gICAgcmV0dXJuIEVycm9ySW5zdGFuY2U6OmNyZWF0ZShnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKSwgZ2xvYmFsT2JqZWN0LT5zeW50YXhFcnJvckNvbnN0cnVjdG9yKCktPmVy
cm9yU3RydWN0dXJlKCksIG1lc3NhZ2UpOworICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVh
dGUoJmdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnN5bnRheEVycm9y
Q29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CiB9CiAKIEpTT2JqZWN0
KiBjcmVhdGVUeXBlRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0
cmluZyYgbWVzc2FnZSkKIHsKICAgICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICBy
ZXR1cm4gRXJyb3JJbnN0YW5jZTo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBn
bG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9yU3RydWN0dXJlKCksIG1l
c3NhZ2UpOworICAgIHJldHVybiBFcnJvckluc3RhbmNlOjpjcmVhdGUoJmdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPnR5cGVFcnJvckNvbnN0cnVjdG9yKCktPmVycm9y
U3RydWN0dXJlKCksIG1lc3NhZ2UpOwogfQogCiBKU09iamVjdCogY3JlYXRlVVJJRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgVVN0cmluZyYgbWVzc2FnZSkKIHsKICAg
ICBBU1NFUlQoIW1lc3NhZ2UuaXNFbXB0eSgpKTsKLSAgICByZXR1cm4gRXJyb3JJbnN0YW5jZTo6
Y3JlYXRlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLCBnbG9iYWxPYmplY3QtPlVSSUVycm9y
Q29uc3RydWN0b3IoKS0+ZXJyb3JTdHJ1Y3R1cmUoKSwgbWVzc2FnZSk7CisgICAgcmV0dXJuIEVy
cm9ySW5zdGFuY2U6OmNyZWF0ZSgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCksIGdsb2JhbE9i
amVjdC0+VVJJRXJyb3JDb25zdHJ1Y3RvcigpLT5lcnJvclN0cnVjdHVyZSgpLCBtZXNzYWdlKTsK
IH0KIAogSlNPYmplY3QqIGNyZWF0ZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgVVN0cmlu
ZyYgbWVzc2FnZSkKZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRnVuY3Rpb25D
b25zdHJ1Y3Rvci5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Z1bmN0aW9uQ29uc3RydWN0
b3IuY3BwCmluZGV4IDliNTk3MjAuLmJjMjE1OGUgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRnVuY3Rpb25Db25zdHJ1Y3Rvci5jcHAKKysrIGIvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9GdW5jdGlvbkNvbnN0cnVjdG9yLmNwcApAQCAtOTcsNyArOTcsNyBAQCBKU09iamVjdCog
Y29uc3RydWN0RnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzLCBj
b25zdCBJZGVudGlmaQogICAgIH0KIAogICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCk7Ci0gICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxE
YXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CisgICAgSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7CiAgICAgU291cmNlQ29kZSBzb3Vy
Y2UgPSBtYWtlU291cmNlKHByb2dyYW0sIHNvdXJjZVVSTCwgbGluZU51bWJlcik7CiAgICAgSlNP
YmplY3QqIGV4Y2VwdGlvbiA9IDA7CiAgICAgUmVmUHRyPEZ1bmN0aW9uRXhlY3V0YWJsZT4gZnVu
Y3Rpb24gPSBGdW5jdGlvbkV4ZWN1dGFibGU6OmZyb21HbG9iYWxDb2RlKGZ1bmN0aW9uTmFtZSwg
ZXhlYywgZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpLCBzb3VyY2UsICZl
eGNlcHRpb24pOwpAQCAtMTA2LDcgKzEwNiw3IEBAIEpTT2JqZWN0KiBjb25zdHJ1Y3RGdW5jdGlv
bihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MsIGNvbnN0IElkZW50aWZpCiAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIGV4Y2VwdGlvbik7CiAgICAgfQogCi0gICAg
U2NvcGVDaGFpbiBzY29wZUNoYWluKGdsb2JhbE9iamVjdCwgZ2xvYmFsRGF0YSwgZ2xvYmFsT2Jq
ZWN0LCBleGVjLT5nbG9iYWxUaGlzVmFsdWUoKSk7CisgICAgU2NvcGVDaGFpbiBzY29wZUNoYWlu
KGdsb2JhbE9iamVjdCwgJmdsb2JhbERhdGEsIGdsb2JhbE9iamVjdCwgZXhlYy0+Z2xvYmFsVGhp
c1ZhbHVlKCkpOwogICAgIHJldHVybiBuZXcgKGV4ZWMpIEpTRnVuY3Rpb24oZXhlYywgZnVuY3Rp
b24sIHNjb3BlQ2hhaW4ubm9kZSgpKTsKIH0KIApkaWZmIC0tZ2l0IGEvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xv
YmFsT2JqZWN0LmNwcAppbmRleCA5MDNlNTczLi43YjFlYjA2IDEwMDY0NAotLS0gYS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMTE2LDcgKzExNiw3IEBAIEpTR2xvYmFsT2Jq
ZWN0Ojp+SlNHbG9iYWxPYmplY3QoKQogICAgIGZvciAoSGFzaFNldDxHbG9iYWxDb2RlQmxvY2sq
Pjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb2RlQmxvY2tzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyAr
K2l0KQogICAgICAgICAoKml0KS0+Y2xlYXJHbG9iYWxPYmplY3QoKTsKICAgICAgICAgCi0gICAg
UmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUgPSBnbG9iYWxEYXRhKCktPmludGVycHJldGVyLT5y
ZWdpc3RlckZpbGUoKTsKKyAgICBSZWdpc3RlckZpbGUmIHJlZ2lzdGVyRmlsZSA9IGdsb2JhbERh
dGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxlKCk7CiAgICAgaWYgKHJlZ2lzdGVyRmlsZS5j
bGVhckdsb2JhbE9iamVjdCh0aGlzKSkKICAgICAgICAgcmVnaXN0ZXJGaWxlLnNldE51bUdsb2Jh
bHMoMCk7CiAgICAgZCgpLT5kZXN0cnVjdG9yKGQoKSk7CkBAIC0zNDksOSArMzQ5LDkgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYgbWFya1N0YWNrKQogICAg
IGZvciAoSGFzaFNldDxHbG9iYWxDb2RlQmxvY2sqPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb2Rl
QmxvY2tzKCkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KQogICAgICAgICAoKml0KS0+bWFya0Fn
Z3JlZ2F0ZShtYXJrU3RhY2spOwogCi0gICAgUmVnaXN0ZXJGaWxlJiByZWdpc3RlckZpbGUgPSBn
bG9iYWxEYXRhKCktPmludGVycHJldGVyLT5yZWdpc3RlckZpbGUoKTsKKyAgICBSZWdpc3RlckZp
bGUmIHJlZ2lzdGVyRmlsZSA9IGdsb2JhbERhdGEoKS5pbnRlcnByZXRlci0+cmVnaXN0ZXJGaWxl
KCk7CiAgICAgaWYgKHJlZ2lzdGVyRmlsZS5nbG9iYWxPYmplY3QoKSA9PSB0aGlzKQotICAgICAg
ICByZWdpc3RlckZpbGUubWFya0dsb2JhbHMobWFya1N0YWNrLCAmZ2xvYmFsRGF0YSgpLT5oZWFw
KTsKKyAgICAgICAgcmVnaXN0ZXJGaWxlLm1hcmtHbG9iYWxzKG1hcmtTdGFjaywgJmdsb2JhbERh
dGEoKS5oZWFwKTsKIAogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+cmVnRXhwQ29u
c3RydWN0b3IpOwogICAgIG1hcmtJZk5lZWRlZChtYXJrU3RhY2ssIGQoKS0+ZXJyb3JDb25zdHJ1
Y3Rvcik7CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmggYi9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggMzZmYTcw
Yi4uOTNhMWI4OCAxMDA2NDQKLS0tIGEvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
Mjc2LDcgKzI3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAKICAgICAgICAgdm9pZCBy
ZXNldFByb3RvdHlwZShKU1ZhbHVlIHByb3RvdHlwZSk7CiAKLSAgICAgICAgSlNHbG9iYWxEYXRh
KiBnbG9iYWxEYXRhKCkgeyByZXR1cm4gZCgpLT5nbG9iYWxEYXRhLmdldCgpOyB9CisgICAgICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSgpIHsgcmV0dXJuICpkKCktPmdsb2JhbERhdGEuZ2V0
KCk7IH0KICAgICAgICAgSlNHbG9iYWxPYmplY3REYXRhKiBkKCkgY29uc3QgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8SlNHbG9iYWxPYmplY3REYXRhKj4oSlNWYXJpYWJsZU9iamVjdDo6ZCk7IH0KIAog
ICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTdHJ1Y3R1cmU+IGNyZWF0ZVN0cnVjdHVyZShKU1Zh
bHVlIHByb3RvdHlwZSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggNmZkZDM3Mi4uNGNlZmI5OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMC0x
OSAgWGFuIExvcGV6ICA8eGxvcGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pZnkgZ2xvYmFsRGF0YSBBUElzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00Nzk2OQorCisgICAgICAg
IEFkYXB0IGNvZGUgdG8gSlNHbG9iYWxPYmplY3Q6Omdsb2JhbERhdGEgcmV0dXJuaW5nIGEgcmVm
ZXJlbmNlCisgICAgICAgIGluc3RlYWQgb2YgYSBwb2ludGVyLgorCisgICAgICAgICogYmluZGlu
Z3MvanMvSlNDYWxsYmFja0RhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNDYWxsYmFja0Rh
dGE6Omludm9rZUNhbGxiYWNrKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRo
TlNSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVhQYXRoTlNSZXNvbHZl
cjo6bG9va3VwTmFtZXNwYWNlVVJJKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkpTV29ya2VyQ29udGV4dDo6bWFya0NoaWxkcmVuKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpoYW5kbGVFdmVudCk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250ZXh0KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OldvcmtlclNjcmlwdENvbnRyb2xsZXI6OmV2YWx1YXRlKToKKyAgICAgICAgKiBicmlkZ2UvTlBf
anNvYmplY3QuY3BwOgorICAgICAgICAoX05QTl9JbnZva2VEZWZhdWx0KToKKyAgICAgICAgKF9O
UE5fSW52b2tlKToKKyAgICAgICAgKF9OUE5fRXZhbHVhdGUpOgorICAgICAgICAoX05QTl9Db25z
dHJ1Y3QpOgorCiAyMDEwLTEwLTIwICBTaGluaWNoaXJvIEhhbWFqaSAgPGhhbWFqaUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FsbGJhY2tEYXRhLmNwcCBiL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDYWxsYmFja0RhdGEuY3BwCmluZGV4IDZiMTk2MzkuLmYzOWM1M2MgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCisrKyBiL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDYWxsYmFja0RhdGEuY3BwCkBAIC01OSw3ICs1OSw3IEBAIEpTVmFsdWUgSlND
YWxsYmFja0RhdGE6Omludm9rZUNhbGxiYWNrKE1hcmtlZEFyZ3VtZW50QnVmZmVyJiBhcmdzLCBi
b29sKiByYWlzZWRFCiAgICAgICAgIGZ1bmN0aW9uID0gY2FsbGJhY2soKTsKICAgICB9CiAgICAg
Ci0gICAgZ2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQo
KTsKKyAgICBnbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0
KCk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9IGdsb2JhbE9iamVjdCgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgLy8gV2Ugd2lsbCBmYWlsIHRvIGdldCB0
aGUgY29udGV4dCBpZiB0aGUgZnJhbWUgaGFzIGJlZW4gZGV0YWNoZWQuCiAgICAgaWYgKCFjb250
ZXh0KQpAQCAtNjgsNyArNjgsNyBAQCBKU1ZhbHVlIEpTQ2FsbGJhY2tEYXRhOjppbnZva2VDYWxs
YmFjayhNYXJrZWRBcmd1bWVudEJ1ZmZlciYgYXJncywgYm9vbCogcmFpc2VkRQogICAgIEpTVmFs
dWUgcmVzdWx0ID0gY29udGV4dC0+aXNEb2N1bWVudCgpIAogICAgICAgICA/IEpTTWFpblRocmVh
ZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjYWxs
YmFjaygpLCBhcmdzKQogICAgICAgICA6IEpTQzo6Y2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5
cGUsIGNhbGxEYXRhLCBjYWxsYmFjaygpLCBhcmdzKTsKLSAgICBnbG9iYWxPYmplY3QoKS0+Z2xv
YmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisgICAgZ2xvYmFsT2JqZWN0KCktPmds
b2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAKICAgICBEb2N1bWVudDo6dXBkYXRl
U3R5bGVGb3JBbGxEb2N1bWVudHMoKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tWFBhdGhOU1Jlc29sdmVyLmNwcAppbmRleCAzN2YyNTEyLi5lOGUxMzY5IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcAorKysgYi9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcApAQCAtODksOSAr
ODksOSBAQCBTdHJpbmcgSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXI6Omxvb2t1cE5hbWVzcGFjZVVS
SShjb25zdCBTdHJpbmcmIHByZWZpeCkKICAgICBNYXJrZWRBcmd1bWVudEJ1ZmZlciBhcmdzOwog
ICAgIGFyZ3MuYXBwZW5kKGpzU3RyaW5nKGV4ZWMsIHByZWZpeCkpOwogCi0gICAgbV9nbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBtX2dsb2Jh
bE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgSlNWYWx1
ZSByZXR2YWwgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwg
bV9jdXN0b21SZXNvbHZlciwgYXJncyk7Ci0gICAgbV9nbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIG1fZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRh
KCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgU3RyaW5nIHJlc3VsdDsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RXZlbnRMaXN0ZW5lci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5j
cHAKaW5kZXggY2VlZDQ0NS4uNTYwNDM3NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudExp
c3RlbmVyLmNwcApAQCAtMTA4LDEwICsxMDgsMTAgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6Omhh
bmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQK
ICAgICAgICAgRXZlbnQqIHNhdmVkRXZlbnQgPSBnbG9iYWxPYmplY3QtPmN1cnJlbnRFdmVudCgp
OwogICAgICAgICBnbG9iYWxPYmplY3QtPnNldEN1cnJlbnRFdmVudChldmVudCk7CiAKLSAgICAg
ICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCk7
Ci0gICAgICAgIER5bmFtaWNHbG9iYWxPYmplY3RTY29wZSBnbG9iYWxPYmplY3RTY29wZShleGVj
LCBnbG9iYWxEYXRhLT5keW5hbWljR2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS0+ZHluYW1pY0ds
b2JhbE9iamVjdCA6IGdsb2JhbE9iamVjdCk7CisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOworICAgICAgICBEeW5hbWljR2xvYmFs
T2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xvYmFsRGF0YS5keW5hbWljR2xv
YmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0
KTsKIAotICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgICAg
ICBnbG9iYWxEYXRhLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgICAgIEpTVmFsdWUgcmV0
dmFsOwogICAgICAgICBpZiAoaGFuZGxlRXZlbnRGdW5jdGlvbikgewogICAgICAgICAgICAgcmV0
dmFsID0gc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+aXNEb2N1bWVudCgpCkBAIC0xMjMsNyArMTIz
LDcgQEAgdm9pZCBKU0V2ZW50TGlzdGVuZXI6OmhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQKICAgICAgICAgICAgICAgICA/IEpTTWFpblRo
cmVhZEV4ZWNTdGF0ZTo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IGN1cnJlbnRUYXJnZXQsIGFyZ3MpCiAgICAgICAgICAgICAgICAgOiBKU0M6OmNhbGwoZXhlYywg
anNGdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBjdXJyZW50VGFyZ2V0LCBhcmdzKTsKICAg
ICAgICAgfQotICAgICAgICBnbG9iYWxEYXRhLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisgICAg
ICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIGdsb2JhbE9i
amVjdC0+c2V0Q3VycmVudEV2ZW50KHNhdmVkRXZlbnQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAgYi9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKaW5kZXggYjg4ODVjZi4uYmU0N2IxNiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCisr
KyBiL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNwcApAQCAtNTcs
NyArNTcsNyBAQCB2b2lkIEpTV29ya2VyQ29udGV4dDo6bWFya0NoaWxkcmVuKE1hcmtTdGFjayYg
bWFya1N0YWNrKQogewogICAgIEJhc2U6Om1hcmtDaGlsZHJlbihtYXJrU3RhY2spOwogCi0gICAg
SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gKnRoaXMtPmdsb2JhbERhdGEoKTsKKyAgICBKU0ds
b2JhbERhdGEmIGdsb2JhbERhdGEgPSB0aGlzLT5nbG9iYWxEYXRhKCk7CiAKICAgICBtYXJrQWN0
aXZlT2JqZWN0c0ZvckNvbnRleHQobWFya1N0YWNrLCBnbG9iYWxEYXRhLCBzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCkpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
Q29udGV4dEVycm9ySGFuZGxlci5jcHAgYi9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29u
dGV4dEVycm9ySGFuZGxlci5jcHAKaW5kZXggYWQzZjVlYy4uODVmYzQ5NiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRFcnJvckhhbmRsZXIuY3BwCisrKyBi
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyLmNwcApAQCAt
ODgsMTQgKzg4LDE0IEBAIHZvaWQgSlNXb3JrZXJDb250ZXh0RXJyb3JIYW5kbGVyOjpoYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjCiAgICAgICAgIGFyZ3MuYXBw
ZW5kKGpzU3RyaW5nKGV4ZWMsIGVycm9yRXZlbnQtPmZpbGVuYW1lKCkpKTsKICAgICAgICAgYXJn
cy5hcHBlbmQoanNOdW1iZXIoZXhlYywgZXJyb3JFdmVudC0+bGluZW5vKCkpKTsKIAotICAgICAg
ICBKU0dsb2JhbERhdGEqIGdsb2JhbERhdGEgPSBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKTsK
LSAgICAgICAgRHluYW1pY0dsb2JhbE9iamVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGV4ZWMs
IGdsb2JhbERhdGEtPmR5bmFtaWNHbG9iYWxPYmplY3QgPyBnbG9iYWxEYXRhLT5keW5hbWljR2xv
YmFsT2JqZWN0IDogZ2xvYmFsT2JqZWN0KTsgICAgCisgICAgICAgIEpTR2xvYmFsRGF0YSYgZ2xv
YmFsRGF0YSA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpOworICAgICAgICBEeW5hbWljR2xv
YmFsT2JqZWN0U2NvcGUgZ2xvYmFsT2JqZWN0U2NvcGUoZXhlYywgZ2xvYmFsRGF0YS5keW5hbWlj
R2xvYmFsT2JqZWN0ID8gZ2xvYmFsRGF0YS5keW5hbWljR2xvYmFsT2JqZWN0IDogZ2xvYmFsT2Jq
ZWN0KTsKIAogICAgICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGdsb2JhbE9iamVjdC0+dG9UaGlz
T2JqZWN0KGV4ZWMpOwogCi0gICAgICAgIGdsb2JhbERhdGEtPnRpbWVvdXRDaGVja2VyLnN0YXJ0
KCk7CisgICAgICAgIGdsb2JhbERhdGEudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAg
SlNWYWx1ZSByZXR1cm5WYWx1ZSA9IEpTQzo6Y2FsbChleGVjLCBqc0Z1bmN0aW9uLCBjYWxsVHlw
ZSwgY2FsbERhdGEsIHRoaXNWYWx1ZSwgYXJncyk7Ci0gICAgICAgIGdsb2JhbERhdGEtPnRpbWVv
dXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFsRGF0YS50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CiAKICAgICAgICAgZ2xvYmFsT2JqZWN0LT5zZXRDdXJyZW50RXZlbnQoc2F2ZWRFdmVudCk7
CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBi
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcAppbmRleCBhOWRjNmE4Li5k
NmY4YTM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5j
cHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24uY3BwCkBAIC0xMDEs
MTIgKzEwMSwxMiBAQCB2b2lkIFNjaGVkdWxlZEFjdGlvbjo6ZXhlY3V0ZUZ1bmN0aW9uSW5Db250
ZXh0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKQogICAgICAgICBhcmdzLmFwcGVuZChtX2FyZ3NbaV0pOwogCi0g
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7Cisg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAg
ICBpZiAoY29udGV4dC0+aXNEb2N1bWVudCgpKQogICAgICAgICBKU01haW5UaHJlYWRFeGVjU3Rh
dGU6OmNhbGwoZXhlYywgbV9mdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCB0aGlzVmFsdWUs
IGFyZ3MpOwogICAgIGVsc2UKICAgICAgICAgSlNDOjpjYWxsKGV4ZWMsIG1fZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgdGhpc1ZhbHVlLCBhcmdzKTsKLSAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIGdsb2JhbE9iamVjdC0+Z2xv
YmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgcmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29udHJvbGxlci5jcHAgYi9XZWJD
b3JlL2JpbmRpbmdzL2pzL1dvcmtlclNjcmlwdENvbnRyb2xsZXIuY3BwCmluZGV4IDZmZjhhNjku
LjU4NzJiMmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYmluZGluZ3MvanMvV29ya2VyU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvV2ViQ29yZS9iaW5kaW5ncy9qcy9Xb3JrZXJTY3JpcHRDb250cm9s
bGVyLmNwcApAQCAtMTI0LDkgKzEyNCw5IEBAIFNjcmlwdFZhbHVlIFdvcmtlclNjcmlwdENvbnRy
b2xsZXI6OmV2YWx1YXRlKGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNvdXJjZUNvZGUsCiAgICAg
SlNMb2NrIGxvY2soU2lsZW5jZUFzc2VydGlvbnNPbmx5KTsKIAogICAgIEV4ZWNTdGF0ZSogZXhl
YyA9IG1fd29ya2VyQ29udGV4dFdyYXBwZXItPmdsb2JhbEV4ZWMoKTsKLSAgICBtX3dvcmtlckNv
bnRleHRXcmFwcGVyLT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAg
bV93b3JrZXJDb250ZXh0V3JhcHBlci0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0
KCk7CiAgICAgQ29tcGxldGlvbiBjb21wID0gSlNDOjpldmFsdWF0ZShleGVjLCBleGVjLT5keW5h
bWljR2xvYmFsT2JqZWN0KCktPmdsb2JhbFNjb3BlQ2hhaW4oKSwgc291cmNlQ29kZS5qc1NvdXJj
ZUNvZGUoKSwgbV93b3JrZXJDb250ZXh0V3JhcHBlcik7Ci0gICAgbV93b3JrZXJDb250ZXh0V3Jh
cHBlci0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisgICAgbV93b3JrZXJD
b250ZXh0V3JhcHBlci0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKIAogICAg
IGlmIChjb21wLmNvbXBsVHlwZSgpID09IE5vcm1hbCB8fCBjb21wLmNvbXBsVHlwZSgpID09IFJl
dHVyblZhbHVlKQogICAgICAgICByZXR1cm4gY29tcC52YWx1ZSgpOwpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbSBiL1dlYkNvcmUvYmluZGluZ3Mv
b2JqYy9XZWJTY3JpcHRPYmplY3QubW0KaW5kZXggYTI2YzMxNS4uNmJmN2FmZSAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9iaW5kaW5ncy9vYmpjL1dlYlNjcmlwdE9iamVjdC5tbQorKysgYi9XZWJDb3Jl
L2JpbmRpbmdzL29iamMvV2ViU2NyaXB0T2JqZWN0Lm1tCkBAIC0zMDQsOSArMzA0LDkgQEAgc3Rh
dGljIHZvaWQgZ2V0TGlzdEZyb21OU0FycmF5KEV4ZWNTdGF0ZSAqZXhlYywgTlNBcnJheSAqYXJy
YXksIFJvb3RPYmplY3QqIHJvb3QKICAgICBpZiAoIVtzZWxmIF9pc1NhZmVTY3JpcHRdKQogICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgW3NlbGYgX3Jvb3RPYmplY3RdLT5nbG9iYWxPYmplY3Qo
KS0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIFtzZWxmIF9yb290
T2JqZWN0XS0+Z2xvYmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFy
dCgpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gSlNNYWluVGhyZWFkRXhlY1N0YXRlOjpjYWxsKGV4
ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIFtzZWxmIF9pbXBdLCBhcmdMaXN0KTsK
LSAgICBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCktPnRp
bWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBbc2VsZiBfcm9vdE9iamVjdF0tPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKSB7CiAgICAgICAgIGFkZEV4Y2VwdGlvblRvQ29uc29sZShleGVjKTsK
QEAgLTMzMyw5ICszMzMsOSBAQCBzdGF0aWMgdm9pZCBnZXRMaXN0RnJvbU5TQXJyYXkoRXhlY1N0
YXRlICpleGVjLCBOU0FycmF5ICphcnJheSwgUm9vdE9iamVjdCogcm9vdAogICAgIEpTVmFsdWUg
cmVzdWx0OwogICAgIEpTTG9jayBsb2NrKFNpbGVuY2VBc3NlcnRpb25zT25seSk7CiAgICAgCi0g
ICAgW3NlbGYgX3Jvb3RPYmplY3RdLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLT50aW1l
b3V0Q2hlY2tlci5zdGFydCgpOworICAgIFtzZWxmIF9yb290T2JqZWN0XS0+Z2xvYmFsT2JqZWN0
KCktPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIENvbXBsZXRpb24g
Y29tcGxldGlvbiA9IEpTTWFpblRocmVhZEV4ZWNTdGF0ZTo6ZXZhbHVhdGUoW3NlbGYgX3Jvb3RP
YmplY3RdLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLCBbc2VsZiBfcm9vdE9iamVjdF0t
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoU3RyaW5nKHNj
cmlwdCkpLCBKU0M6OkpTVmFsdWUoKSk7Ci0gICAgW3NlbGYgX3Jvb3RPYmplY3RdLT5nbG9iYWxP
YmplY3QoKS0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CisgICAgW3NlbGYg
X3Jvb3RPYmplY3RdLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0b3AoKTsKICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24uY29tcGxUeXBlKCk7CiAg
ICAgCiAgICAgaWYgKHR5cGUgPT0gTm9ybWFsKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2JyaWRn
ZS9OUF9qc29iamVjdC5jcHAgYi9XZWJDb3JlL2JyaWRnZS9OUF9qc29iamVjdC5jcHAKaW5kZXgg
MTcyNzBlYi4uMDc4MGFkNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9icmlkZ2UvTlBfanNvYmplY3Qu
Y3BwCisrKyBiL1dlYkNvcmUvYnJpZGdlL05QX2pzb2JqZWN0LmNwcApAQCAtMTkwLDkgKzE5MCw5
IEBAIGJvb2wgX05QTl9JbnZva2VEZWZhdWx0KE5QUCwgTlBPYmplY3QqIG8sIGNvbnN0IE5QVmFy
aWFudCogYXJncywgdWludDMyX3QgYXJnQ291CiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVy
IGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJn
Q291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwogICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9i
YWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAg
ICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsK
KyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQo
KTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBj
YWxsVHlwZSwgY2FsbERhdGEsIGZ1bmN0aW9uLCBhcmdMaXN0KTsKLSAgICAgICAgZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICAgICAgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwogCiAgICAgICAgIC8v
IENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlvbiBjYWxsLgogICAg
ICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCByZXN1bHQpOwpAQCAt
MjQwLDkgKzI0MCw5IEBAIGJvb2wgX05QTl9JbnZva2UoTlBQIG5wcCwgTlBPYmplY3QqIG8sIE5Q
SWRlbnRpZmllciBtZXRob2ROYW1lLCBjb25zdCBOUFZhcmlhbnQqCiAgICAgICAgIE1hcmtlZEFy
Z3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhl
YywgYXJncywgYXJnQ291bnQsIHJvb3RPYmplY3QsIGFyZ0xpc3QpOwogICAgICAgICBQcm90ZWN0
ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2JhbE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9i
amVjdCgpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNr
ZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENo
ZWNrZXIuc3RhcnQoKTsKICAgICAgICAgSlNWYWx1ZSByZXN1bHRWID0gSlNDOjpjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iai0+aW1wLCBhcmdMaXN0KTsKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwog
CiAgICAgICAgIC8vIENvbnZlcnQgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBmdW5jdGlv
biBjYWxsLgogICAgICAgICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCByZXN1bHRWLCBy
ZXN1bHQpOwpAQCAtMjc0LDkgKzI3NCw5IEBAIGJvb2wgX05QTl9FdmFsdWF0ZShOUFAgaW5zdGFu
Y2UsIE5QT2JqZWN0KiBvLCBOUFN0cmluZyogcywgTlBWYXJpYW50KiB2YXJpYW50KQogICAgICAg
ICBKU0xvY2sgbG9jayhTaWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgICAgICBTdHJpbmcgc2Ny
aXB0U3RyaW5nID0gY29udmVydE5QU3RyaW5nVG9VVEYxNihzKTsKICAgICAgICAgUHJvdGVjdGVk
UHRyPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QgPSByb290T2JqZWN0LT5nbG9iYWxPYmpl
Y3QoKTsKLSAgICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2Vy
LnN0YXJ0KCk7CisgICAgICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVj
a2VyLnN0YXJ0KCk7CiAgICAgICAgIENvbXBsZXRpb24gY29tcGxldGlvbiA9IEpTQzo6ZXZhbHVh
dGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGdsb2JhbE9iamVjdC0+Z2xvYmFsU2NvcGVD
aGFpbigpLCBtYWtlU291cmNlKHNjcmlwdFN0cmluZyksIEpTQzo6SlNWYWx1ZSgpKTsKLSAgICAg
ICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAg
ICAgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgpOwog
ICAgICAgICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24uY29tcGxUeXBlKCk7CiAgICAgICAg
IAogICAgICAgICBKU1ZhbHVlIHJlc3VsdDsKQEAgLTUxNCw5ICs1MTQsOSBAQCBib29sIF9OUE5f
Q29uc3RydWN0KE5QUCwgTlBPYmplY3QqIG8sIGNvbnN0IE5QVmFyaWFudCogYXJncywgdWludDMy
X3QgYXJnQ291bnQsCiAgICAgICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAg
ICAgIGdldExpc3RGcm9tVmFyaWFudEFyZ3MoZXhlYywgYXJncywgYXJnQ291bnQsIHJvb3RPYmpl
Y3QsIGFyZ0xpc3QpOwogICAgICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxPYmplY3Q+IGdsb2Jh
bE9iamVjdCA9IHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBnbG9iYWxPYmpl
Y3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICAgICAgZ2xvYmFs
T2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICAgICAgSlNW
YWx1ZSByZXN1bHRWID0gSlNDOjpjb25zdHJ1Y3QoZXhlYywgY29uc3RydWN0b3IsIGNvbnN0cnVj
dFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ0xpc3QpOwotICAgICAgICBnbG9iYWxPYmplY3QtPmds
b2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgICAgICBnbG9iYWxPYmplY3Qt
Pmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgICAgIAogICAgICAgICAv
LyBDb252ZXJ0IGFuZCByZXR1cm4gdGhlIHJlc3VsdC4KICAgICAgICAgY29udmVydFZhbHVlVG9O
UFZhcmlhbnQoZXhlYywgcmVzdWx0ViwgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvYnJp
ZGdlL2puaS9qbmlfanNvYmplY3QubW0gYi9XZWJDb3JlL2JyaWRnZS9qbmkvam5pX2pzb2JqZWN0
Lm1tCmluZGV4IGQ3ZDNhNTQuLmY4ZWMxYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvYnJpZGdlL2pu
aS9qbmlfanNvYmplY3QubW0KKysrIGIvV2ViQ29yZS9icmlkZ2Uvam5pL2puaV9qc29iamVjdC5t
bQpAQCAtMjk2LDkgKzI5Niw5IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0OjpjYWxsKGpzdHJpbmcg
bWV0aG9kTmFtZSwgam9iamVjdEFycmF5IGFyZ3MpIGNvbnN0CiAgICAgLy8gQ2FsbCB0aGUgZnVu
Y3Rpb24gb2JqZWN0LgogICAgIE1hcmtlZEFyZ3VtZW50QnVmZmVyIGFyZ0xpc3Q7CiAgICAgZ2V0
TGlzdEZyb21KQXJyYXkoZXhlYywgYXJncywgYXJnTGlzdCk7Ci0gICAgcm9vdE9iamVjdC0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBy
b290T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0
YXJ0KCk7CiAgICAgSlNWYWx1ZSByZXN1bHQgPSBKU0M6OmNhbGwoZXhlYywgZnVuY3Rpb24sIGNh
bGxUeXBlLCBjYWxsRGF0YSwgX2ltcCwgYXJnTGlzdCk7Ci0gICAgcm9vdE9iamVjdC0+Z2xvYmFs
T2JqZWN0KCktPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIHJvb3RP
YmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgp
OwogCiAgICAgcmV0dXJuIGNvbnZlcnRWYWx1ZVRvSk9iamVjdChyZXN1bHQpOwogfQpAQCAtMzE1
LDkgKzMxNSw5IEBAIGpvYmplY3QgSmF2YUpTT2JqZWN0OjpldmFsKGpzdHJpbmcgc2NyaXB0KSBj
b25zdAogICAgIGlmICghcm9vdE9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByb290
T2JqZWN0LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFy
dCgpOworICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxEYXRhKCkudGltZW91
dENoZWNrZXIuc3RhcnQoKTsKICAgICBDb21wbGV0aW9uIGNvbXBsZXRpb24gPSBKU0M6OmV2YWx1
YXRlKHJvb3RPYmplY3QtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxFeGVjKCksIHJvb3RPYmplY3Qt
Pmdsb2JhbE9iamVjdCgpLT5nbG9iYWxTY29wZUNoYWluKCksIG1ha2VTb3VyY2UoSmF2YVN0cmlu
ZyhzY3JpcHQpKSwgSlNDOjpKU1ZhbHVlKCkpOwotICAgIHJvb3RPYmplY3QtPmdsb2JhbE9iamVj
dCgpLT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICByb290T2JqZWN0
LT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAg
ICBDb21wbFR5cGUgdHlwZSA9IGNvbXBsZXRpb24uY29tcGxUeXBlKCk7CiAgICAgCiAgICAgaWYg
KHR5cGUgPT0gTm9ybWFsKSB7CmRpZmYgLS1naXQgYS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IGRhNzkzMDcuLmRhNmExYTQgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTggQEAKKzIwMTAtMTAtMjAgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVuaWZ5IGdsb2JhbERh
dGEgQVBJcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
NDc5NjkKKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQ
cm94eS5tbToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpl
dmFsdWF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6
aW52b2tlKToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Ojpp
bnZva2VEZWZhdWx0KToKKyAgICAgICAgKFdlYktpdDo6TmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Ojpjb25zdHJ1Y3QpOgorICAgICAgICAqIFdlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0
ZS5tbToKKyAgICAgICAgKC1bV2ViU2NyaXB0Q2FsbEZyYW1lIGV2YWx1YXRlV2ViU2NyaXB0Ol0p
OgorCiAyMDEwLTEwLTE5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEFuZGVycyBDYXJsc3Nvbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9t
YWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tIGIvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXgg
MGI5MDM2YS4uMTBlOWI0MiAxMDA2NDQKLS0tIGEvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9O
ZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KKysrIGIvV2ViS2l0L21hYy9QbHVnaW5zL0hv
c3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0KQEAgLTg3Miw5ICs4NzIsOSBAQCBi
b29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6ZXZhbHVhdGUodWludDMyX3Qgb2JqZWN0
SUQsIGNvbnN0IFN0cmluZyYgc2NyaQogICAgIGJvb2wgb2xkQWxsb3dQb3B1cHMgPSBmcmFtZS0+
c2NyaXB0KCktPmFsbG93UG9wdXBzRnJvbVBsdWdpbigpOwogICAgIGZyYW1lLT5zY3JpcHQoKS0+
c2V0QWxsb3dQb3B1cHNGcm9tUGx1Z2luKGFsbG93UG9wdXBzKTsKICAgICAKLSAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBnbG9iYWxP
YmplY3QtPmdsb2JhbERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIENvbXBsZXRp
b24gY29tcGxldGlvbiA9IEpTQzo6ZXZhbHVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0LT5nbG9iYWxT
Y29wZUNoYWluKCksIG1ha2VTb3VyY2Uoc2NyaXB0KSk7Ci0gICAgZ2xvYmFsT2JqZWN0LT5nbG9i
YWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKKyAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS50aW1lb3V0Q2hlY2tlci5zdG9wKCk7CiAgICAgQ29tcGxUeXBlIHR5cGUgPSBjb21w
bGV0aW9uLmNvbXBsVHlwZSgpOwogCiAgICAgZnJhbWUtPnNjcmlwdCgpLT5zZXRBbGxvd1BvcHVw
c0Zyb21QbHVnaW4ob2xkQWxsb3dQb3B1cHMpOwpAQCAtOTIxLDkgKzkyMSw5IEBAIGJvb2wgTmV0
c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5OjppbnZva2UodWludDMyX3Qgb2JqZWN0SUQsIGNvbnN0
IElkZW50aWZpZXImIG1lCiAgICAgZGVtYXJzaGFsVmFsdWVzKGV4ZWMsIGFyZ3VtZW50c0RhdGEs
IGFyZ3VtZW50c0xlbmd0aCwgYXJnTGlzdCk7CiAKICAgICBQcm90ZWN0ZWRQdHI8SlNHbG9iYWxP
YmplY3Q+IGdsb2JhbE9iamVjdCA9IGZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KHBsdWdp
bldvcmxkKCkpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tl
ci5zdGFydCgpOworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2Vy
LnN0YXJ0KCk7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgb2JqZWN0LCBhcmdMaXN0KTsKLSAgICBnbG9iYWxPYmplY3QtPmdsb2Jh
bERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgpOworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFs
RGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsKICAgICAgICAgCiAgICAgbWFyc2hhbFZhbHVl
KGV4ZWMsIHZhbHVlLCByZXN1bHREYXRhLCByZXN1bHRMZW5ndGgpOwogICAgIGV4ZWMtPmNsZWFy
RXhjZXB0aW9uKCk7CkBAIC05NTYsOSArOTU2LDkgQEAgYm9vbCBOZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHk6Omludm9rZURlZmF1bHQodWludDMyX3Qgb2JqZWN0SUQsIGRhdGFfdCBhcmd1bWUK
ICAgICBkZW1hcnNoYWxWYWx1ZXMoZXhlYywgYXJndW1lbnRzRGF0YSwgYXJndW1lbnRzTGVuZ3Ro
LCBhcmdMaXN0KTsKIAogICAgIFByb3RlY3RlZFB0cjxKU0dsb2JhbE9iamVjdD4gZ2xvYmFsT2Jq
ZWN0ID0gZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QocGx1Z2luV29ybGQoKSk7Ci0gICAg
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCktPnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CisgICAg
Z2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RhcnQoKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gY2FsbChleGVjLCBvYmplY3QsIGNhbGxUeXBlLCBjYWxsRGF0YSwgb2Jq
ZWN0LCBhcmdMaXN0KTsKLSAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENo
ZWNrZXIuc3RvcCgpOworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVj
a2VyLnN0b3AoKTsKICAgICAKICAgICBtYXJzaGFsVmFsdWUoZXhlYywgdmFsdWUsIHJlc3VsdERh
dGEsIHJlc3VsdExlbmd0aCk7CiAgICAgZXhlYy0+Y2xlYXJFeGNlcHRpb24oKTsKQEAgLTk5Miw5
ICs5OTIsOSBAQCBib29sIE5ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6Y29uc3RydWN0KHVp
bnQzMl90IG9iamVjdElELCBkYXRhX3QgYXJndW1lbnRzRAogICAgIGRlbWFyc2hhbFZhbHVlcyhl
eGVjLCBhcmd1bWVudHNEYXRhLCBhcmd1bWVudHNMZW5ndGgsIGFyZ0xpc3QpOwogCiAgICAgUHJv
dGVjdGVkUHRyPEpTR2xvYmFsT2JqZWN0PiBnbG9iYWxPYmplY3QgPSBmcmFtZS0+c2NyaXB0KCkt
Pmdsb2JhbE9iamVjdChwbHVnaW5Xb3JsZCgpKTsKLSAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKS0+dGltZW91dENoZWNrZXIuc3RhcnQoKTsKKyAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERh
dGEoKS50aW1lb3V0Q2hlY2tlci5zdGFydCgpOwogICAgIEpTVmFsdWUgdmFsdWUgPSBKU0M6OmNv
bnN0cnVjdChleGVjLCBvYmplY3QsIGNvbnN0cnVjdFR5cGUsIGNvbnN0cnVjdERhdGEsIGFyZ0xp
c3QpOwotICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdG9w
KCk7CisgICAgZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkudGltZW91dENoZWNrZXIuc3RvcCgp
OwogICAgIAogICAgIG1hcnNoYWxWYWx1ZShleGVjLCB2YWx1ZSwgcmVzdWx0RGF0YSwgcmVzdWx0
TGVuZ3RoKTsKICAgICBleGVjLT5jbGVhckV4Y2VwdGlvbigpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlNjcmlwdERlYnVnRGVsZWdhdGUubW0gYi9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQppbmRleCA5ZmZkMzZlLi42M2E5MWE5IDEwMDY0
NAotLS0gYS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQorKysg
Yi9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViU2NyaXB0RGVidWdEZWxlZ2F0ZS5tbQpAQCAtMjM2LDcg
KzIzNiw3IEBAIE5TU3RyaW5nICogY29uc3QgV2ViU2NyaXB0RXJyb3JMaW5lTnVtYmVyS2V5ID0g
QCJXZWJTY3JpcHRFcnJvckxpbmVOdW1iZXIiOwogICAgIC8vIFdlYlNjcmlwdENhbGxGcmFtZS4g
SW5zdGVhZCwgd2UgbmVlZCB0byBzZXQgdGhlIGR5bmFtaWMgZ2xvYmFsIG9iamVjdAogICAgIC8v
IGFuZCBldmFsdWF0ZSB0aGUgSlMgaW4gdGhlIGdsb2JhbCBvYmplY3QncyBnbG9iYWwgY2FsbCBm
cmFtZS4KICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gX3ByaXZhdGUtPmRlYnVn
Z2VyLT5nbG9iYWxPYmplY3QoKTsKLSAgICBpZiAoc2VsZiA9PSBfcHJpdmF0ZS0+ZGVidWdnZXIt
Pmdsb2JhbENhbGxGcmFtZSgpICYmICFnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+ZHluYW1p
Y0dsb2JhbE9iamVjdCkgeworICAgIGlmIChzZWxmID09IF9wcml2YXRlLT5kZWJ1Z2dlci0+Z2xv
YmFsQ2FsbEZyYW1lKCkgJiYgIWdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLmR5bmFtaWNHbG9i
YWxPYmplY3QpIHsKICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IF9wcml2
YXRlLT5kZWJ1Z2dlci0+Z2xvYmFsT2JqZWN0KCk7CiAKICAgICAgICAgRHluYW1pY0dsb2JhbE9i
amVjdFNjb3BlIGdsb2JhbE9iamVjdFNjb3BlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBn
bG9iYWxPYmplY3QpOwpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCAzN2U4ODRkLi5hNjk2NmRiIDEwMDY0NAotLS0gYS9XZWJLaXQyL0NoYW5n
ZUxvZworKysgYi9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEwLTEwLTIw
ICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVbmlmeSBnbG9iYWxEYXRhIEFQSXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQ3OTY5CisKKyAgICAgICAg
QWRhcHQgY29kZSB0byBKU0dsb2JhbE9iamVjdDo6Z2xvYmFsRGF0YSByZXR1cm5pbmcgYSByZWZl
cmVuY2UKKyAgICAgICAgaW5zdGVhZCBvZiBhIHBvaW50ZXIuCisKKyAgICAgICAgKiBXZWJQcm9j
ZXNzL1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TlBS
dW50aW1lT2JqZWN0TWFwOjpnZXRPckNyZWF0ZUpTT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6
TlBSdW50aW1lT2JqZWN0TWFwOjpldmFsdWF0ZSk6CisKIDIwMTAtMTAtMTkgIEFuZGVycyBDYXJs
c3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2Vp
bmlnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTlBSdW50aW1lT2Jq
ZWN0TWFwLmNwcCBiL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05QUnVudGltZU9iamVjdE1h
cC5jcHAKaW5kZXggZTBmYWE1Yi4uYTM5YmFhZSAxMDA2NDQKLS0tIGEvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1BsdWdpbnMvTlBSdW50aW1lT2JqZWN0TWFwLmNwcAorKysgYi9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9OUFJ1bnRpbWVPYmplY3RNYXAuY3BwCkBAIC05Niw3ICs5Niw3IEBAIEpTT2Jq
ZWN0KiBOUFJ1bnRpbWVPYmplY3RNYXA6OmdldE9yQ3JlYXRlSlNPYmplY3QoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwKICAgICBpZiAoSlNOUE9iamVjdCoganNOUE9iamVjdCA9IG1fanNO
UE9iamVjdHMuZ2V0KG5wT2JqZWN0KSkKICAgICAgICAgcmV0dXJuIGpzTlBPYmplY3Q7CiAKLSAg
ICBKU05QT2JqZWN0KiBqc05QT2JqZWN0ID0gbmV3IChnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEo
KSkgSlNOUE9iamVjdChnbG9iYWxPYmplY3QsIHRoaXMsIG5wT2JqZWN0KTsKKyAgICBKU05QT2Jq
ZWN0KiBqc05QT2JqZWN0ID0gbmV3ICgmZ2xvYmFsT2JqZWN0LT5nbG9iYWxEYXRhKCkpIEpTTlBP
YmplY3QoZ2xvYmFsT2JqZWN0LCB0aGlzLCBucE9iamVjdCk7CiAgICAgbV9qc05QT2JqZWN0cy5z
ZXQobnBPYmplY3QsIGpzTlBPYmplY3QpOwogCiAgICAgcmV0dXJuIGpzTlBPYmplY3Q7CkBAIC0x
OTUsOSArMTk1LDkgQEAgYm9vbCBOUFJ1bnRpbWVPYmplY3RNYXA6OmV2YWx1YXRlKE5QT2JqZWN0
KiBucE9iamVjdCwgY29uc3QgU3RyaW5nJnNjcmlwdFN0cmluZywKICAgICBKU0xvY2sgbG9jayhT
aWxlbmNlQXNzZXJ0aW9uc09ubHkpOwogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZ2V0T3JDcmVh
dGVKU09iamVjdChnbG9iYWxPYmplY3QsIG5wT2JqZWN0KTsKIAotICAgIGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLT50aW1lb3V0Q2hlY2tlci5zdGFydCgpOworICAgIGdsb2JhbE9iamVjdC0+
Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0YXJ0KCk7CiAgICAgQ29tcGxldGlvbiBjb21w
bGV0aW9uID0gSlNDOjpldmFsdWF0ZShleGVjLCBnbG9iYWxPYmplY3QtPmdsb2JhbFNjb3BlQ2hh
aW4oKSwgbWFrZVNvdXJjZShVU3RyaW5nKHNjcmlwdFN0cmluZy5pbXBsKCkpKSwgdGhpc1ZhbHVl
KTsKLSAgICBnbG9iYWxPYmplY3QtPmdsb2JhbERhdGEoKS0+dGltZW91dENoZWNrZXIuc3RvcCgp
OworICAgIGdsb2JhbE9iamVjdC0+Z2xvYmFsRGF0YSgpLnRpbWVvdXRDaGVja2VyLnN0b3AoKTsK
IAogICAgIENvbXBsVHlwZSBjb21wbGV0aW9uVHlwZSA9IGNvbXBsZXRpb24uY29tcGxUeXBlKCk7
CiAKLS0gCjEuNy4yLjMKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>