<?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>107020</bug_id>
          
          <creation_ts>2013-01-16 08:51:15 -0800</creation_ts>
          <short_desc>[V8] Make a creationContext parameter of toV8() mandatory</short_desc>
          <delta_ts>2013-01-16 11:23:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dcarney</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>808403</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-16 08:51:15 -0800</bug_when>
    <thetext>Currently a creationContext parameter of toV8() is optional:

  Handle&lt;Value&gt; toV8(..., Handle&lt;Object&gt; creationContext = Handle&lt;Object&gt;(), ...) {
    ...;
  }

On the other hand, looking at the implementation of V8WrapperInstantiationScope:

    explicit V8WrapperInstantiationScope(v8::Handle&lt;v8::Object&gt; creationContext)
        : m_didEnterContext(false)
        , m_context(v8::Context::GetCurrent())
    {
        if (creationContext.IsEmpty()) // We do nothing for this case!
            return;
        v8::Handle&lt;v8::Context&gt; contextForWrapper = creationContext-&gt;CreationContext();
        if (contextForWrapper == m_context)
            return;
        m_context = v8::Local&lt;v8::Context&gt;::New(contextForWrapper);
        m_didEnterContext = true;
        m_context-&gt;Enter();
    }

we&apos;re assuming that a creationContext parameter is passed to toV8() when a creationContext exists. In other words, if we forget to pass a creationContext parameter, we will end up with creating an object on the current context, which is wrong. To avoid the mistake, we should make the creationContext parameter mandatory. When we really do not have a creationContext, we can pass Handle&lt;Object&gt;() explicitly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808407</commentid>
    <comment_count>1</comment_count>
      <attachid>182993</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-01-16 08:55:51 -0800</bug_when>
    <thetext>Created attachment 182993
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808531</commentid>
    <comment_count>2</comment_count>
      <attachid>182993</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-16 10:59:38 -0800</bug_when>
    <thetext>Comment on attachment 182993
Patch

Yeah, we should really pass non-empty handles in all these places.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808559</commentid>
    <comment_count>3</comment_count>
      <attachid>182993</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 11:23:06 -0800</bug_when>
    <thetext>Comment on attachment 182993
Patch

Clearing flags on attachment: 182993

Committed r139900: &lt;http://trac.webkit.org/changeset/139900&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>808560</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-16 11:23:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182993</attachid>
            <date>2013-01-16 08:55:51 -0800</date>
            <delta_ts>2013-01-16 11:23:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107020-20130116175252.patch</filename>
            <type>text/plain</type>
            <size>44473</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTU0YWI2NGE3MWQxNTNm
MGVjZWU3MjQzMTQxYjA4YzBiOWViOTFjYS4uNWZmYjg5NDc0N2VjN2JhMDZhYzhhMWZlNWU2OWQz
ZWJiZTUxNzg3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNCBAQAorMjAxMy0wMS0xNiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBNYWtlIGEg
Y3JlYXRpb25Db250ZXh0IHBhcmFtZXRlciBvZiB0b1Y4KCkgbWFuZGF0b3J5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMjAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgYSBjcmVhdGlv
bkNvbnRleHQgcGFyYW1ldGVyIG9mIHRvVjgoKSBpcyBvcHRpb25hbDoKKworICAgICAgICAgIEhh
bmRsZTxWYWx1ZT4gdG9WOCguLi4sIEhhbmRsZTxPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IEhh
bmRsZTxPYmplY3Q+KCksIC4uLikgeworICAgICAgICAgICAgLi4uOworICAgICAgICAgIH0KKwor
ICAgICAgICBPbiB0aGUgb3RoZXIgaGFuZCwgbG9va2luZyBhdCB0aGUgaW1wbGVtZW50YXRpb24g
b2YKKyAgICAgICAgVjhXcmFwcGVySW5zdGFudGlhdGlvblNjb3BlOgorCisgICAgICAgICAgICBl
eHBsaWNpdCBWOFdyYXBwZXJJbnN0YW50aWF0aW9uU2NvcGUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQpCisgICAgICAgICAgICAgICAgOiBtX2RpZEVudGVyQ29udGV4dChm
YWxzZSkKKyAgICAgICAgICAgICAgICAsIG1fY29udGV4dCh2ODo6Q29udGV4dDo6R2V0Q3VycmVu
dCgpKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChjcmVhdGlvbkNvbnRleHQu
SXNFbXB0eSgpKSAvLyBXZSBkbyBub3RoaW5nIGZvciB0aGlzIGNhc2UhCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBj
b250ZXh0Rm9yV3JhcHBlciA9IGNyZWF0aW9uQ29udGV4dC0+Q3JlYXRpb25Db250ZXh0KCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGNvbnRleHRGb3JXcmFwcGVyID09IG1fY29udGV4dCkKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIG1fY29udGV4dCA9IHY4OjpM
b2NhbDx2ODo6Q29udGV4dD46Ok5ldyhjb250ZXh0Rm9yV3JhcHBlcik7CisgICAgICAgICAgICAg
ICAgbV9kaWRFbnRlckNvbnRleHQgPSB0cnVlOworICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
RW50ZXIoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICB3ZSdyZSBhc3N1bWluZyB0aGF0IGEg
Y3JlYXRpb25Db250ZXh0IHBhcmFtZXRlciBpcyBwYXNzZWQKKyAgICAgICAgdG8gdG9WOCgpIHdo
ZW4gYSBjcmVhdGlvbkNvbnRleHQgZXhpc3RzLiBJbiBvdGhlciB3b3JkcywKKyAgICAgICAgaWYg
d2UgZm9yZ2V0IHRvIHBhc3MgYSBjcmVhdGlvbkNvbnRleHQgcGFyYW1ldGVyLCB3ZSB3aWxsCisg
ICAgICAgIGVuZCB1cCB3aXRoIGNyZWF0aW5nIGFuIG9iamVjdCBvbiB0aGUgY3VycmVudCBjb250
ZXh0LCB3aGljaAorICAgICAgICBpcyB3cm9uZy4gVG8gYXZvaWQgdGhlIG1pc3Rha2UsIHdlIHNo
b3VsZCBtYWtlIHRoZQorICAgICAgICBjcmVhdGlvbkNvbnRleHQgcGFyYW1ldGVyIG1hbmRhdG9y
eS4gV2hlbiB3ZSByZWFsbHkgZG8gbm90CisgICAgICAgIGhhdmUgYSBjcmVhdGlvbkNvbnRleHQs
IHdlIGNhbiBwYXNzIEhhbmRsZTxPYmplY3Q+KCkgZXhwbGljaXRseS4KKworICAgICAgICBObyB0
ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUhlYWRlcik6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5Lmg6CisgICAgICAgIChX
ZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0Lmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRp
YVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6dG9WOCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgp
OgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29u
c3RydWN0b3JzLmg6CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmg6
CisgICAgICAgIChXZWJDb3JlOjp0b1Y4KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmluamVjdElEQktleUludG9TY3Jp
cHRWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppZGJLZXlUb1NjcmlwdFZhbHVlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmNyZWF0ZVNjcmlwdE9iamVjdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVy
OjpjcmVhdGVTY3JpcHRPYmplY3RGb3JQbHVnaW5FbGVtZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHREZWJ1
Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0
T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEFic3RyYWN0RXZlbnRMaXN0ZW5lcjo6aGFuZGxlRXZlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmdldFJlY2VpdmVyT2JqZWN0
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4RE9NV2luZG93U2hlbGw6OnVwZGF0ZURvY3VtZW50UHJvcGVydHkpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6dG9PYmplY3RXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOE11dGF0aW9u
Q2FsbGJhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhNdXRhdGlvbkNhbGxiYWNrOjpoYW5k
bGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlY4Tm9kZUZpbHRlckNvbmRpdGlvbjo6YWNjZXB0Tm9kZSk6
CisgICAgICAgICogYmluZGluZ3MvdjgvVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpoYW5kbGVF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpWOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyOjpn
ZXRSZWNlaXZlck9iamVjdCk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3VzdG9t
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFNRTFN0
YXRlbWVudEVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5qZWN0ZWRTY3JpcHRIb3N0Ojpub2RlQXNTY3JpcHRWYWx1ZSk6CisgICAgICAgICogY3Nz
L01lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6cXVlcnlDaGFuZ2VkKToKKyAgICAgICAgKiB0ZXN0aW5nL3Y4L1dlYkNv
cmVUZXN0U3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlVGVzdFN1cHBvcnQ6OmluamVjdElu
dGVybmFsc09iamVjdCk6CisKIDIwMTMtMDEtMTQgIEtlbnRhcm8gSGFyYSAgPGhhcmFrZW5AY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFtWOF0gTWFrZSBhbiBJc29sYXRlIHBhcmFtZXRlciBtYW5k
YXRvcnkgaW4gU2VyaWFsaXplZFNjcmlwdFZhbHVlIG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cKaW5kZXggMGIzYzI3MGVhMDc0N2U1YjRmMDFhMjNkY2M0MTgyMTgwMjBlYTRhNy4uMmY2
ODZjZGRjNGQzNjkzNWFjZTNkYmU1MDk5YjIyZmI3YWFmYjAxMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyNiBAQAorMjAxMy0wMS0xNiAgS2VudGFybyBIYXJhICA8aGFy
YWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBNYWtlIGEgY3JlYXRpb25Db250ZXh0
IHBhcmFtZXRlciBvZiB0b1Y4KCkgbWFuZGF0b3J5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDcwMjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBXZSBwYXNzIEhhbmRsZTxPYmplY3Q+KCkgdG8gYSBjcmVh
dGlvbkNvbnRleHQgcGFyYW1ldGVyIG9mCisgICAgICAgIHRvVjgoKSB3aGVuIHdlIGRvIG5vdCBo
YXZlIGEgY3JlYXRpb25Db250ZXh0LgorCisgICAgICAgIE5vIHRlc3RzLiBObyBjaGFuZ2UgaW4g
YmVoYXZpb3IuCisKKyAgICAgICAgKiBzcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBsOjp3aW5kb3dP
YmplY3RDbGVhcmVkKToKKyAgICAgICAgKiBzcmMvV2ViQXJyYXlCdWZmZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBcnJheUJ1ZmZlcjo6dG9WOFZhbHVlKToKKyAgICAgICAgKiBzcmMvV2Vi
QmxvYi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkJsb2I6OnRvVjhWYWx1ZSk6CisgICAgICAg
ICogc3JjL1dlYkZyYW1lSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6
Y3JlYXRlRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6Y3JlYXRl
U2VyaWFsaXphYmxlRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lSW1wbDo6
Y3JlYXRlRmlsZUVudHJ5KToKKwogMjAxMi0xMi0yOCAgVnNldm9sb2QgVmxhc292ICA8dnNldmlr
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTdXBwb3J0IGluc3BlY3Rv
ciBmaWxlIHN5c3RlbSBhY2Nlc3Mgd2l0aCBpc29sYXRlZCBmaWxlIHN5c3RlbSB0aHJvdWdoIElu
c3BlY3RvckZyb250ZW5kSG9zdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXggZWQ3NTA0NDllYjEwZjZjNmJmMWNiYmQxMTUy
NmJlOWZiOWEwZTg5Mi4uNWI3MjhjMzEwZWE5YmI2ZmFiZjg4NzgzOTgwMzZhMDc3YmY1Y2VjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
VjgucG0KQEAgLTUzMCw3ICs1MzAsNyBAQCBFTkQKICAgICAgICAgZGllICJNdXN0IGhhdmUgY3Vz
dG9tIHRvVjhcbiIgaWYgISRjdXN0b21XcmFwOwogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7CiBjbGFzcyAke25hdGl2ZVR5cGV9Owotdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoJHtuYXRpdmVUeXBlfSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogPSAwKTsKK3Y4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlwZX0qLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqID0gMCk7CiAKIHRlbXBsYXRlPGNsYXNzIEhv
bGRlckNvbnRhaW5lciwgY2xhc3MgV3JhcHBhYmxlPgogaW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4RmFzdCgke25hdGl2ZVR5cGV9KiBpbXBsLCBjb25zdCBIb2xkZXJDb250YWluZXIm
IGNvbnRhaW5lciwgV3JhcHBhYmxlKikKQEAgLTU2MSw3ICs1NjEsNyBAQCBFTkQKIAogICAgICAg
ICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOCgke25hdGl2ZVR5cGV9KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KCR7bmF0aXZlVHlw
ZX0qIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAg
cmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8ICR7bmF0aXZlVHlw
ZX0gPiBpbXBsLCBjb25zdCBIbwogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250
YWluZXIsIHdyYXBwYWJsZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChQYXNzUmVmUHRyPCAke25hdGl2ZVR5cGV9ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVm
UHRyPCAke25hdGl2ZVR5cGV9ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChp
bXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApp
bmRleCA5ZTUwNmJkNDYyNmYyYTMzZTAwOGFlOGY0Yzc2MDAyZTQ2MzMwM2I2Li5mNWViZDcwMGUw
YzM4MTBjYTY1ZjgxMjI2MmY5MTllNTQ3MDhjOGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuaApAQCAtNTYs
NyArNTYsNyBAQCBwcml2YXRlOgogCiB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoRmxvYXQ2
NEFycmF5KiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6
Oklzb2xhdGUqKTsKIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEZsb2F0NjRB
cnJheSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0QXJyYXkqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7
CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVj
ayhpc29sYXRlKTsKQEAgLTgzLDcgKzgzLDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBGbG9hdDY0QXJyYXkgPiBpbXBsLCBjb25zdCBIb2wKICAg
ICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwogfQog
Ci1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgRmxvYXQ2NEFy
cmF5ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBGbG9hdDY0QXJyYXkgPiBpbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwKQogewogICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4
dCwgaXNvbGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZmExY2Ex
NjQ4YTY4NDdlZTliYzMyODk2MTRkNjQ2ZWFkM2ZkMjAxYS4uYWFmNmIyZWQxNzM3OTIxNGE4YzU4
MGQ4YzI3MzFiODRkNWIxZmNlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAt
NjEsNyArNjEsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RBY3Rp
dmVET01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBWOFRlc3RB
Y3RpdmVET01PYmplY3Q6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29s
YXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RBY3RpdmVE
T01PYmplY3QqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEFjdGl2ZURPTU9iamVjdCogaW1wbCwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29s
YXRlID0gMCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhO
dWxsV2l0aENoZWNrKGlzb2xhdGUpOwpAQCAtODgsNyArODgsNyBAQCBpbmxpbmUgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RBY3RpdmVET01PYmplY3QgPiBp
bXBsLCBjbwogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBw
YWJsZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRy
PCBUZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29s
YXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBU
ZXN0QWN0aXZlRE9NT2JqZWN0ID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChp
bXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuaAppbmRleCAxMjhlMjIzZGJlOWJhNDE4NmVkMTAyMWJhZGY4Mzc1MjM4
M2JhMTljLi4wMzE4MTNlYmJkOWM5YzhiYmE2N2I3ZWUxN2NiZGZhYzllMDg1NDNjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtNjAsNyArNjAsNyBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6TwogICAgIHJldHVybiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6Y3JlYXRl
V3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiBpbXBsLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB0b1Y4KFRlc3RDdXN0b21OYW1lZEdldHRlciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBp
ZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xh
dGUpOwpAQCAtODcsNyArODcsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhG
YXN0KFBhc3NSZWZQdHI8IFRlc3RDdXN0b21OYW1lZEdldHRlciA+IGltcGwsCiAgICAgcmV0dXJu
IHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKIH0KIAotaW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RDdXN0b21OYW1lZEdl
dHRlciA+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdEN1c3RvbU5hbWVkR2V0
dGVyID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgpLCBjcmVh
dGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgK
aW5kZXggZDNiYTI1NzIzNTM1ZDU2MDc5NzMxOTMyOGRiMThiZmQxOWQyYWM5My4uMTNmMzdlMjc1
NzY3YmI3ZjNkNjEzZDNhOGI4MDc3MmIxYmU5YWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5oCkBAIC02MSw3ICs2MSw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IHdyYXAoVGVzdEV2ZW50Q29uc3RydWN0b3IqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iCiAgICAg
cmV0dXJuIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRp
b25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0
b1Y4KFRlc3RFdmVudENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RFdmVudENv
bnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwg
djg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAg
ICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CkBAIC04OCw3ICs4OCw3IEBA
IGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEV2
ZW50Q29uc3RydWN0b3IgPiBpbXBsLCBjCiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCks
IGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RFdmVudENvbnN0cnVjdG9yID4gaW1wbCwgdjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCks
IHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOChQYXNzUmVmUHRyPCBUZXN0RXZlbnRDb25zdHJ1Y3RvciA+IGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7
CiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggZTk1ZWQ0ZGYyMGE0ZGM5MDgwZGRjZjJiYTJj
MjRmNjQ3NGE3NzY5Ny4uNjI5NmQ3MDM0Yjk4MTFhZDA4N2FhNDBmMGFhYWZjYTUzOTVjNzUyZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTYyLDcgKzYyLDcgQEAgaW5saW5lIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gd3JhcChUZXN0RXZlbnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4KICAgICByZXR1cm4gVjhUZXN0RXZlbnRUYXJnZXQ6OmNyZWF0ZVdyYXBwZXIoaW1w
bCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KFRlc3RFdmVudFRhcmdldCogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRl
KiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0RXZl
bnRUYXJnZXQqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAg
ICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKQEAgLTg5LDcgKzg5LDcgQEAg
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0RXZl
bnRUYXJnZXQgPiBpbXBsLCBjb25zdAogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBj
b250YWluZXIsIHdyYXBwYWJsZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dG9WOChQYXNzUmVmUHRyPCBUZXN0RXZlbnRUYXJnZXQgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBh
c3NSZWZQdHI8IFRlc3RFdmVudFRhcmdldCA+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgcmV0dXJu
IHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uaAppbmRleCA0MGQyN2I0MTViOTI0YWQ3ZTQ3MmZjMzJhZGZjNzVlOGI2MmZiMzhhLi5m
OTcyMmUzNDI2NzIwZjYyOTcwNmQ2NzRjNzcwZWFhZDFkMzU3ZDlmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlv
bi5oCkBAIC01OSw3ICs1OSw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAo
VGVzdEV4Y2VwdGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjCiAgICAgcmV0dXJu
IFY4VGVzdEV4Y2VwdGlvbjo6Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlz
b2xhdGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdEV4Y2Vw
dGlvbiogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0RXhjZXB0aW9uKiBpbXBsLCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQog
ewogICAgIGlmIChVTkxJS0VMWSghaW1wbCkpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hl
Y2soaXNvbGF0ZSk7CkBAIC04Niw3ICs4Niw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwgVGVzdEV4Y2VwdGlvbiA+IGltcGwsIGNvbnN0IEhvCiAg
ICAgcmV0dXJuIHRvVjhGYXN0KGltcGwuZ2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKIH0K
IAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RFeGNl
cHRpb24gPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQoraW5saW5l
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RFeGNlcHRpb24gPiBp
bXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUgPSAwKQogewogICAgIHJldHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXggY2I2YWJhMzY2M2ViNGQ4
Njc5MjkyNTEzMjE3OWEwNzdjYTg3NDc4Zi4uOWI2M2ZmNTUwMzFkMmJiZmU2ZGY4MjNmMWI3N2Ri
NzBlMjU1YTVmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApAQCAtNjQsNyArNjQsNyBAQCBpbmxpbmUg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gYwogICAgIHJldHVybiBWOFRlc3RJbnRlcmZhY2U6OmNyZWF0ZVdyYXBw
ZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNv
bGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVz
dEludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQog
ICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwpAQCAtOTEsNyArOTEsNyBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RJ
bnRlcmZhY2UgPiBpbXBsLCBjb25zdCBIbwogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgp
LCBjb250YWluZXIsIHdyYXBwYWJsZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJ
c29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQ
YXNzUmVmUHRyPCBUZXN0SW50ZXJmYWNlID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBj
cmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4g
dG9WOChpbXBsLmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKaW5kZXggNGZiNzA2NWM3N2ZhNjU1NjQy
ZTRmZTcwZTZmN2ViMDI5ZDdhMmJjOC4uMTU1YWM0ZGU0NmI3YzBiNDMxZTA4MmE2YzMzMmJmNWJj
ZThlYWU5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBA
IC01OSw3ICs1OSw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIqIGltcGwsIHY4OjpIYW5kbGU8CiAgICAgcmV0dXJuIFY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250
ZXh0LCBpc29sYXRlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNy
ZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIGlmIChVTkxJS0VMWSghaW1w
bCkpCiAgICAgICAgIHJldHVybiB2OE51bGxXaXRoQ2hlY2soaXNvbGF0ZSk7CkBAIC04Niw3ICs4
Niw3IEBAIGlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOEZhc3QoUGFzc1JlZlB0cjwg
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgPiBpCiAgICAgcmV0dXJuIHRvVjhGYXN0KGltcGwu
Z2V0KCksIGNvbnRhaW5lciwgd3JhcHBhYmxlKTsKIH0KIAotaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4KFBhc3NSZWZQdHI8IFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyID4gaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciA+
IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25D
b250ZXh0LCBpc29sYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oCmluZGV4
IGE1ZmYzMTRhNTkzZTFjYTFkZWRjMjkyNWVkYjM2NjQxMGNiOTg3NjIuLmUyNTYyMzlhNWU2ZmQ0
MDhjZThkM2NjMWRmZTBjZTBjMWEwZjg4M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0
b3IuaApAQCAtNjYsNyArNjYsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFw
KFRlc3ROYW1lZENvbnN0cnVjdG9yKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYgogICAgIHJldHVy
biBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNyZWF0aW9uQ29u
dGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChU
ZXN0TmFtZWRDb25zdHJ1Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlv
bkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRl
ID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0TmFtZWRDb25zdHJ1
Y3RvciogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJ
c29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAg
ICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwpAQCAtOTMsNyArOTMsNyBAQCBpbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3ROYW1lZENv
bnN0cnVjdG9yID4gaW1wbCwgYwogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250
YWluZXIsIHdyYXBwYWJsZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9W
OChQYXNzUmVmUHRyPCBUZXN0TmFtZWRDb25zdHJ1Y3RvciA+IGltcGwsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6
SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgo
UGFzc1JlZlB0cjwgVGVzdE5hbWVkQ29uc3RydWN0b3IgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAg
IHJldHVybiB0b1Y4KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuaAppbmRleCBkZTkzZDJkYWQwZDBkMzIxN2JkYjBlZmVjYTdkYTUwZmRlYjkzMGQyLi43ZGY0
MjA0OGU2NmI3MmE3YzNjMWM4MjIwZTFhZGFjNjE2YmMyNzkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKQEAgLTYwLDcg
KzYwLDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0Tm9kZSogaW1w
bCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGkKICAgICByZXR1cm4gVjhUZXN0Tm9kZTo6
Y3JlYXRlV3JhcHBlcihpbXBsLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQogCi1pbmxp
bmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2
ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRv
VjgoVGVzdE5vZGUqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkK
ICAgICAgICAgcmV0dXJuIHY4TnVsbFdpdGhDaGVjayhpc29sYXRlKTsKQEAgLTg3LDcgKzg3LDcg
QEAgaW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0
Tm9kZSA+IGltcGwsIGNvbnN0IEhvbGRlckMKICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQo
KSwgY29udGFpbmVyLCB3cmFwcGFibGUpOwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdE5vZGUgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW9uQ29udGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUgPSAwKQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFBhc3NS
ZWZQdHI8IFRlc3ROb2RlID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBs
LmdldCgpLCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IDE0MDM5YmE4
YWY0NzQ1ZjIyOTZmMTE2YTBlZTcyMDcwYmMxOWYzY2IuLjhkNjJiZGNlZjkzYTU5NDg2OWE5MzI3
YzFkMzA0ODc2ZTNiZDBmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKQEAgLTY1LDcgKzY1LDcgQEAgaW5saW5lIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gd3JhcChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNyZWF0aW8KICAgICByZXR1cm4gVjhUZXN0T2JqOjpjcmVhdGVXcmFwcGVyKGltcGwsIGNy
ZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChUZXN0T2JqKiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAw
KQoraW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RPYmoqIGltcGwsIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IDApCiB7CiAgICAgaWYgKFVOTElLRUxZKCFpbXBsKSkKICAgICAgICAgcmV0dXJuIHY4TnVsbFdp
dGhDaGVjayhpc29sYXRlKTsKQEAgLTkyLDcgKzkyLDcgQEAgaW5saW5lIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB0b1Y4RmFzdChQYXNzUmVmUHRyPCBUZXN0T2JqID4gaW1wbCwgY29uc3QgSG9sZGVy
Q28KICAgICByZXR1cm4gdG9WOEZhc3QoaW1wbC5nZXQoKSwgY29udGFpbmVyLCB3cmFwcGFibGUp
OwogfQogCi1pbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVz
dE9iaiA+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0ID0gdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitpbmxpbmUg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdE9iaiA+IGltcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IDApCiB7CiAgICAgcmV0dXJuIHRvVjgoaW1wbC5nZXQoKSwgY3JlYXRpb25Db250ZXh0LCBp
c29sYXRlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCmlu
ZGV4IGI2ZTAyMTkxNGZlOWQzMWRlZDZlOTIxMmJjOGUwMjNmMThjZmRhMzEuLmY4Mzc2NDljZTQz
ZTc2NzQxMDEwMmIxMzc5N2M3NWIzYmZjOTFkYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtNjQsNyArNjQsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiBpbXBsLCB2ODo6SGFu
ZGxlPAogICAgIHJldHVybiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGVXcmFw
cGVyKGltcGwsIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CiAKLWlubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdG9WOChUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyogaW1wbCwgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsK
ICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQogICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNr
KGlzb2xhdGUpOwpAQCAtOTEsNyArOTEsNyBAQCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzID4gaQogICAg
IHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgpLCBjb250YWluZXIsIHdyYXBwYWJsZSk7CiB9CiAK
LWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0T3Zlcmxv
YWRlZENvbnN0cnVjdG9ycyA+IGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9
IDApCitpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoUGFzc1JlZlB0cjwgVGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgPiBpbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0
aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqIGlzb2xhdGUgPSAwKQogewogICAgIHJldHVybiB0b1Y4
KGltcGwuZ2V0KCksIGNyZWF0aW9uQ29udGV4dCwgaXNvbGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggNTkyYjgz
MjllZjlkYjA4NWUxOGJlZDQ5MTBmMzExN2VmN2IyOTE3NS4uMzQ2NGE5Yzg4MDYxYjVkODlkZDI3
NGM0YmYxZDQ3ZWE3NWFhNzZhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaApAQCAtNjIsNyArNjIsNyBAQCBpbmxpbmUgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uq
IGltcGwsIHY4OgogICAgIHJldHVybiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2U6OmNyZWF0ZVdyYXBwZXIoaW1wbCwgY3JlYXRpb25Db250ZXh0LCBpc29sYXRlKTsKIH0KIAot
aW5saW5lIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UqIGltcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0
ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApCitp
bmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSogaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICBpZiAoVU5MSUtFTFkoIWltcGwpKQog
ICAgICAgICByZXR1cm4gdjhOdWxsV2l0aENoZWNrKGlzb2xhdGUpOwpAQCAtODksNyArODksNyBA
QCBpbmxpbmUgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjhGYXN0KFBhc3NSZWZQdHI8IFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcgogICAgIHJldHVybiB0b1Y4RmFzdChpbXBsLmdldCgp
LCBjb250YWluZXIsIHdyYXBwYWJsZSk7CiB9CiAKLWlubGluZSB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlID4g
aW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQgPSB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+KCksIHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKK2lubGluZSB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdG9WOChQYXNzUmVmUHRyPCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlID4gaW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQs
IHY4OjpJc29sYXRlKiBpc29sYXRlID0gMCkKIHsKICAgICByZXR1cm4gdG9WOChpbXBsLmdldCgp
LCBjcmVhdGlvbkNvbnRleHQsIGlzb2xhdGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvSURCQmluZGluZ1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9JREJCaW5kaW5nVXRpbGl0aWVzLmNwcAppbmRleCBlMTA3Y2NmNWQ4MjY2NDg5
OGU3M2U4MjViNTY2YTA5MTg2NDc1ZjRjLi43NDc0N2EyZWE1Mzg4M2U4MTdlNzhjNTAyNzA5ZDY5
ZWJlNjc5MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9JREJCaW5k
aW5nVXRpbGl0aWVzLmNwcApAQCAtMjQxLDcgKzI0MSw3IEBAIGJvb2wgaW5qZWN0SURCS2V5SW50
b1NjcmlwdFZhbHVlKERPTVJlcXVlc3RTdGF0ZSosIFBhc3NSZWZQdHI8SURCS2V5PiBrZXksIFNj
cmlwCiAgICAgaWYgKHBhcmVudC5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIGlmICghc2V0KHBhcmVudCwga2V5UGF0aEVsZW1lbnRzLmxhc3QoKSwgdG9WOChrZXkuZ2V0
KCkpKSkKKyAgICBpZiAoIXNldChwYXJlbnQsIGtleVBhdGhFbGVtZW50cy5sYXN0KCksIHRvVjgo
a2V5LmdldCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgcmV0dXJuIHRydWU7CkBAIC0yNjcsNyArMjY3LDcgQEAgU2NyaXB0VmFsdWUg
aWRiS2V5VG9TY3JpcHRWYWx1ZShET01SZXF1ZXN0U3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPElE
QktleT4ga2V5KQogewogICAgIEFTU0VSVCh2ODo6Q29udGV4dDo6SW5Db250ZXh0KCkpOwogICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
djhWYWx1ZSh0b1Y4KGtleS5nZXQoKSkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2OFZh
bHVlKHRvVjgoa2V5LmdldCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpKTsKICAgICByZXR1
cm4gU2NyaXB0VmFsdWUodjhWYWx1ZSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggMTcyZDRmYmQ3NmE4YTMxY2JiYzRmMjU5
ZWY4NDNkNzljZGRmMTI4OC4uNmQwNmMzYTBmNjlmNTIwYzIyMTNlMmNhMDRhZjY0ZjA1MGUwNTI3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0Q29udHJvbGxlci5j
cHAKQEAgLTYxNiw3ICs2MTYsNyBAQCBzdGF0aWMgTlBPYmplY3QqIGNyZWF0ZVNjcmlwdE9iamVj
dChGcmFtZSogZnJhbWUpCiAKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0
KTsKICAgICBET01XaW5kb3cqIHdpbmRvdyA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2xvYmFsID0gdG9WOCh3aW5kb3cpOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBnbG9iYWwgPSB0b1Y4KHdpbmRvdywgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PigpKTsKICAgICBBU1NFUlQoZ2xvYmFsLT5Jc09iamVjdCgpKTsKICAgICByZXR1
cm4gbnBDcmVhdGVWOFNjcmlwdE9iamVjdCgwLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGdsb2JhbCksIHdpbmRvdyk7CiB9CkBAIC02NTYsNyArNjU2LDcgQEAgTlBPYmplY3QqIFNjcmlw
dENvbnRyb2xsZXI6OmNyZWF0ZVNjcmlwdE9iamVjdEZvclBsdWdpbkVsZW1lbnQoSFRNTFBsdWdJ
bkVsZW1lbnQKICAgICB2ODo6Q29udGV4dDo6U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKIAogICAg
IERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7Ci0g
ICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cGx1Z2luID0gdG9WOChzdGF0aWNfY2FzdDxIVE1M
RW1iZWRFbGVtZW50Kj4ocGx1Z2luKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHY4cGx1
Z2luID0gdG9WOChzdGF0aWNfY2FzdDxIVE1MRW1iZWRFbGVtZW50Kj4ocGx1Z2luKSwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpKTsKICAgICBpZiAoIXY4cGx1Z2luLT5Jc09iamVjdCgpKQogICAg
ICAgICByZXR1cm4gY3JlYXRlTm9TY3JpcHRPYmplY3QoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IGYxOTE5YjU0ZGVjYTZi
ZjcxMmJhZDNlNDUyMzIxOGEzZWM3ZGQ3ZTIuLjNjMTE2ODliNDA5MTg3ZDI2MzRhOGYzYmUyYjRk
MGZlY2UyMjAxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Njcmlw
dERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKQEAgLTM4NSw3ICszODUsNyBAQCBTY3JpcHRWYWx1ZSBTY3JpcHREZWJ1
Z1NlcnZlcjo6Y3VycmVudENhbGxGcmFtZSgpCiAKICAgICBSZWZQdHI8SmF2YVNjcmlwdENhbGxG
cmFtZT4gY3VycmVudENhbGxGcmFtZSA9IEphdmFTY3JpcHRDYWxsRnJhbWU6OmNyZWF0ZSh2ODo6
RGVidWc6OkdldERlYnVnQ29udGV4dCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGN1
cnJlbnRDYWxsRnJhbWVWOCkpOwogICAgIHY4OjpDb250ZXh0OjpTY29wZSBjb250ZXh0U2NvcGUo
bV9wYXVzZWRDb250ZXh0KTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUodG9WOChjdXJyZW50Q2Fs
bEZyYW1lLnJlbGVhc2UoKSkpOworICAgIHJldHVybiBTY3JpcHRWYWx1ZSh0b1Y4KGN1cnJlbnRD
YWxsRnJhbWUucmVsZWFzZSgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpKTsKIH0KIAogdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aW50ZXJydXB0QW5kUnVuKFBhc3NPd25QdHI8VGFzaz4gdGFz
aywgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHRPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2Ny
aXB0T2JqZWN0LmNwcAppbmRleCBiMDE4NjJkYmIzODViNDA0M2U4NGE3YTRlMzE3ZjQ3MmQ4ZWI1
NTdkLi4xODQ5M2Q2NzQzYTkxYWVkYWJjOWEzNmE4NDkwOTIzMTg0NWY5NTQ3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdE9iamVjdC5jcHAKQEAgLTczLDE0ICs3MywxNCBA
QCBib29sIFNjcmlwdEdsb2JhbE9iamVjdDo6c2V0KFNjcmlwdFN0YXRlKiBzY3JpcHRTdGF0ZSwg
Y29uc3QgY2hhciogbmFtZSwgY29uc3QgUwogYm9vbCBTY3JpcHRHbG9iYWxPYmplY3Q6OnNldChT
Y3JpcHRTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IGNoYXIqIG5hbWUsIEluc3BlY3RvckZyb250
ZW5kSG9zdCogdmFsdWUpCiB7CiAgICAgU2NyaXB0U2NvcGUgc2NvcGUoc2NyaXB0U3RhdGUpOwot
ICAgIHNjb3BlLmdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKG5hbWUpLCB0b1Y4
KHZhbHVlKSk7CisgICAgc2NvcGUuZ2xvYmFsKCktPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
bmFtZSksIHRvVjgodmFsdWUsIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSkpOwogICAgIHJldHVy
biBzY29wZS5zdWNjZXNzKCk7CiB9CiAKIGJvb2wgU2NyaXB0R2xvYmFsT2JqZWN0OjpzZXQoU2Ny
aXB0U3RhdGUqIHNjcmlwdFN0YXRlLCBjb25zdCBjaGFyKiBuYW1lLCBJbmplY3RlZFNjcmlwdEhv
c3QqIHZhbHVlKQogewogICAgIFNjcmlwdFNjb3BlIHNjb3BlKHNjcmlwdFN0YXRlKTsKLSAgICBz
Y29wZS5nbG9iYWwoKS0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbChuYW1lKSwgdG9WOCh2YWx1
ZSkpOworICAgIHNjb3BlLmdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKG5hbWUp
LCB0b1Y4KHZhbHVlLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpKTsKICAgICByZXR1cm4gc2Nv
cGUuc3VjY2VzcygpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKaW5kZXggNzI3Njk2ZWViMDQ3MGFl
MzE2YTAyOGJkNmZlYTE0ZjYzMWZlOTEzYy4uODE4Y2ZmOGRmMDMzYWJiMDUyMjU4MzVkOGQzNDk0
ZGY1NjJkZGZiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBYnN0
cmFjdEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcApAQCAtOTYsNyArOTYsNyBAQCB2b2lkIFY4QWJzdHJh
Y3RFdmVudExpc3RlbmVyOjpoYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250
ZXh0LCBFdmVudAogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZSh2OENvbnRleHQpOwogCiAg
ICAgLy8gR2V0IHRoZSBWOCB3cmFwcGVyIGZvciB0aGUgZXZlbnQgb2JqZWN0LgotICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50ID0gdG9WOChldmVudCk7CisgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGpzRXZlbnQgPSB0b1Y4KGV2ZW50LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkp
OwogICAgIEFTU0VSVCghanNFdmVudC5Jc0VtcHR5KCkpOwogCiAgICAgaW52b2tlRXZlbnRIYW5k
bGVyKGNvbnRleHQsIGV2ZW50LCBqc0V2ZW50KTsKQEAgLTE4OCw3ICsxODgsNyBAQCB2ODo6TG9j
YWw8djg6Ok9iamVjdD4gVjhBYnN0cmFjdEV2ZW50TGlzdGVuZXI6OmdldFJlY2VpdmVyT2JqZWN0
KEV2ZW50KiBldmVudCkKICAgICAgICAgcmV0dXJuIHY4OjpMb2NhbDx2ODo6T2JqZWN0Pjo6TmV3
KG1fbGlzdGVuZXIuZ2V0KCkpOwogCiAgICAgRXZlbnRUYXJnZXQqIHRhcmdldCA9IGV2ZW50LT5j
dXJyZW50VGFyZ2V0KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gdG9WOCh0
YXJnZXQpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IHRvVjgodGFyZ2V0LCB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpOwogICAgIGlmICh2YWx1ZS5Jc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsKICAgICByZXR1cm4gdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+OjpOZXcodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAppbmRl
eCAzMjc4NjJkZmIyNWU3YmY3ZWZjMzRiYzY4ZWY3N2IwODhhM2M4YTg5Li4zMDQ1MWMxMmMwNTU3
YWRmYjNlYzQ1ZGNhMDMxMjZjNGNhNjA0MGFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdpbmRvd1NoZWxsLmNwcApAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgVjhE
T01XaW5kb3dTaGVsbDo6dXBkYXRlRG9jdW1lbnRQcm9wZXJ0eSgpCiAgICAgLy8gRklYTUU6IFNo
b3VsZCB3ZSB1c2UgYSBuZXcgTG9jYWwgaGFuZGxlIGhlcmU/CiAgICAgdjg6OkNvbnRleHQ6OlNj
b3BlIGNvbnRleHRTY29wZShtX2NvbnRleHQuZ2V0KCkpOwogCi0gICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGRvY3VtZW50V3JhcHBlciA9IHRvVjgobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGRvY3VtZW50V3JhcHBlciA9IHRvVjgobV9mcmFtZS0+ZG9j
dW1lbnQoKSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpKTsKICAgICBBU1NFUlQoZG9jdW1lbnRX
cmFwcGVyID09IG1fZG9jdW1lbnQuZ2V0KCkgfHwgbV9kb2N1bWVudC5pc0VtcHR5KCkpOwogICAg
IGlmIChtX2RvY3VtZW50LmlzRW1wdHkoKSkKICAgICAgICAgdXBkYXRlRG9jdW1lbnRXcmFwcGVy
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoZG9jdW1lbnRXcmFwcGVyKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4
IDkzOGIxMDk4MDNmZjBhZDhlM2RhN2ExNjdmZTljMTdiYjk1YzUxNTUuLmI4ZGY0ZDhlZmQxZjlm
NmU1MThhZjIxZDViMTYxMDQ1YjAxNWJkOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC02Nyw3ICs2Nyw3IEBAIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gdG9PYmplY3RXcmFwcGVyKFQqIGRvbU9iamVjdCkKIHsKICAgICBp
ZiAoIWRvbU9iamVjdCkKICAgICAgICAgcmV0dXJuIHY4OjpPYmplY3Q6Ok5ldygpOwotICAgIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IHRvVjgoZG9tT2JqZWN0KTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUgPSB0b1Y4KGRvbU9iamVjdCwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PigpKTsKICAgICBpZiAodmFsdWUuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gdjg6Ok9i
amVjdDo6TmV3KCk7CiAgICAgcmV0dXJuIHZhbHVlLkFzPHY4OjpPYmplY3Q+KCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhNdXRhdGlvbkNhbGxiYWNrLmNwcAppbmRleCBh
ZjA1MTkyZTMyNDgyMTg5NWJmODk3OTA5YzI2ZDU2Y2NmZmUwYWNkLi5iZjI4MzQwOTc3NWM0N2Yx
ZjEwODY5YTQ5MTNmNTk0ZmI5NjU1MDZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE11dGF0aW9uQ2FsbGJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4TXV0YXRpb25DYWxsYmFjay5jcHAKQEAgLTYzLDkgKzYzLDkgQEAgYm9vbCBWOE11
dGF0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KE11dGF0aW9uUmVjb3JkQXJyYXkqIG11dGF0aW9u
cywgTXV0YXRpb25PYnMKIAogICAgIHY4OjpMb2NhbDx2ODo6QXJyYXk+IG11dGF0aW9uc0FycmF5
ID0gdjg6OkFycmF5OjpOZXcobXV0YXRpb25zLT5zaXplKCkpOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbXV0YXRpb25zLT5zaXplKCk7ICsraSkKLSAgICAgICAgbXV0YXRpb25zQXJyYXkt
PlNldChkZXByZWNhdGVkVjhJbnRlZ2VyKGkpLCB0b1Y4KG11dGF0aW9ucy0+YXQoaSkuZ2V0KCkp
KTsKKyAgICAgICAgbXV0YXRpb25zQXJyYXktPlNldChkZXByZWNhdGVkVjhJbnRlZ2VyKGkpLCB0
b1Y4KG11dGF0aW9ucy0+YXQoaSkuZ2V0KCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSkpOwog
Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9ic2VydmVySGFuZGxlID0gdG9WOChvYnNlcnZl
cik7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG9ic2VydmVySGFuZGxlID0gdG9WOChvYnNl
cnZlciwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpKTsKICAgICBpZiAob2JzZXJ2ZXJIYW5kbGUu
SXNFbXB0eSgpKSB7CiAgICAgICAgIGlmICghaXNTY3JpcHRDb250cm9sbGVyVGVybWluYXRpbmco
KSkKICAgICAgICAgICAgIENSQVNIKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOE5vZGVGaWx0ZXJDb25kaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAppbmRleCA5ZThmNjg3YzZmZjAwZmJlYWRi
ZDU2OTZhNjg2OWNiOTIzMWRkOTVkLi5jZGY3NjgxYmY1YjVhOTAzNjIyZjBhZDc0OTI0NDUzOGFm
MTg0YzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5vZGVGaWx0
ZXJDb25kaXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Tm9kZUZp
bHRlckNvbmRpdGlvbi5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgc2hvcnQgVjhOb2RlRmlsdGVyQ29u
ZGl0aW9uOjphY2NlcHROb2RlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9kZSkgY29uc3QK
IAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkNvbnRleHQ6OkdldEN1
cnJlbnQoKS0+R2xvYmFsKCk7CiAgICAgT3duQXJyYXlQdHI8djg6OkhhbmRsZTx2ODo6VmFsdWU+
ID4gYXJncyA9IGFkb3B0QXJyYXlQdHIobmV3IHY4OjpIYW5kbGU8djg6OlZhbHVlPlsxXSk7Ci0g
ICAgYXJnc1swXSA9IHRvVjgobm9kZSk7CisgICAgYXJnc1swXSA9IHRvVjgobm9kZSwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PigpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiByZXN1bHQg
PSBTY3JpcHRDb250cm9sbGVyOjpjYWxsRnVuY3Rpb25XaXRoSW5zdHJ1bWVudGF0aW9uKDAsIGNh
bGxiYWNrLCBvYmplY3QsIDEsIGFyZ3MuZ2V0KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOFdvcmtlckNvbnRleHRFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCmlu
ZGV4IDg2NDUzMDcwOGZlN2Y2OGI4OGZkNTZjOTBhMmZmM2JmMWZhMjNiNGIuLmI1NGUyODBlNDBl
NjQxY2ExY2U5YTBjZWQxNGIwMDNkMGM2NDU4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXIuY3BwCkBA
IC03NSw3ICs3NSw3IEBAIHZvaWQgVjhXb3JrZXJDb250ZXh0RXZlbnRMaXN0ZW5lcjo6aGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKICAgICB2ODo6Q29udGV4dDo6
U2NvcGUgc2NvcGUodjhDb250ZXh0KTsKIAogICAgIC8vIEdldCB0aGUgVjggd3JhcHBlciBmb3Ig
dGhlIGV2ZW50IG9iamVjdC4KLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4ganNFdmVudCA9IHRv
VjgoZXZlbnQpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBqc0V2ZW50ID0gdG9WOChldmVu
dCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpKTsKIAogICAgIGludm9rZUV2ZW50SGFuZGxlcihj
b250ZXh0LCBldmVudCwganNFdmVudCk7CiB9CkBAIC0xMTgsNyArMTE4LDcgQEAgdjg6OkxvY2Fs
PHY4OjpPYmplY3Q+IFY4V29ya2VyQ29udGV4dEV2ZW50TGlzdGVuZXI6OmdldFJlY2VpdmVyT2Jq
ZWN0KFNjcmlwdEV4ZWMKICAgICAgICAgcmV0dXJuIGxpc3RlbmVyOwogCiAgICAgRXZlbnRUYXJn
ZXQqIHRhcmdldCA9IGV2ZW50LT5jdXJyZW50VGFyZ2V0KCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlID0gdG9WOCh0YXJnZXQpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSA9IHRvVjgodGFyZ2V0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpOwogICAgIGlmICh2
YWx1ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB2ODo6TG9jYWw8djg6Ok9iamVjdD4oKTsK
ICAgICByZXR1cm4gdjg6OkxvY2FsPHY4OjpPYmplY3Q+OjpOZXcodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Pjo6Q2FzdCh2YWx1ZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvY3VzdG9tL1Y4Q3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxi
YWNrLmNwcAppbmRleCA3OTUyMzk4ZGEzNGVlMzVhZjVmZWVmYzQwYmZhYmM2MzQ2NjYxYzJhLi4y
YjgyNTIyYjM4N2QwMDBlMmJmOGEwNDMzYmQzNzZjNGU2MzY3OWFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNh
bGxiYWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDdXN0
b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcApAQCAtNTUsOCArNTUsOCBAQCBib29sIFY4
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoU1FMVHJhbnNhY3Rpb24qIHRy
YW5zYWN0aW9uLCBTUUxFcgogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKHY4Q29udGV4
dCk7CiAKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHJhbnNhY3Rpb25IYW5kbGUgPSB0b1Y4
KHRyYW5zYWN0aW9uKTsKLSAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXJyb3JIYW5kbGUgPSB0
b1Y4KGVycm9yKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdHJhbnNhY3Rpb25IYW5kbGUg
PSB0b1Y4KHRyYW5zYWN0aW9uLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpOworICAgIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBlcnJvckhhbmRsZSA9IHRvVjgoZXJyb3IsIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKSk7CiAgICAgaWYgKHRyYW5zYWN0aW9uSGFuZGxlLklzRW1wdHkoKSB8fCBlcnJv
ckhhbmRsZS5Jc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKCFpc1NjcmlwdENvbnRyb2xsZXJUZXJt
aW5hdGluZygpKQogICAgICAgICAgICAgQ1JBU0goKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0
b20uY3BwCmluZGV4IDcwZThmZmI2ZDUzNzRkZDdmOWNkMzA0Y2I4NGY2MzEyMWRhMDJlYzEuLmM5
ZTI5MWZjNjlmNDU1Y2YzODU1MzVlMGI4MWQzZjhhMTMzZjZjNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3Jp
cHRIb3N0Q3VzdG9tLmNwcApAQCAtNzYsNyArNzYsNyBAQCBTY3JpcHRWYWx1ZSBJbmplY3RlZFNj
cmlwdEhvc3Q6Om5vZGVBc1NjcmlwdFZhbHVlKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTm9kZSogbm9k
ZQogCiAgICAgaWYgKCFCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKEJp
bmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgbm9kZSkpCiAgICAgICAgIHJldHVybiBTY3JpcHRWYWx1
ZSh2ODo6TnVsbCgpKTsKLSAgICByZXR1cm4gU2NyaXB0VmFsdWUodG9WOChub2RlKSk7CisgICAg
cmV0dXJuIFNjcmlwdFZhbHVlKHRvVjgobm9kZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpKSk7
CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVj
dGVkT2JqZWN0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCA2Zjg2YmMyYTQ1NTll
Y2NjZjJkYzMwNDUyYjdmMTZlMjljYjMzMzNjLi45MTAxNjAyNmJiNGQ3ZTI3NWUyNzAyNDE5ZTg1
NGM5YTMxOTRlNWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlMaXN0TGlz
dGVuZXIuY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
cXVlcnlDaGFuZ2VkKFNjcmlwdFN0YXRlKiBzdGF0ZSwgTWVkaWFRdWVyeUxpc3QqIHF1CiAgICAg
aWYgKGNvbnRleHQuSXNFbXB0eSgpKQogICAgICAgIHJldHVybjsgLy8gSlMgbWF5IG5vdCBiZSBl
bmFibGVkLgogICAgIHY4OjpDb250ZXh0OjpTY29wZSBzY29wZShjb250ZXh0KTsKLSAgICBjYWxs
YmFjay5hcHBlbmRBcmd1bWVudCh0b1Y4KHF1ZXJ5KSk7CisgICAgY2FsbGJhY2suYXBwZW5kQXJn
dW1lbnQodG9WOChxdWVyeSwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PigpKSk7CiAjZW5kaWYKICAg
ICBjYWxsYmFjay5jYWxsKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L3Y4L1dlYkNvcmVUZXN0U3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL3Y4L1dl
YkNvcmVUZXN0U3VwcG9ydC5jcHAKaW5kZXggMWRjZDYwNjc1Yzg3ZDQ0Y2RhMDc0ZTgwY2I2MWIw
OWZjYmM3MGQ2NS4uY2EzMjhlMzBiNjgyY2VlODdiNzZiN2VlOTU2NDE5YWQ5ZjcwOTE4NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy92OC9XZWJDb3JlVGVzdFN1cHBvcnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvdjgvV2ViQ29yZVRlc3RTdXBwb3J0LmNwcApA
QCAtNDYsNyArNDYsNyBAQCB2b2lkIGluamVjdEludGVybmFsc09iamVjdCh2ODo6TG9jYWw8djg6
OkNvbnRleHQ+IGNvbnRleHQpCiAKICAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRD
b250ZXh0ID0gZ2V0U2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogICAgIGlmIChzY3JpcHRDb250
ZXh0LT5pc0RvY3VtZW50KCkpCi0gICAgICAgIGNvbnRleHQtPkdsb2JhbCgpLT5TZXQodjg6OlN0
cmluZzo6TmV3KEludGVybmFsczo6aW50ZXJuYWxzSWQpLCB0b1Y4KEludGVybmFsczo6Y3JlYXRl
KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29udGV4dCkpKSk7CisgICAgICAgIGNvbnRl
eHQtPkdsb2JhbCgpLT5TZXQodjg6OlN0cmluZzo6TmV3KEludGVybmFsczo6aW50ZXJuYWxzSWQp
LCB0b1Y4KEludGVybmFsczo6Y3JlYXRlKHN0YXRpY19jYXN0PERvY3VtZW50Kj4oc2NyaXB0Q29u
dGV4dCkpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpKTsKIH0KIAogdm9pZCByZXNldEludGVy
bmFsc09iamVjdCh2ODo6TG9jYWw8djg6OkNvbnRleHQ+IGNvbnRleHQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRJbXBs
LmNwcAppbmRleCBiMmJlMTM2ODk1ZmM1YjBjOTc3NmNkNmYzNTk5MDAwNDZiNDJjYjg0Li4yNjQx
YjRiMWRiYWFlNWI5ODQ1Y2I3Y2I5OTAxNjNhNzA5MDc4YTY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGwuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0luc3BlY3RvckZyb250ZW5kQ2xpZW50SW1wbC5j
cHAKQEAgLTY4LDcgKzY4LDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudEltcGw6Ondp
bmRvd09iamVjdENsZWFyZWQoKQogCiAgICAgQVNTRVJUKCFtX2Zyb250ZW5kSG9zdCk7CiAgICAg
bV9mcm9udGVuZEhvc3QgPSBJbnNwZWN0b3JGcm9udGVuZEhvc3Q6OmNyZWF0ZSh0aGlzLCBtX2Zy
b250ZW5kUGFnZSk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZyb250ZW5kSG9zdE9iaiA9
IHRvVjgobV9mcm9udGVuZEhvc3QuZ2V0KCkpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBm
cm9udGVuZEhvc3RPYmogPSB0b1Y4KG1fZnJvbnRlbmRIb3N0LmdldCgpLCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+KCkpOwogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2xvYmFsID0gZnJhbWVD
b250ZXh0LT5HbG9iYWwoKTsKIAogICAgIGdsb2JhbC0+U2V0KHY4OjpTdHJpbmc6Ok5ldygiSW5z
cGVjdG9yRnJvbnRlbmRIb3N0IiksIGZyb250ZW5kSG9zdE9iaik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAKaW5kZXggNzk4MzVmMzk4ZmZjMDIzYzA0
NmMxNTMwMGRjYjgwMmJjYjRiZDQ5NS4uNTIxMjczMGRmNzQ2ODM0NDAwNDgzNjY5YjVjZTg5Mjg5
MTY2NGNkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlC
dWZmZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVy
LmNwcApAQCAtNzQsNyArNzQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViQXJyYXlCdWZm
ZXI6OnRvVjhWYWx1ZSgpCiB7CiAgICAgaWYgKCFtX3ByaXZhdGUuZ2V0KCkpCiAgICAgICAgIHJl
dHVybiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4oKTsKLSAgICByZXR1cm4gdG9WOChtX3ByaXZhdGUu
Z2V0KCkpOworICAgIHJldHVybiB0b1Y4KG1fcHJpdmF0ZS5nZXQoKSwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PigpKTsKIH0KIAogV2ViQXJyYXlCdWZmZXIqIFdlYkFycmF5QnVmZmVyOjpjcmVhdGVG
cm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCbG9iLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkJsb2IuY3BwCmluZGV4IDk2M2RhMTZiMDdiNjdjY2IyYmJkMmE4YTU5NDBjZTRm
ZjAxMzA5ZDMuLjcyMTQ1MDhhM2ZmN2JjYTdlYjY2ZDRhMTliZGVjOGMzMjA1YTk5OWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJsb2IuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiAgV2ViQmxvYjo6dG9WOFZhbHVlKCkKIHsKICAgICBpZiAoIW1fcHJp
dmF0ZS5nZXQoKSkKICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6OlZhbHVlPigpOwotICAg
IHJldHVybiB0b1Y4KG1fcHJpdmF0ZS5nZXQoKSk7CisgICAgcmV0dXJuIHRvVjgobV9wcml2YXRl
LmdldCgpLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCmluZGV4IDllNzI1Mjg4YTBkYzcx
NmFiYjg2NGYwMmMxOTJiOWNkM2U1YjZhMGYuLjM0N2ZhMjAzODhkNzNhM2EwYWIwOTNiYjc5OWE4
ZTY0MWFiZTU4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkZy
YW1lSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmNwcApAQCAtOTEyLDcgKzkxMiw3IEBAIHY4OjpMb2NhbDx2ODo6Q29udGV4dD4gV2ViRnJhbWVJ
bXBsOjptYWluV29ybGRTY3JpcHRDb250ZXh0KCkgY29uc3QKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBXZWJGcmFtZUltcGw6OmNyZWF0ZUZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBl
LCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYgcGF0aCkKIHsKICAgICBB
U1NFUlQoZnJhbWUoKSk7Ci0gICAgcmV0dXJuIHRvVjgoRE9NRmlsZVN5c3RlbTo6Y3JlYXRlKGZy
YW1lKCktPmRvY3VtZW50KCksIG5hbWUsIHN0YXRpY19jYXN0PFdlYkNvcmU6OkZpbGVTeXN0ZW1U
eXBlPih0eXBlKSwgS1VSTChQYXJzZWRVUkxTdHJpbmcsIHBhdGgudXRmOCgpLmRhdGEoKSksIEFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUoKSkpOworICAgIHJldHVybiB0b1Y4KERPTUZp
bGVTeXN0ZW06OmNyZWF0ZShmcmFtZSgpLT5kb2N1bWVudCgpLCBuYW1lLCBzdGF0aWNfY2FzdDxX
ZWJDb3JlOjpGaWxlU3lzdGVtVHlwZT4odHlwZSksIEtVUkwoUGFyc2VkVVJMU3RyaW5nLCBwYXRo
LnV0ZjgoKS5kYXRhKCkpLCBBc3luY0ZpbGVTeXN0ZW1DaHJvbWl1bTo6Y3JlYXRlKCkpLCB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KCkpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gV2ViRnJh
bWVJbXBsOjpjcmVhdGVTZXJpYWxpemFibGVGaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUg
dHlwZSwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIHBhdGgpCkBAIC05
MjAsNyArOTIwLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6Y3JlYXRl
U2VyaWFsaXphYmxlRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjoKICAgICBBU1NFUlQoZnJhbWUo
KSk7CiAgICAgUmVmUHRyPERPTUZpbGVTeXN0ZW0+IGZpbGVTeXN0ZW0gPSBET01GaWxlU3lzdGVt
OjpjcmVhdGUoZnJhbWUoKS0+ZG9jdW1lbnQoKSwgbmFtZSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6
RmlsZVN5c3RlbVR5cGU+KHR5cGUpLCBLVVJMKFBhcnNlZFVSTFN0cmluZywgcGF0aC51dGY4KCku
ZGF0YSgpKSwgQXN5bmNGaWxlU3lzdGVtQ2hyb21pdW06OmNyZWF0ZSgpKTsKICAgICBmaWxlU3lz
dGVtLT5tYWtlQ2xvbmFibGUoKTsKLSAgICByZXR1cm4gdG9WOChmaWxlU3lzdGVtLnJlbGVhc2Uo
KSk7CisgICAgcmV0dXJuIHRvVjgoZmlsZVN5c3RlbS5yZWxlYXNlKCksIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4oKSk7CiB9CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBXZWJGcmFtZUltcGw6OmNy
ZWF0ZUZpbGVFbnRyeShXZWJGaWxlU3lzdGVtOjpUeXBlIHR5cGUsIGNvbnN0IFdlYlN0cmluZyYg
ZmlsZVN5c3RlbU5hbWUsIGNvbnN0IFdlYlN0cmluZyYgZmlsZVN5c3RlbVBhdGgsIGNvbnN0IFdl
YlN0cmluZyYgZmlsZVBhdGgsIGJvb2wgaXNEaXJlY3RvcnkpCkBAIC05MjksOCArOTI5LDggQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFdlYkZyYW1lSW1wbDo6Y3JlYXRlRmlsZUVudHJ5KFdlYkZp
bGVTeXN0ZW06OlR5cGUgdHlwZSwgY28KIAogICAgIFJlZlB0cjxET01GaWxlU3lzdGVtQmFzZT4g
ZmlsZVN5c3RlbSA9IERPTUZpbGVTeXN0ZW06OmNyZWF0ZShmcmFtZSgpLT5kb2N1bWVudCgpLCBm
aWxlU3lzdGVtTmFtZSwgc3RhdGljX2Nhc3Q8V2ViQ29yZTo6RmlsZVN5c3RlbVR5cGU+KHR5cGUp
LCBLVVJMKFBhcnNlZFVSTFN0cmluZywgZmlsZVN5c3RlbVBhdGgudXRmOCgpLmRhdGEoKSksIEFz
eW5jRmlsZVN5c3RlbUNocm9taXVtOjpjcmVhdGUoKSk7CiAgICAgaWYgKGlzRGlyZWN0b3J5KQot
ICAgICAgICByZXR1cm4gdG9WOChEaXJlY3RvcnlFbnRyeTo6Y3JlYXRlKGZpbGVTeXN0ZW0sIGZp
bGVQYXRoKSk7Ci0gICAgcmV0dXJuIHRvVjgoRmlsZUVudHJ5OjpjcmVhdGUoZmlsZVN5c3RlbSwg
ZmlsZVBhdGgpKTsKKyAgICAgICAgcmV0dXJuIHRvVjgoRGlyZWN0b3J5RW50cnk6OmNyZWF0ZShm
aWxlU3lzdGVtLCBmaWxlUGF0aCksIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKSk7CisgICAgcmV0
dXJuIHRvVjgoRmlsZUVudHJ5OjpjcmVhdGUoZmlsZVN5c3RlbSwgZmlsZVBhdGgpLCB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KCkpOwogfQogCiB2b2lkIFdlYkZyYW1lSW1wbDo6cmVsb2FkKGJvb2wg
aWdub3JlQ2FjaGUpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>