<?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>68818</bug_id>
          
          <creation_ts>2011-09-26 11:38:15 -0700</creation_ts>
          <short_desc>IndexedDB: Second half of IDBFactory.getDatabaseNames implementation</short_desc>
          <delta_ts>2011-09-26 17:42:14 -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>New Bugs</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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>dgrogan</cc>
    
    <cc>hans</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>473239</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-09-26 11:38:15 -0700</bug_when>
    <thetext>IndexedDB: Second half of IDBFactory.getDatabaseNames implementation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473246</commentid>
    <comment_count>1</comment_count>
      <attachid>108697</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-09-26 11:41:50 -0700</bug_when>
    <thetext>Created attachment 108697
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473249</commentid>
    <comment_count>2</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-09-26 11:44:55 -0700</bug_when>
    <thetext>First half was landed as https://bugs.webkit.org/show_bug.cgi?id=68037 - initial patches there contained both halves, which received review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473269</commentid>
    <comment_count>3</comment_count>
      <attachid>108697</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2011-09-26 11:59:13 -0700</bug_when>
    <thetext>Comment on attachment 108697
Patch

LGTM, assuming it&apos;s unchanged from the other bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473295</commentid>
    <comment_count>4</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-09-26 12:35:30 -0700</bug_when>
    <thetext>Tony - another one for you to poke at with a stick.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473349</commentid>
    <comment_count>5</comment_count>
      <attachid>108697</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-09-26 13:49:03 -0700</bug_when>
    <thetext>Comment on attachment 108697
Patch

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

&gt; Source/WebCore/storage/IDBFactoryBackendImpl.cpp:63
&gt; +
&gt; +

Nit: Did you mean to add this whitespace?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473402</commentid>
    <comment_count>6</comment_count>
      <attachid>108726</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2011-09-26 14:44:33 -0700</bug_when>
    <thetext>Created attachment 108726
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473583</commentid>
    <comment_count>7</comment_count>
      <attachid>108726</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 17:42:09 -0700</bug_when>
    <thetext>Comment on attachment 108726
Patch

Clearing flags on attachment: 108726

Committed r96054: &lt;http://trac.webkit.org/changeset/96054&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>473584</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-26 17:42:14 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108697</attachid>
            <date>2011-09-26 11:41:50 -0700</date>
            <delta_ts>2011-09-26 14:44:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68818-20110926114149.patch</filename>
            <type>text/plain</type>
            <size>37275</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU5NDcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZDIyMzdlNTUwYzk1NTE2NTA4ZThm
ZWVkZWUxMTdmNzM0M2U4ZTExLi43MjQxNGEzN2QyYjJiMmE5MDI5NzE1MzZmYzcwMmU0MzgzMTUz
NDA3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMDktMjYgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNlY29uZCBoYWxmIG9mIElE
QkZhY3RvcnkuZ2V0RGF0YWJhc2VOYW1lcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg4MTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2ZhY3Rv
cnktYmFzaWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVk
ZGIvZmFjdG9yeS1iYXNpY3MuaHRtbDogQWRkZWQuCisKIDIwMTEtMDktMjYgIEFuZHJleSBLb3N5
YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBbRXh0
ZW5zaW9ucyBBUEldIGFsbG93IHJlc291cmNlcyB0byBob29rIG9uIGNsaWNrIG9uIHJlc291cmNl
IGxpbmtzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5
LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0
b3J5LWJhc2ljcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY5MWVlMjg1OWRmOTFiYWFhNTIw
YzIwMTBmNzcyY2NiYzY3ZWJhZgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIwIEBA
CitUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRmFjdG9yeS4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRvdy5pbmRleGVkREIgfHwgd2lu
ZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhlZERCOworUEFTUyBpbmRleGVk
REIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKQorZGF0YWJh
c2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZGF0YWJhc2VOYW1lcy5jb250YWlu
cygnc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MnKSBpcyBmYWxzZQorUEFTUyBkYXRh
YmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykgaXMgZmFs
c2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQoraW5kZXhlZERCLmdldERhdGFi
YXNlTmFtZXMoKQorZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZGF0
YWJhc2VOYW1lcy5jb250YWlucygnc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MnKSBp
cyB0cnVlCitQQVNTIGRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RBVEFCQVNFIFRIQVQgRE9FUyBO
T1QgRVhJU1QnKSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitU
RVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRi
L2ZhY3RvcnktYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0
b3J5LWJhc2ljcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmODdmZDE2ODdkNjI1NDMyNGVlMzU0YzZiZTg2
ZTljYmUyYjI0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4
ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sCkBAIC0wLDAgKzEsNjggQEAKKzxodG1sPgorPGhlYWQ+
Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pz
LXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CisKK2Rl
c2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRmFjdG9yeS4iKTsK
K2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIAorICAgIGxheW91dFRlc3RDb250cm9s
bGVyLndhaXRVbnRpbERvbmUoKTsKKworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBpbmRleGVk
REIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5kZXhlZERCIHx8IHdpbmRvdy53
ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9ICdzdG9yYWdlL2luZGV4ZWRk
Yi9mYWN0b3J5LWJhc2ljcyc7CisgICAgZGVzY3JpcHRpb24gPSAiTXkgVGVzdCBEYXRhYmFzZSI7
CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMo
KSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MxOwor
ICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5j
dGlvbiBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczEoKQoreworICAgIHZhciBkYXRhYmFzZU5hbWVz
OworICAgIGV2YWxBbmRMb2coImRhdGFiYXNlTmFtZXMgPSBldmVudC50YXJnZXQucmVzdWx0Iik7
CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAi
JykiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFT
RSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsKKworICAgIHJlcXVlc3QgPSBldmFsQW5kTG9nKCJp
bmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAgICByZXF1ZXN0Lm9uc3VjY2Vz
cyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7CisgICAgcmVxdWVzdCA9IGV2
YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzKCkiKTsKKyAgICByZXF1ZXN0Lm9u
c3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMjsKKyAgICByZXF1ZXN0Lm9uZXJyb3Ig
PSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rpb24gZ2V0RGF0YWJhc2VOYW1l
c1N1Y2Nlc3MyKCkKK3sKKyAgICB2YXIgZGF0YWJhc2VOYW1lczsKKyAgICBldmFsQW5kTG9nKCJk
YXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOworICAgIHNob3VsZEJlVHJ1ZSgi
ZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJykiKTsKKyAgICBzaG91bGRCZUZh
bHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNU
JykiKTsKKworICAgIC8vIEZJWE1FOiB0ZXN0IGluZGV4ZWREQi5kZWxldGVEYXRhYmFzZShkYXRh
YmFzZU5hbWUpCisgICAgLy8gRklYTUU6IHRlc3QgaW5kZXhlZERCLmNtcChrZXkxLCBrZXkyKQor
ICAgIGRvbmUoKTsKK30KKwordGVzdCgpOworCit2YXIgc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1
ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTljNTE1YTA1
ZjhmN2M1NjhlYmE2NTA2ZjE3ZGEyZjM2NDUxYWFhZS4uYjQ2YzUxYjg1MTVjNDI0MGI4NmRlNGM4
OTRkOTM2MWQ5M2NhYjU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDExLTA5LTI2
ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERC
OiBTZWNvbmQgaGFsZiBvZiBJREJGYWN0b3J5LmdldERhdGFiYXNlTmFtZXMgaW1wbGVtZW50YXRp
b24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4ODE4
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdDog
c3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbAorCisgICAgICAgICogYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgp
OgorICAgICAgICAqIHN0b3JhZ2UvSURCQW55LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkFu
eTo6ZG9tU3RyaW5nTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnNldCk6CisgICAg
ICAgICogc3RvcmFnZS9JREJBbnkuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJhY2tpbmdTdG9y
ZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgICogc3RvcmFn
ZS9JREJGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmdldERhdGFi
YXNlTmFtZXMpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeS5oOgorICAgICAgICAqIHN0
b3JhZ2UvSURCRmFjdG9yeS5pZGw6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2Vu
ZEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpnZXRE
YXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6
b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNr
aW5nU3RvcmUpOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6Cisg
ICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAq
IHN0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
REJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNv
cmU6OklEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAgICAgKiBz
dG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxl
dmVsREJDb2RpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0
YWJhc2VOYW1lS2V5OjplbmNvZGVNaW5LZXlGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
SURCTGV2ZWxEQkNvZGluZzo6RGF0YWJhc2VOYW1lS2V5OjplbmNvZGVTdG9wS2V5Rm9yT3JpZ2lu
KToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuaDoKKyAgICAgICAgKiBzdG9y
YWdlL0lEQlJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNj
ZXNzKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBzdG9yYWdl
L0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTUUxpdGVC
YWNraW5nU3RvcmU6OmdldERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIHN0b3JhZ2UvSURCU1FM
aXRlQmFja2luZ1N0b3JlLmg6CisKIDIwMTEtMDktMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3
ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW51c2VkIHZhcmlhYmxlIGluIFFOZXR3b3JrUmVw
bHlIYW5kbGVyOjpzZW5kTmV0d29ya1JlcXVlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55Q3VzdG9tLmNwcAppbmRleCBhMWE4NjM2ZGZmZTBh
N2Y0NDkwMDQwMzkwMDQ2ZGVkYjA4OTNmODc1Li5lNDgzMWFkOWEyNjBlZmM1ODAzMTE4NTg4YmVj
Zjk1ZDg4YTJiMjJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhJREJBbnlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOElEQkFueUN1c3RvbS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWOElE
QkFueS5oIgogCiAjaW5jbHVkZSAiU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAi
VjhET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiVjhJREJDdXJzb3IuaCIKICNpbmNsdWRlICJW
OElEQkN1cnNvcldpdGhWYWx1ZS5oIgogI2luY2x1ZGUgIlY4SURCRGF0YWJhc2UuaCIKQEAgLTUz
LDYgKzU0LDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsKQogICAg
ICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIGNhc2UgSURCQW55OjpOdWxsVHlwZToK
ICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CisgICAgY2FzZSBJREJBbnk6OkRPTVN0cmluZ0xp
c3RUeXBlOgorICAgICAgICByZXR1cm4gdG9WOChpbXBsLT5kb21TdHJpbmdMaXN0KCkpOwogICAg
IGNhc2UgSURCQW55OjpJREJDdXJzb3JUeXBlOgogICAgICAgICByZXR1cm4gdG9WOChpbXBsLT5p
ZGJDdXJzb3IoKSk7CiAgICAgY2FzZSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGU6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkFueS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkFueS5jcHAKaW5kZXggMWUwNzZhOWIzZDg5MDIzMzFjMjVmM2RkNWE3
Y2Q5MTBmYWNiZjNjZC4uNTdhNDA2ZTJiYjA3YjBiZDZkMjVkZGJiODFiYzY0ZmU5ZWFhMDZhZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJBbnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmNwcApAQCAtNTgsMTMgKzU4LDE4IEBAIElEQkFueTo6
fklEQkFueSgpCiB7CiB9CiAKK1Bhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCQW55Ojpkb21T
dHJpbmdMaXN0KCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IERPTVN0cmluZ0xpc3RUeXBlKTsK
KyAgICByZXR1cm4gbV9kb21TdHJpbmdMaXN0OworfQorCiBQYXNzUmVmUHRyPElEQkN1cnNvcj4g
SURCQW55OjppZGJDdXJzb3IoKQogewogICAgIEFTU0VSVChtX3R5cGUgPT0gSURCQ3Vyc29yVHlw
ZSk7CiAgICAgcmV0dXJuIG1faWRiQ3Vyc29yOwogfQogCi0KIFBhc3NSZWZQdHI8SURCQ3Vyc29y
V2l0aFZhbHVlPiBJREJBbnk6OmlkYkN1cnNvcldpdGhWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1f
dHlwZSA9PSBJREJDdXJzb3JXaXRoVmFsdWVUeXBlKTsKQEAgLTExOSw2ICsxMjQsMTMgQEAgdm9p
ZCBJREJBbnk6OnNldE51bGwoKQogICAgIG1fdHlwZSA9IE51bGxUeXBlOwogfQogCit2b2lkIElE
QkFueTo6c2V0KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdmFsdWUpCit7CisgICAgQVNTRVJU
KG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsKKyAgICBtX3R5cGUgPSBET01TdHJpbmdMaXN0VHlw
ZTsKKyAgICBtX2RvbVN0cmluZ0xpc3QgPSB2YWx1ZTsKK30KKwogdm9pZCBJREJBbnk6OnNldChQ
YXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fdHlw
ZSA9PSBVbmRlZmluZWRUeXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCQW55LmggYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkFueS5oCmluZGV4IGU3ZTk0Zjlk
OTJhMDczYjlmN2Q1ZjNiMmJmNzNjN2E1MTFmZWMwZTUuLjZiZWRhNTg4ODA4NGJjMjIxYTNkMThj
NjAzNjQ2NDY0MmRjYTdlNDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
QW55LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJBbnkuaApAQCAtMzQsNiArMzQs
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFz
cyBJREJDdXJzb3I7CiBjbGFzcyBJREJDdXJzb3JXaXRoVmFsdWU7CiBjbGFzcyBJREJEYXRhYmFz
ZTsKQEAgLTY3LDYgKzY4LDcgQEAgcHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVu
ZGVmaW5lZFR5cGUgPSAwLAogICAgICAgICBOdWxsVHlwZSwKKyAgICAgICAgRE9NU3RyaW5nTGlz
dFR5cGUsCiAgICAgICAgIElEQkN1cnNvclR5cGUsCiAgICAgICAgIElEQkN1cnNvcldpdGhWYWx1
ZVR5cGUsCiAgICAgICAgIElEQkRhdGFiYXNlVHlwZSwKQEAgLTgwLDYgKzgyLDcgQEAgcHVibGlj
OgogCiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgLy8gVXNl
IHR5cGUoKSB0byBmaWd1cmUgb3V0IHdoaWNoIG9uZSBvZiB0aGVzZSB5b3UncmUgYWxsb3dlZCB0
byBjYWxsLgorICAgIFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9tU3RyaW5nTGlzdCgpOwog
ICAgIFBhc3NSZWZQdHI8SURCQ3Vyc29yPiBpZGJDdXJzb3IoKTsKICAgICBQYXNzUmVmUHRyPElE
QkN1cnNvcldpdGhWYWx1ZT4gaWRiQ3Vyc29yV2l0aFZhbHVlKCk7CiAgICAgUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZT4gaWRiRGF0YWJhc2UoKTsKQEAgLTkyLDYgKzk1LDcgQEAgcHVibGljOgogCiAg
ICAgLy8gU2V0IGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLgogICAgIHZvaWQgc2V0TnVsbCgpOwor
ICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4pOwogICAgIHZvaWQgc2V0KFBh
c3NSZWZQdHI8SURCQ3Vyc29yPik7CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3JX
aXRoVmFsdWU+KTsKICAgICB2b2lkIHNldChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPik7CkBAIC0x
MDgsNiArMTEyLDcgQEAgcHJpdmF0ZToKICAgICBUeXBlIG1fdHlwZTsKIAogICAgIC8vIE9ubHkg
b25lIG9mIHRoZSBmb2xsb3dpbmcgc2hvdWxkIGV2ZXIgYmUgaW4gdXNlIGF0IGFueSBnaXZlbiB0
aW1lLgorICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiBtX2RvbVN0cmluZ0xpc3Q7CiAgICAgUmVm
UHRyPElEQkN1cnNvcj4gbV9pZGJDdXJzb3I7CiAgICAgUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1
ZT4gbV9pZGJDdXJzb3JXaXRoVmFsdWU7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2lkYkRh
dGFiYXNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3Rv
cmUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGJl
ZDg5MzM4MjBmMGQzZjkzY2JhZWQ5YmY3NTUxOGIwODFlMzcyYi4uMDI3ZDU1ZmYyOTkzNDBmNDMz
M2JhYTUzNWE3ZmQzZDkwZGNhZDVlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tp
bmdTdG9yZS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIElEQkJhY2tpbmdTdG9yZSA6IHB1Ymxp
YyBSZWZDb3VudGVkPElEQkJhY2tpbmdTdG9yZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfklE
QkJhY2tpbmdTdG9yZSgpIHt9OwogCisgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMo
VmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZXh0cmFj
dElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVy
c2lvbiwgaW50NjRfdCYgZm91bmRJZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZXRJREJEYXRh
YmFzZU1ldGFEYXRhKGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBp
bnQ2NF90JiByb3dJZCwgYm9vbCBpbnZhbGlkUm93SWQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCQ2FsbGJhY2tzLmgKaW5kZXggZGRjNmU2MDk0NjlmZWI2Y2JhNjYwMDk4YzdiOThiMDJm
NGQ3MjhlYy4uM2MwNjFhNzEwYzJmZmEwYmJiNmUwZjAyOTE4MGZjN2QxOTFjNmE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQkNhbGxiYWNrcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVm
IElEQkNhbGxiYWNrc19oCiAjZGVmaW5lIElEQkNhbGxiYWNrc19oCiAKKyNpbmNsdWRlICJET01T
dHJpbmdMaXN0LmgiCiAjaW5jbHVkZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2lu
Y2x1ZGUgIklEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFi
YXNlRXJyb3IuaCIKQEAgLTQ4LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkNh
bGxiYWNrcygpIHsgfQogCiAgICAgdmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJE
YXRhYmFzZUVycm9yPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0
cjxET01TdHJpbmdMaXN0PikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1Jl
ZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuY3BwCmluZGV4IDk4YjUyNzRmNDFlZWRhZDQxN2Q0M2Y4
OGFlMjAyNTZjMWJiMTAzZjUuLmY1ODcyMmJhY2Y5NWZkZGU5ZDkxMjRhNzc4ZjFmNDIxZGI5MmI1
ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmNwcApAQCAtNTgsNiArNTgsMjMg
QEAgSURCRmFjdG9yeTo6fklEQkZhY3RvcnkoKQogewogfQogCitQYXNzUmVmUHRyPElEQlJlcXVl
c3Q+IElEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCkKK3sKKyAgICBpZiAoIWNvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICAv
LyBGSVhNRTogbWFrZSB0aGlzIHdvcmsgd2l0aCB3b3JrZXJzLgorICAgICAgICByZXR1cm4gMDsK
KyAgICB9CisKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpOworICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50LT5wYWdl
KCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3Qg
PSBJREJSZXF1ZXN0OjpjcmVhdGUoZG9jdW1lbnQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCAwKTsK
KyAgICBHcm91cFNldHRpbmdzKiBncm91cFNldHRpbmdzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3Jv
dXAoKS5ncm91cFNldHRpbmdzKCk7CisgICAgbV9mYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VO
YW1lcyhyZXF1ZXN0LCBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKSwgZG9jdW1lbnQtPmZyYW1l
KCksIGdyb3VwU2V0dGluZ3MtPmluZGV4ZWREQkRhdGFiYXNlUGF0aCgpLCBncm91cFNldHRpbmdz
LT5pbmRleGVkREJRdW90YUJ5dGVzKCksIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpEZWZh
dWx0QmFja2luZ1N0b3JlKTsKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKwogUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBJREJGYWN0b3J5OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRl
eHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFj
b250ZXh0LT5pc0RvY3VtZW50KCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3Jh
Z2UvSURCRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgKaW5k
ZXggY2QwZDY0ZmQ5M2JlNTNiMWYyYzA5NTVjNGE1MWMzMDgzMzcwZjEyNC4uMzYzODU1YTRjY2Zj
NmIwNDcxMjIwODg0OTQwODkxNWIzMjc4MTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJGYWN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0
b3J5LmgKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgIH0KICAgICB+SURCRmFjdG9yeSgp
OwogCisgICAgUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqKTsKKwogICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbihTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnkuaWRsIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmlkbAppbmRleCAwMmVl
ZDBlYjQxMmMyYmM1NmY5N2Q0NjU4Y2MxMWI4YzhmZWE3NzllLi41MDZmYWY4YTExMjRkOTYyZWE1
MGEwYzc1MzgzOGUyOWE0YzNhODhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L0lEQkZhY3RvcnkuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5p
ZGwKQEAgLTI4LDYgKzI4LDggQEAgbW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCiAg
ICAgICAgIENvbmRpdGlvbmFsPUlOREVYRURfREFUQUJBU0UKICAgICBdIElEQkZhY3Rvcnkgewor
ICAgICAgICBbQ2FsbFdpdGg9U2NyaXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBnZXRE
YXRhYmFzZU5hbWVzKCk7CisKICAgICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHRdIElEQlJlcXVlc3Qgb3BlbihpbiBET01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNl
cyAoSURCRGF0YWJhc2VFeGNlcHRpb24pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5jcHAKaW5kZXggNTg4NGZiMjIwNTk4ZWFhYzZl
NWE3MzM0ZDU0ZWU2NTFhZTU3NGMwNy4uMmY0NDYwNjdmMDQ4NTZhMDhhMDY2MjAzYzU0ZDlmNzhk
NTFmOWVlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFj
a2VuZEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tl
bmRJbXBsLmNwcApAQCAtNTksNiArNTksOCBAQCBJREJGYWN0b3J5QmFja2VuZEltcGw6OklEQkZh
Y3RvcnlCYWNrZW5kSW1wbCgpCiB7CiB9CiAKKworCiBJREJGYWN0b3J5QmFja2VuZEltcGw6On5J
REJGYWN0b3J5QmFja2VuZEltcGwoKQogewogfQpAQCAtODEsNiArODMsMjYgQEAgdm9pZCBJREJG
YWN0b3J5QmFja2VuZEltcGw6OnJlbW92ZUlEQkJhY2tpbmdTdG9yZShjb25zdCBTdHJpbmcmIGZp
bGVJZGVudGlmaWVyKQogICAgIG1fYmFja2luZ1N0b3JlTWFwLnJlbW92ZShmaWxlSWRlbnRpZmll
cik7CiB9CiAKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKFBh
c3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IHNlY3VyaXR5T3JpZ2luLCBGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRf
dCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlKQoreworICAg
IEFTU0VSVChiYWNraW5nU3RvcmVUeXBlICE9IERlZmF1bHRCYWNraW5nU3RvcmUpOworCisgICAg
UmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0gb3BlbkJhY2tpbmdTdG9yZShz
ZWN1cml0eU9yaWdpbiwgZGF0YURpciwgbWF4aW11bVNpemUsIGJhY2tpbmdTdG9yZVR5cGUpOwor
ICAgIGlmICghYmFja2luZ1N0b3JlKSB7CisgICAgICAgIGNhbGxiYWNrcy0+b25FcnJvcihJREJE
YXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRpb246OlVOS05PV05fRVJSLCAi
SW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgUmVmUHRy
PERPTVN0cmluZ0xpc3Q+IGRhdGFiYXNlTmFtZXMgPSBET01TdHJpbmdMaXN0OjpjcmVhdGUoKTsK
KworICAgIFZlY3RvcjxTdHJpbmc+IGZvdW5kTmFtZXM7CisgICAgYmFja2luZ1N0b3JlLT5nZXRE
YXRhYmFzZU5hbWVzKGZvdW5kTmFtZXMpOworICAgIGZvciAoVmVjdG9yPFN0cmluZz46OmNvbnN0
X2l0ZXJhdG9yIGl0ID0gZm91bmROYW1lcy5iZWdpbigpOyBpdCAhPSBmb3VuZE5hbWVzLmVuZCgp
OyArK2l0KQorICAgICAgICBkYXRhYmFzZU5hbWVzLT5hcHBlbmQoKml0KTsKKworICAgIGNhbGxi
YWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlTmFtZXMucmVsZWFzZSgpKTsKK30KKwogdm9pZCBJREJG
YWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElE
QkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0
eU9yaWdpbiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNp
emUsIEJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0b3JlVHlwZSkKIHsKICAgICBBU1NFUlQoYmFj
a2luZ1N0b3JlVHlwZSAhPSBEZWZhdWx0QmFja2luZ1N0b3JlKTsKQEAgLTExMiw2ICsxMzQsMjMg
QEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQ
YXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICB9CiAjZW5kaWYKIAorICAgIFJlZlB0cjxJ
REJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNraW5nU3RvcmUoc2VjdXJpdHlP
cmlnaW4sIGRhdGFEaXIsIG1heGltdW1TaXplLCBiYWNraW5nU3RvcmVUeXBlKTsKKyAgICBpZiAo
IWJhY2tpbmdTdG9yZSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VF
cnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFs
IGVycm9yLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxJREJEYXRh
YmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBs
OjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0
b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAgIGNhbGxiYWNrcy0+b25TdWNj
ZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0
KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7Cit9CisKK1Bhc3NSZWZQ
dHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3Rv
cmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5n
U3RvcmVUeXBlKQoreworICAgIEFTU0VSVChiYWNraW5nU3RvcmVUeXBlICE9IERlZmF1bHRCYWNr
aW5nU3RvcmUpOworCisgICAgY29uc3QgU3RyaW5nIGZpbGVJZGVudGlmaWVyID0gY29tcHV0ZUZp
bGVJZGVudGlmaWVyKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBiYWNraW5nU3RvcmVUeXBlKTsKKwog
ICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZTsKICAgICBJREJCYWNraW5n
U3RvcmVNYXA6Oml0ZXJhdG9yIGl0MiA9IG1fYmFja2luZ1N0b3JlTWFwLmZpbmQoZmlsZUlkZW50
aWZpZXIpOwogICAgIGlmIChpdDIgIT0gbV9iYWNraW5nU3RvcmVNYXAuZW5kKCkgJiYgKGJhY2tp
bmdTdG9yZVR5cGUgPT0gaXQyLT5zZWNvbmQtPmJhY2tpbmdTdG9yZVR5cGUoKSkpCkBAIC0xMjMs
MTUgKzE2MiwxMiBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbihjb25zdCBTdHJp
bmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQogICAgICAgICBlbHNlIGlmIChi
YWNraW5nU3RvcmVUeXBlID09IExldmVsREJCYWNraW5nU3RvcmUpCiAgICAgICAgICAgICBiYWNr
aW5nU3RvcmUgPSBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVuKHNlY3VyaXR5T3JpZ2luLmdl
dCgpLCBkYXRhRGlyLCBtYXhpbXVtU2l6ZSwgZmlsZUlkZW50aWZpZXIsIHRoaXMpOwogI2VuZGlm
Ci0gICAgICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktO
T1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFz
ZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0
b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlk
ZW50aWZpZXIpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQo
KSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFi
YXNlQmFja2VuZC5nZXQoKSk7CisgICAgaWYgKGJhY2tpbmdTdG9yZSkKKyAgICAgICAgcmV0dXJu
IGJhY2tpbmdTdG9yZS5yZWxlYXNlKCk7CisKKyAgICByZXR1cm4gMDsKIH0KIAogI2lmIFVTRShM
RVZFTERCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFj
a2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBs
LmgKaW5kZXggZmIzMDNkMWEyYjY1OGQyMmI1MTFlNzY1ZTlkNGU1OWI0ZWNkMWJlNC4uYjcwNGQ5
ODgxZmU1YWMzNDU4OWYxMDg3Y2U3MTBkNmMyMDJkM2ZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC01NSwxMCArNTUsMTIgQEAgcHVi
bGljOgogICAgIHZvaWQgYWRkSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50
aWZpZXIsIElEQkJhY2tpbmdTdG9yZSopOwogICAgIHZvaWQgcmVtb3ZlSURCQmFja2luZ1N0b3Jl
KGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCisgICAgdmlydHVhbCB2b2lkIGdldERh
dGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5
T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNp
emUsIEJhY2tpbmdTdG9yZVR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmlu
ZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3Jp
Z2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUs
IEJhY2tpbmdTdG9yZVR5cGUpOwogCiBwcml2YXRlOgogICAgIElEQkZhY3RvcnlCYWNrZW5kSW1w
bCgpOworICAgIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBvcGVuQmFja2luZ1N0b3JlKFBh
c3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3Qg
bWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpOwogICAgIGJvb2wgbWlncmF0ZUZyb21TUUxp
dGVUb0xldmVsREIoY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0
cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSk7CiAKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKj4gSURCRGF0YWJhc2VCYWNrZW5kTWFw
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZElu
dGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEludGVy
ZmFjZS5oCmluZGV4IDI0ODI2NjI0ZTY4MjI4Yjk2NDZkMzVmZTNmZjlhMDMzZGRhMmU3ZjEuLmE4
NzYxYzgwOWYyYmU3MDhjYTllZDM0NmM0NTA0NDM4M2IxYzUyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlLmgKQEAgLTU3LDYg
KzU3LDggQEAgcHVibGljOgogICAgICAgICBTUUxpdGVCYWNraW5nU3RvcmUKICAgICB9OwogCisg
ICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFE
aXIsIGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpID0gMDsKKwogICAgIHZp
cnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFj
a3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRh
dGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpID0gMDsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDBhMGEyNDcxYzU0ODI4YTRiOGMwYTNmZDI4ZWQ2MDdmYjhlNDA3YzYuLjkzYThjNTI1
N2IzMjY4ODRlMDRmMzVmZGE5YTQ5ZDExZjAzZDdiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApAQCAtMTY0LDYgKzE2NCwyNiBA
QCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6b3Bl
bihTZWN1cml0eU9yaWdpbiogc2VjdXJpdAogICAgIHJldHVybiBiYWNraW5nU3RvcmUucmVsZWFz
ZSgpOwogfQogCit2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldERhdGFiYXNlTmFtZXMo
VmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpCit7CisgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0
YXJ0S2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGVNaW5LZXlGb3JPcmlnaW4obV9pZGVudGlm
aWVyKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IERhdGFiYXNlTmFtZUtleTo6
ZW5jb2RlU3RvcEtleUZvck9yaWdpbihtX2lkZW50aWZpZXIpOworCisgICAgQVNTRVJUKGZvdW5k
TmFtZXMuaXNFbXB0eSgpKTsKKworICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9k
Yi0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICBmb3IgKGl0LT5zZWVrKHN0YXJ0S2V5KTsgaXQtPmlz
VmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIHN0b3BLZXkpIDwgMDsgaXQtPm5leHQo
KSkgeworICAgICAgICBjb25zdCBjaGFyICpwID0gaXQtPmtleSgpLmJlZ2luKCk7CisgICAgICAg
IGNvbnN0IGNoYXIgKmxpbWl0ID0gaXQtPmtleSgpLmVuZCgpOworCisgICAgICAgIERhdGFiYXNl
TmFtZUtleSBkYXRhYmFzZU5hbWVLZXk7CisgICAgICAgIHAgPSBEYXRhYmFzZU5hbWVLZXk6OmRl
Y29kZShwLCBsaW1pdCwgJmRhdGFiYXNlTmFtZUtleSk7CisgICAgICAgIEFTU0VSVChwKTsKKwor
ICAgICAgICBmb3VuZE5hbWVzLmFwcGVuZChkYXRhYmFzZU5hbWVLZXkuZGF0YWJhc2VOYW1lKCkp
OworICAgIH0KK30KKwogYm9vbCBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpleHRyYWN0SURCRGF0
YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBp
bnQ2NF90JiBmb3VuZElkKQogewogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBrZXkgPSBEYXRhYmFz
ZU5hbWVLZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwpAQCAtMjE3LDYgKzIzNywxMSBA
QCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVjdFN0b3JlcyhpbnQ2NF90IGRh
dGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdGFydEtl
eSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRhYmFzZUlkLCAxLCAwKTsKICAg
ICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVu
Y29kZU1heEtleShkYXRhYmFzZUlkKTsKIAorICAgIEFTU0VSVChmb3VuZElkcy5pc0VtcHR5KCkp
OworICAgIEFTU0VSVChmb3VuZE5hbWVzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKGZvdW5kS2V5
UGF0aHMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoZm91bmRBdXRvSW5jcmVtZW50RmxhZ3MuaXNF
bXB0eSgpKTsKKwogICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRl
SXRlcmF0b3IoKTsKICAgICBmb3IgKGl0LT5zZWVrKHN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQoKSAm
JiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIHN0b3BLZXkpIDwgMDsgaXQtPm5leHQoKSkgewogICAg
ICAgICBjb25zdCBjaGFyICpwID0gaXQtPmtleSgpLmJlZ2luKCk7CkBAIC01NjksNiArNTk0LDEx
IEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5kZXhlcyhpbnQ2NF90IGRhdGFi
YXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgY29uc3QgVmVjdG9yPGNoYXI+IHN0YXJ0
S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQs
IDAsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5ID0gSW5kZXhNZXRhRGF0YUtl
eTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQgKyAxLCAwLCAwKTsKIAorICAgIEFT
U0VSVChmb3VuZElkcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChmb3VuZE5hbWVzLmlzRW1wdHko
KSk7CisgICAgQVNTRVJUKGZvdW5kS2V5UGF0aHMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoZm91
bmRVbmlxdWVGbGFncy5pc0VtcHR5KCkpOworCiAgICAgT3duUHRyPExldmVsREJJdGVyYXRvcj4g
aXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGZvciAoaXQtPnNlZWsoc3RhcnRLZXkp
OyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXkoKSwgc3RvcEtleSkgPCAwOyBp
dC0+bmV4dCgpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBpdC0+a2V5KCkuYmVnaW4oKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKaW5k
ZXggOGRkZDI4ZGIyMDdkOGJlZWE4OTkxYzdkZGJiMDg1MWEyODkzODg2My4uMjMxMGM3ZjlhNDcx
YmEwZjdhZTZhMWE2MTVhOWFmZTBhMjFiYjc1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0eU9yaWdp
biosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGludDY0X3QgbWF4aW11bVNpemUsIGNvbnN0IFN0
cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCopOwogICAgIHZpcnR1
YWwgfklEQkxldmVsREJCYWNraW5nU3RvcmUoKTsKIAorICAgIHZpcnR1YWwgdm9pZCBnZXREYXRh
YmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKTsKICAgICB2aXJ0dWFsIGJvb2wg
ZXh0cmFjdElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZv
dW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCk7CiAgICAgdmlydHVhbCBib29sIHNldElEQkRh
dGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZlcnNpb24s
IGludDY0X3QmIHJvd0lkLCBib29sIGludmFsaWRSb3dJZCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IDc1MzFjODVjZGQ2OGNkNGY5N2RhY2My
OTRjMjJiMmYzYWFjMzhlYWUuLmE2Nzk1ZTdlNTRmMzc5YWE1ZDZkNDE4MGIyMmNlOGQ1YzM2NDM2
YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmNwcApAQCAt
ODE3LDYgKzgxNywxNyBAQCBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGUoY29u
c3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhcwogICAgIHJldHVybiByZXQ7
CiB9CiAKK1ZlY3RvcjxjaGFyPiBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZU1pbktleUZvck9yaWdp
bihjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICByZXR1cm4gZW5jb2RlKG9yaWdpbiwgIiIp
OworfQorCitWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGVTdG9wS2V5Rm9yT3Jp
Z2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIC8vIGp1c3QgYWZ0ZXIgb3JpZ2luIGlu
IGNvbGxhdGlvbiBvcmRlcgorICAgIHJldHVybiBlbmNvZGVNaW5LZXlGb3JPcmlnaW4ob3JpZ2lu
ICsgIlx4MDEiKTsKK30KKwogaW50IERhdGFiYXNlTmFtZUtleTo6Y29tcGFyZShjb25zdCBEYXRh
YmFzZU5hbWVLZXkmIG90aGVyKQogewogICAgIGlmIChpbnQgeCA9IGNvZGVQb2ludENvbXBhcmUo
bV9vcmlnaW4sIG90aGVyLm1fb3JpZ2luKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0
b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZl
bERCQ29kaW5nLmgKaW5kZXggNGU3MDJjZGZlYTA4Yjc0NWQ3ZGYwNTgyYTFhNmFkNDFkODU5ZDlm
YS4uYWE3NTM3Yzc0NzIwY2MzMmY3YjllOTUwZGNjODA3MWVmNjUxNzQ0MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTExNyw2ICsxMTcsOCBAQCBjbGFz
cyBEYXRhYmFzZU5hbWVLZXkgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWNv
ZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0LCBEYXRhYmFzZU5hbWVLZXkq
IHJlc3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGUoY29uc3QgU3RyaW5nJiBv
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAgICBzdGF0aWMgVmVjdG9yPGNo
YXI+IGVuY29kZU1pbktleUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbik7CisgICAgc3Rh
dGljIFZlY3RvcjxjaGFyPiBlbmNvZGVTdG9wS2V5Rm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3Jp
Z2luKTsKICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3QgeyByZXR1cm4gbV9vcmlnaW47IH0KICAg
ICBTdHJpbmcgZGF0YWJhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhYmFzZU5hbWU7IH0K
ICAgICBpbnQgY29tcGFyZShjb25zdCBEYXRhYmFzZU5hbWVLZXkmIG90aGVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGZlZDMzMmQ3YzIyMDY4ZGVlYWZmYTRjYjM4
N2E2NTZmYzJkMWQ0MjYuLjY0MzBkMjUxMTJjMjUzYWMxMTI4NmFjMDk1NDQ3NmJhMDcyNTFiMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApAQCAtMTg2LDYgKzE4NiwxMyBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU3VjY2Vzc0V2ZW50KCkKICAgICByZXR1
cm4gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VjY2Vzc0V2ZW50LCBmYWxzZSwgZmFsc2Up
OwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPERPTVN0cmluZ0xp
c3Q+IGRvbVN0cmluZ0xpc3QpCit7CisgICAgQVNTRVJUKCFtX2Vycm9yQ29kZSAmJiBtX2Vycm9y
TWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOworICAgIG1fcmVzdWx0ID0gSURCQW55Ojpj
cmVhdGUoZG9tU3RyaW5nTGlzdCk7CisgICAgZW5xdWV1ZUV2ZW50KGNyZWF0ZVN1Y2Nlc3NFdmVu
dCgpKTsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJz
b3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewogICAgIEFTU0VSVCghbV9lcnJvckNvZGUg
JiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFn
ZS9JREJSZXF1ZXN0LmgKaW5kZXggOTAwZGYwMTcyOWZlNzhmNDY0YWMyNTQzMzM0NDM2MjBmMGFl
ZTUwMy4uMGZhMDA2YTBkMWYxNGMwOWQ1MDY0NjAyNzcyOWY3MzEyN2U1MmM3ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpZiBFTkFCTEUoSU5E
RVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgogI2luY2x1ZGUgIkV2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC03NCw2ICs3NSw3IEBAIHB1Ymxp
YzoKIAogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NS
ZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNz
UmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwogICAgIHZpcnR1YWwgdm9pZCBv
blN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmly
dHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4pOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3BwCmluZGV4IDM0NjE3NjBiZDA4
YzhiZThmYTFiY2E4ZjgzYjM3MDZmYjdkZDk1MWYuLjNlYjg3ZWNhYmUwZDk0NzcwOTEzOTliZDk5
OTE2MjljYTY3YzIyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCU1FM
aXRlQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0
ZUJhY2tpbmdTdG9yZS5jcHAKQEAgLTE5Nyw2ICsxOTcsMjAgQEAgUGFzc1JlZlB0cjxJREJCYWNr
aW5nU3RvcmU+IElEQlNRTGl0ZUJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2Vj
dXJpdHkKICAgICByZXR1cm4gYmFja2luZ1N0b3JlLnJlbGVhc2UoKTsKIH0KIAordm9pZCBJREJT
UUxpdGVCYWNraW5nU3RvcmU6OmdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5k
TmFtZXMpCit7CisgICAgQVNTRVJUKGZvdW5kTmFtZXMuaXNFbXB0eSgpKTsKKworICAgIFNRTGl0
ZVN0YXRlbWVudCBxdWVyeShtX2RiLCAiU0VMRUNUIG5hbWUgRlJPTSBEYXRhYmFzZXMiKTsKKyAg
ICBpZiAocXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7CisgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgd2hpbGUgKHF1ZXJ5
LnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpCisgICAgICAgIGZvdW5kTmFtZXMuYXBwZW5kKHF1ZXJ5
LmdldENvbHVtblRleHQoMCkpOworfQorCiBib29sIElEQlNRTGl0ZUJhY2tpbmdTdG9yZTo6ZXh0
cmFjdElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5k
VmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkKIHsKICAgICBTUUxpdGVTdGF0ZW1lbnQgZGF0YWJh
c2VRdWVyeShtX2RiLCAiU0VMRUNUIGlkLCB2ZXJzaW9uIEZST00gRGF0YWJhc2VzIFdIRVJFIG5h
bWUgPSA/Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0ZUJh
Y2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3Rv
cmUuaAppbmRleCBiMTJhYWZhNDYyNGZjMTA5Y2U4YzE2YTBkZTkxY2NhYWY0ZTEyZDkzLi4yYTRi
YWFiZDJhOTAwMjAxNzdhMDM0YmQ3N2JiZTQzMGEyMGUzZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCU1FMaXRlQmFja2luZ1N0b3JlLmgKQEAgLTM5LDYgKzM5LDcgQEAgcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gb3BlbihTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGludDY0X3QgbWF4aW11bVNpemUsIGNv
bnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5kSW1wbCopOwogICAg
IHZpcnR1YWwgfklEQlNRTGl0ZUJhY2tpbmdTdG9yZSgpOwogCisgICAgdmlydHVhbCB2b2lkIGdl
dERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpOwogICAgIHZpcnR1YWwg
Ym9vbCBleHRyYWN0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKTsKICAgICB2aXJ0dWFsIGJvb2wgc2V0
SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmVy
c2lvbiwgaW50NjRfdCYgcm93SWQsIGJvb2wgaW52YWxpZFJvd0lkKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwppbmRleCAzNDI5YTY1YzkxNzBhZTdkYjk5Y2E5OWM5YWFmZjljMGJkZjM1OWRk
Li4zZTRkYjM1YTAyNzM4Y2E4ZmVkYjk5OTMxYzdjMmZhNzM3ZGIxMzgwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTA5LTI2ICBKb3NodWEgQmVsbCAg
PGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhlZERCOiBTZWNvbmQgaGFsZiBv
ZiBJREJGYWN0b3J5LmdldERhdGFiYXNlTmFtZXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4ODE4CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkcyBhYmlsaXR5IHRvIGVudW1l
cmF0ZSBJbmRleGVkREIgZGF0YWJhc2VzIHdpdGhpbiBhbiBvcmlnaW4uCisKKyAgICAgICAgKiBz
cmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpJREJDYWxsYmFja3NQ
cm94eTo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuaDoKKyAg
ICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIHNy
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5Lmg6CisgICAgICAgICogc3JjL1dlYklEQkNhbGxiYWNr
c0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nl
c3MpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBsLmg6CisgICAgICAgICogc3Jj
L1dlYklEQkZhY3RvcnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeUlt
cGw6OmdldERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5o
OgorCiAyMDExLTA5LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CiAKICAgICAg
ICAgQWx3YXlzIGVuYWJsZSBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJT05TKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwCmluZGV4IGM1
MzZjMzhkYWMxNTlhNmQ1OGUwYTYzZGQ1MjVkMzY2NWNkMjNiMWUuLjdiMjIyMmNlNzBkODM5ZTU2
ODY2NTQ4ZDg5NTQzMTFkM2U0MjU1YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTg0LDYgKzg0LDExIEBAIHZvaWQgSURCQ2Fs
bGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRyYW5zYWN0aW9uQmFja2VuZElu
dGVyZmFjZT4gYmFjCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2VzcyhuZXcgV2ViSURCVHJhbnNh
Y3Rpb25JbXBsKGJhY2tlbmQpKTsKIH0KIAordm9pZCBJREJDYWxsYmFja3NQcm94eTo6b25TdWNj
ZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9tU3RyaW5nTGlzdCkKK3sKKyAgICBtX2Nh
bGxiYWNrcy0+b25TdWNjZXNzKFdlYkRPTVN0cmluZ0xpc3QoZG9tU3RyaW5nTGlzdCkpOworfQor
CiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsKICAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShzZXJpYWxpemVkU2NyaXB0VmFsdWUp
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5oCmlu
ZGV4IGU5ZjQ1ZmY1Y2YxMjQ0ODEyMDVmN2ZmYTAxMmRiNDRjOTZiZTQ0MTIuLmVjYjE3MGE2MGUz
OGVhMWRkN2Q2MmM4MDIzMDI4NGUwMmFjMDAxYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB+SURCQ2FsbGJhY2tzUHJveHkoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvbkVy
cm9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJvcj4pOworICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpET01TdHJpbmdMaXN0Pik7CiAgICAg
dmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkN1cnNvckJhY2tl
bmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFBhc3NSZWZQdHI8V2Vi
Q29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4pOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCBhNDVj
OTliYTU1MjBmZmZhYWM2MzI3NzllOTljNWE0MTRkNWU2M2UxLi5kNzg5ZmY1MzZiNzUxZmMwZDZm
YWE1OTAxNmExMGRmNTBkYjIyMDNmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAtNjQsNiArNjQsMjAgQEAgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6fklEQkZhY3RvcnlCYWNrZW5kUHJveHkoKQogewogfQogCit2
b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJ
REJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3Jp
Z2luLCBGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVt
U2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlKQoreworICAgIFdlYlNlY3Vy
aXR5T3JpZ2luIG9yaWdpbihwcnBPcmlnaW4pOworICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUg
PSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CisgICAgV2ViVmlld0ltcGwqIHdlYlZp
ZXcgPSB3ZWJGcmFtZS0+dmlld0ltcGwoKTsKKworICAgIGlmICh3ZWJWaWV3LT5wZXJtaXNzaW9u
Q2xpZW50KCkgJiYgIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dJbmRleGVkREIo
d2ViRnJhbWUsICJEYXRhYmFzZSBMaXN0aW5nIiwgb3JpZ2luKSkgeworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcigwLCAiVGhlIHVzZXIgZGVuaWVkIHBlcm1p
c3Npb24gdG8gYWNjZXNzIHRoZSBkYXRhYmFzZS4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX3dlYklEQkZhY3RvcnktPmdldERhdGFiYXNlTmFtZXMobmV3IFdlYklEQkNhbGxi
YWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpciwgbWF4aW11bVNp
emUsIHN0YXRpY19jYXN0PFdlYklEQkZhY3Rvcnk6OkJhY2tpbmdTdG9yZVR5cGU+KGJhY2tpbmdT
dG9yZVR5cGUpKTsKK30KKwogdm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0
IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1Jl
ZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luLCBGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5n
U3RvcmVUeXBlKQogewogICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihwcnBPcmlnaW4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94
eS5oCmluZGV4IDg5ZWQzNTUyZGRhZmRhM2JmZDMyZTE1ZTNmYjc0ZDc1OWMxZDY1MzIuLjFkYjA0
NjAwZGUzZjg3MTBlYjU3MThmM2JkOTM5NmFlMjI5ODQxMjYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmgKQEAgLTQ0LDcgKzQ0
LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkZhY3RvcnlC
YWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFsIH5JREJGYWN0b3J5QmFja2Vu
ZFByb3h5KCk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkRPTVN0cmluZ0xpc3Q+IGRhdGFi
YXNlcyh2b2lkKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhQYXNz
UmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+LCBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRf
dCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW4o
Y29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBh
c3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpGcmFtZSosIGNvbnN0
IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSk7
CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJ
REJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuY3BwCmluZGV4IDNlNGFiNTBjMjc3OWM2ZWU0MjA4NTMxOTNmYjdkOGRiMzk3
ZWJjN2MuLjRlZTE1YWUwNzU2NTkyMGVmNjY1YjI3ZTViYjMyZjZmNTA3ZDg1MzYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCkBA
IC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJvci5oIgogI2luY2x1ZGUg
IklEQktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFja2VuZFByb3h5LmgiCisjaW5j
bHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldlYklEQkNhbGxiYWNrcy5oIgog
I2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJv
ci5oIgpAQCAtNTksNiArNjAsMTEgQEAgdm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvbkVycm9y
KGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImIGVycm9yKQogICAgIG1fY2FsbGJhY2tzLT5vbkVy
cm9yKGVycm9yKTsKIH0KIAordm9pZCBXZWJJREJDYWxsYmFja3NJbXBsOjpvblN1Y2Nlc3MoY29u
c3QgV2ViRE9NU3RyaW5nTGlzdCYgZG9tU3RyaW5nTGlzdCkKK3sKKyAgICBtX2NhbGxiYWNrcy0+
b25TdWNjZXNzKGRvbVN0cmluZ0xpc3QpOworfQorCiB2b2lkIFdlYklEQkNhbGxiYWNrc0ltcGw6
Om9uU3VjY2VzcyhXZWJJREJDdXJzb3IqIGN1cnNvcikKIHsKICAgICBtX2NhbGxiYWNrcy0+b25T
dWNjZXNzKElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGN1cnNvcikpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0lt
cGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuaApp
bmRleCBjNDg2NjAxMmRiYzkwOTIwYjYzNjc1OGQyOGFlYjFhYWMzMWRiZWVkLi45YTI5NGIxNjA2
YjkwODZjMTVjMzY5ODRmM2E1YWEzOGRkMWQ3YTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00Miw2ICs0Miw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIH5XZWJJREJDYWxsYmFja3NJbXBsKCk7CiAKICAgICB2aXJ0dWFsIHZv
aWQgb25FcnJvcihjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJik7CisgICAgdmlydHVhbCB2b2lk
IG9uU3VjY2Vzcyhjb25zdCBXZWJET01TdHJpbmdMaXN0Jik7CiAgICAgdmlydHVhbCB2b2lkIG9u
U3VjY2VzcyhXZWJJREJDdXJzb3IqKTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNjZXNzKFdlYklE
QkRhdGFiYXNlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJJREJLZXkm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNw
cAppbmRleCA1YWRmN2Y4ZDExMGI3ZGRhNWM4NzEzN2Q1Y2Y3NmMwNzRhZDRhOTNhLi42NjYwODdi
ODg2NTc1OTdlMTZlNDU2ZDA4MjUwMzE3OWJlNjIxNGY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCkBAIC03MSw2ICs3MSwzMiBAQCBX
ZWJJREJGYWN0b3J5SW1wbDo6fldlYklEQkZhY3RvcnlJbXBsKCkKIHsKIH0KIAordm9pZCBXZWJJ
REJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNr
cywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJT
dHJpbmcmIGRhdGFEaXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0
b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlKQoreworICAgIFdlYlN0cmluZyBwYXRoID0gZGF0YURp
cjsKKworICAgIGlmIChvdmVycmlkZGVuQmFja2luZ1N0b3JlVHlwZSAhPSBEZWZhdWx0QmFja2lu
Z1N0b3JlKSB7CisgICAgICAgIC8vIEJhY2tpbmcgc3RvcmUgdHlwZSBvdmVycmlkZGVuIGJ5IExh
eW91dFRlc3RDb250cm9sbGVyLgorICAgICAgICBiYWNraW5nU3RvcmVUeXBlID0gb3ZlcnJpZGRl
bkJhY2tpbmdTdG9yZVR5cGU7CisgICAgfQorCisgICAgaWYgKGJhY2tpbmdTdG9yZVR5cGUgPT0g
RGVmYXVsdEJhY2tpbmdTdG9yZSkKKyAgICAgICAgYmFja2luZ1N0b3JlVHlwZSA9IExldmVsREJC
YWNraW5nU3RvcmU7CisKKyAgICBpZiAoZGF0YURpci5pc0VtcHR5KCkgJiYgYmFja2luZ1N0b3Jl
VHlwZSA9PSBMZXZlbERCQmFja2luZ1N0b3JlKSB7CisgICAgICAgIGlmICghdGVtcERhdGFiYXNl
Rm9sZGVyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTGF5b3V0IHRlc3RzIHByb3ZpZGUg
YSB0ZW1wb3JhcnkgZm9sZGVyLgorICAgICAgICAgICAgcGF0aCA9IHRlbXBEYXRhYmFzZUZvbGRl
cjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZvciBpbmNvZ25pdG8gbW9kZSwg
ZmFsbCBiYWNrIHRvIFNRTGl0ZS4KKyAgICAgICAgICAgIGJhY2tpbmdTdG9yZVR5cGUgPSBTUUxp
dGVCYWNraW5nU3RvcmU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX2lkYkZhY3RvcnlCYWNr
ZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIo
Y2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgcGF0aCwgbWF4aW11bVNpemUsIHN0YXRpY19jYXN0PElE
QkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpCYWNraW5nU3RvcmVUeXBlPihiYWNraW5nU3RvcmVU
eXBlKSk7Cit9CisKKwogdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9y
aWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpciwgdW5zaWdu
ZWQgbG9uZyBsb25nIG1heGltdW1TaXplLCBCYWNraW5nU3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5
cGUpCiB7CiAgICAgV2ViU3RyaW5nIHBhdGggPSBkYXRhRGlyOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKaW5kZXggNjJiZDllZDkyNzhjYmE0MzZm
ZTM0NzFhMmE0MGM3MjUzZWZiMDQzYy4uOTk0MDMwOWNkODRiYTk5NzQyZGJjNWQ1ZjE1MGM5Yjk0
YzAwNDIyMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFj
dG9yeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5
SW1wbC5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBXZWJJREJGYWN0b3J5SW1wbCgp
OwogICAgIHZpcnR1YWwgfldlYklEQkZhY3RvcnlJbXBsKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJTZWN1cml0eU9yaWdp
biYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyLCB1bnNpZ25lZCBsb25nIGxv
bmcgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVu
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tzKiwgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpciwgdW5zaWduZWQg
bG9uZyBsb25nIG1heGltdW1TaXplLCBCYWNraW5nU3RvcmVUeXBlKTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108726</attachid>
            <date>2011-09-26 14:44:33 -0700</date>
            <delta_ts>2011-09-26 17:42:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68818-20110926144432.patch</filename>
            <type>text/plain</type>
            <size>37293</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTU5NDcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2ZDIyMzdlNTUwYzk1NTE2NTA4ZThm
ZWVkZWUxMTdmNzM0M2U4ZTExLi5mNWMzZDhmNmI3YjVjOWUxNDYxMzU1MmMwZjNjYjk3OTA5ZjIz
OGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTEtMDktMjYgIEpvc2h1YSBCZWxsICA8anNi
ZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbmRleGVkREI6IFNlY29uZCBoYWxmIG9mIElE
QkZhY3RvcnkuZ2V0RGF0YWJhc2VOYW1lcyBpbXBsZW1lbnRhdGlvbgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Njg4MTgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGFiaWxpdHkgdG8gZW51bWVyYXRl
IEluZGV4ZWREQiBkYXRhYmFzZXMgd2l0aGluIGFuIG9yaWdpbi4KKworICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbDogQWRkZWQuCisKIDIwMTEt
MDktMjYgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9taXVtLm9yZz4KIAogICAgICAgICBX
ZWIgSW5zcGVjdG9yOiBbRXh0ZW5zaW9ucyBBUEldIGFsbG93IHJlc291cmNlcyB0byBob29rIG9u
IGNsaWNrIG9uIHJlc291cmNlIGxpbmtzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTY5
MWVlMjg1OWRmOTFiYWFhNTIwYzIwMTBmNzcyY2NiYzY3ZWJhZgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDIwIEBACitUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERCJ3MgSURCRmFj
dG9yeS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2luZGV4ZWREQiA9IHdpbmRv
dy5pbmRleGVkREIgfHwgd2luZG93LndlYmtpdEluZGV4ZWREQiB8fCB3aW5kb3cubW96SW5kZXhl
ZERCOworUEFTUyBpbmRleGVkREIgPT0gbnVsbCBpcyBmYWxzZQoraW5kZXhlZERCLmdldERhdGFi
YXNlTmFtZXMoKQorZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdldC5yZXN1bHQKK1BBU1MgZGF0
YWJhc2VOYW1lcy5jb250YWlucygnc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MnKSBp
cyBmYWxzZQorUEFTUyBkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMg
Tk9UIEVYSVNUJykgaXMgZmFsc2UKK2luZGV4ZWREQi5vcGVuKG5hbWUsIGRlc2NyaXB0aW9uKQor
aW5kZXhlZERCLmdldERhdGFiYXNlTmFtZXMoKQorZGF0YWJhc2VOYW1lcyA9IGV2ZW50LnRhcmdl
dC5yZXN1bHQKK1BBU1MgZGF0YWJhc2VOYW1lcy5jb250YWlucygnc3RvcmFnZS9pbmRleGVkZGIv
ZmFjdG9yeS1iYXNpY3MnKSBpcyB0cnVlCitQQVNTIGRhdGFiYXNlTmFtZXMuY29udGFpbnMoJ0RB
VEFCQVNFIFRIQVQgRE9FUyBOT1QgRVhJU1QnKSBpcyBmYWxzZQorUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2ZhY3RvcnktYmFzaWNzLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9y
YWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFmODdmZDE2ODdk
NjI1NDMyNGVlMzU0YzZiZTg2ZTljYmUyYjI0MTgKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcy5odG1sCkBAIC0wLDAgKzEsNjgg
QEAKKzxodG1sPgorPGhlYWQ+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uL2Zh
c3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3NzIj4KKzxzY3JpcHQgc3JjPSIuLi8uLi9m
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LWZ1bmN0aW9uLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KKzxzY3JpcHQ+CisKK2Rlc2NyaXB0aW9uKCJUZXN0IHRoZSBiYXNpY3Mgb2YgSW5kZXhlZERC
J3MgSURCRmFjdG9yeS4iKTsKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIAorICAg
IGxheW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKKworCitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBpbmRleGVkREIgPSBldmFsQW5kTG9nKCJpbmRleGVkREIgPSB3aW5kb3cuaW5k
ZXhlZERCIHx8IHdpbmRvdy53ZWJraXRJbmRleGVkREIgfHwgd2luZG93Lm1vekluZGV4ZWREQjsi
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJpbmRleGVkREIgPT0gbnVsbCIpOworCisgICAgbmFtZSA9
ICdzdG9yYWdlL2luZGV4ZWRkYi9mYWN0b3J5LWJhc2ljcyc7CisgICAgZGVzY3JpcHRpb24gPSAi
TXkgVGVzdCBEYXRhYmFzZSI7CisKKyAgICByZXF1ZXN0ID0gZXZhbEFuZExvZygiaW5kZXhlZERC
LmdldERhdGFiYXNlTmFtZXMoKSIpOworICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZ2V0RGF0YWJh
c2VOYW1lc1N1Y2Nlc3MxOworICAgIHJlcXVlc3Qub25lcnJvciA9IHVuZXhwZWN0ZWRFcnJvckNh
bGxiYWNrOworfQorCitmdW5jdGlvbiBnZXREYXRhYmFzZU5hbWVzU3VjY2VzczEoKQoreworICAg
IHZhciBkYXRhYmFzZU5hbWVzOworICAgIGV2YWxBbmRMb2coImRhdGFiYXNlTmFtZXMgPSBldmVu
dC50YXJnZXQucmVzdWx0Iik7CisgICAgc2hvdWxkQmVGYWxzZSgiZGF0YWJhc2VOYW1lcy5jb250
YWlucygnIiArIG5hbWUgKyAiJykiKTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVz
LmNvbnRhaW5zKCdEQVRBQkFTRSBUSEFUIERPRVMgTk9UIEVYSVNUJykiKTsKKworICAgIHJlcXVl
c3QgPSBldmFsQW5kTG9nKCJpbmRleGVkREIub3BlbihuYW1lLCBkZXNjcmlwdGlvbikiKTsKKyAg
ICByZXF1ZXN0Lm9uc3VjY2VzcyA9IG9wZW5TdWNjZXNzOworICAgIHJlcXVlc3Qub25lcnJvciA9
IHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrOworfQorCitmdW5jdGlvbiBvcGVuU3VjY2VzcygpCit7
CisgICAgcmVxdWVzdCA9IGV2YWxBbmRMb2coImluZGV4ZWREQi5nZXREYXRhYmFzZU5hbWVzKCki
KTsKKyAgICByZXF1ZXN0Lm9uc3VjY2VzcyA9IGdldERhdGFiYXNlTmFtZXNTdWNjZXNzMjsKKyAg
ICByZXF1ZXN0Lm9uZXJyb3IgPSB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjazsKK30KKworZnVuY3Rp
b24gZ2V0RGF0YWJhc2VOYW1lc1N1Y2Nlc3MyKCkKK3sKKyAgICB2YXIgZGF0YWJhc2VOYW1lczsK
KyAgICBldmFsQW5kTG9nKCJkYXRhYmFzZU5hbWVzID0gZXZlbnQudGFyZ2V0LnJlc3VsdCIpOwor
ICAgIHNob3VsZEJlVHJ1ZSgiZGF0YWJhc2VOYW1lcy5jb250YWlucygnIiArIG5hbWUgKyAiJyki
KTsKKyAgICBzaG91bGRCZUZhbHNlKCJkYXRhYmFzZU5hbWVzLmNvbnRhaW5zKCdEQVRBQkFTRSBU
SEFUIERPRVMgTk9UIEVYSVNUJykiKTsKKworICAgIC8vIEZJWE1FOiB0ZXN0IGluZGV4ZWREQi5k
ZWxldGVEYXRhYmFzZShkYXRhYmFzZU5hbWUpCisgICAgLy8gRklYTUU6IHRlc3QgaW5kZXhlZERC
LmNtcChrZXkxLCBrZXkyKQorICAgIGRvbmUoKTsKK30KKwordGVzdCgpOworCit2YXIgc3VjY2Vz
c2Z1bGx5UGFyc2VkID0gdHJ1ZTsKKworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggMTljNTE1YTA1ZjhmN2M1NjhlYmE2NTA2ZjE3ZGEyZjM2NDUxYWFhZS4uZWRiMjkz
YmRlNTMwZTEyMTllY2NlYTVhNzQxY2E1NmMwZjJhY2VkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ4IEBACisyMDExLTA5LTI2ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgSW5kZXhlZERCOiBTZWNvbmQgaGFsZiBvZiBJREJGYWN0b3J5LmdldERhdGFiYXNl
TmFtZXMgaW1wbGVtZW50YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTY4ODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGVzdDogc3RvcmFnZS9pbmRleGVkZGIvZmFjdG9yeS1iYXNpY3MuaHRtbAor
CisgICAgICAgIEFkZHMgYWJpbGl0eSB0byBlbnVtZXJhdGUgSW5kZXhlZERCIGRhdGFiYXNlcyB3
aXRoaW4gYW4gb3JpZ2luLgorCisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4SURCQW55
Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvVjgpOgorICAgICAgICAqIHN0b3JhZ2Uv
SURCQW55LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OklEQkFueTo6ZG9tU3RyaW5nTGlzdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJREJBbnk6OnNldCk6CisgICAgICAgICogc3RvcmFnZS9JREJBbnku
aDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oOgorICAgICAgICAqIHN0b3Jh
Z2UvSURCQ2FsbGJhY2tzLmg6CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OklEQkZhY3Rvcnk6OmdldERhdGFiYXNlTmFtZXMpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRmFjdG9yeS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCRmFjdG9yeS5pZGw6
CisgICAgICAgICogc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbXBsOjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW1wbDo6b3Blbik6CisgICAgICAgIChXZWJD
b3JlOjpJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW5CYWNraW5nU3RvcmUpOgorICAgICAgICAq
IHN0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmg6CisgICAgICAgICogc3RvcmFnZS9JREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZS5oOgorICAgICAgICAqIHN0b3JhZ2UvSURCTGV2ZWxEQkJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFja2luZ1N0b3Jl
OjpnZXREYXRhYmFzZU5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OklEQkxldmVsREJCYWNraW5n
U3RvcmU6OmdldE9iamVjdFN0b3Jlcyk6CisgICAgICAgIChXZWJDb3JlOjpJREJMZXZlbERCQmFj
a2luZ1N0b3JlOjpnZXRJbmRleGVzKToKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJCYWNr
aW5nU3RvcmUuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0YWJhc2VOYW1lS2V5OjplbmNvZGVN
aW5LZXlGb3JPcmlnaW4pOgorICAgICAgICAoV2ViQ29yZTo6SURCTGV2ZWxEQkNvZGluZzo6RGF0
YWJhc2VOYW1lS2V5OjplbmNvZGVTdG9wS2V5Rm9yT3JpZ2luKToKKyAgICAgICAgKiBzdG9yYWdl
L0lEQkxldmVsREJDb2RpbmcuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlJlcXVlc3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SURCUmVxdWVzdDo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzdG9y
YWdlL0lEQlJlcXVlc3QuaDoKKyAgICAgICAgKiBzdG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9y
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJREJTUUxpdGVCYWNraW5nU3RvcmU6OmdldERhdGFi
YXNlTmFtZXMpOgorICAgICAgICAqIHN0b3JhZ2UvSURCU1FMaXRlQmFja2luZ1N0b3JlLmg6CisK
IDIwMTEtMDktMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAg
IFtRdF0gVW51c2VkIHZhcmlhYmxlIGluIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTmV0d29y
a1JlcXVlc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhJREJBbnlDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
SURCQW55Q3VzdG9tLmNwcAppbmRleCBhMWE4NjM2ZGZmZTBhN2Y0NDkwMDQwMzkwMDQ2ZGVkYjA4
OTNmODc1Li5lNDgzMWFkOWEyNjBlZmM1ODAzMTE4NTg4YmVjZjk1ZDg4YTJiMjJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJREJBbnlDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOElEQkFueUN1c3RvbS5j
cHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJWOElEQkFueS5oIgogCiAjaW5jbHVkZSAi
U2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCisjaW5jbHVkZSAiVjhET01TdHJpbmdMaXN0LmgiCiAj
aW5jbHVkZSAiVjhJREJDdXJzb3IuaCIKICNpbmNsdWRlICJWOElEQkN1cnNvcldpdGhWYWx1ZS5o
IgogI2luY2x1ZGUgIlY4SURCRGF0YWJhc2UuaCIKQEAgLTUzLDYgKzU0LDggQEAgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IHRvVjgoSURCQW55KiBpbXBsKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVm
aW5lZCgpOwogICAgIGNhc2UgSURCQW55OjpOdWxsVHlwZToKICAgICAgICAgcmV0dXJuIHY4OjpO
dWxsKCk7CisgICAgY2FzZSBJREJBbnk6OkRPTVN0cmluZ0xpc3RUeXBlOgorICAgICAgICByZXR1
cm4gdG9WOChpbXBsLT5kb21TdHJpbmdMaXN0KCkpOwogICAgIGNhc2UgSURCQW55OjpJREJDdXJz
b3JUeXBlOgogICAgICAgICByZXR1cm4gdG9WOChpbXBsLT5pZGJDdXJzb3IoKSk7CiAgICAgY2Fz
ZSBJREJBbnk6OklEQkN1cnNvcldpdGhWYWx1ZVR5cGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkFueS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkFueS5j
cHAKaW5kZXggMWUwNzZhOWIzZDg5MDIzMzFjMjVmM2RkNWE3Y2Q5MTBmYWNiZjNjZC4uNTdhNDA2
ZTJiYjA3YjBiZDZkMjVkZGJiODFiYzY0ZmU5ZWFhMDZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJBbnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
QW55LmNwcApAQCAtNTgsMTMgKzU4LDE4IEBAIElEQkFueTo6fklEQkFueSgpCiB7CiB9CiAKK1Bh
c3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gSURCQW55Ojpkb21TdHJpbmdMaXN0KCkKK3sKKyAgICBB
U1NFUlQobV90eXBlID09IERPTVN0cmluZ0xpc3RUeXBlKTsKKyAgICByZXR1cm4gbV9kb21TdHJp
bmdMaXN0OworfQorCiBQYXNzUmVmUHRyPElEQkN1cnNvcj4gSURCQW55OjppZGJDdXJzb3IoKQog
ewogICAgIEFTU0VSVChtX3R5cGUgPT0gSURCQ3Vyc29yVHlwZSk7CiAgICAgcmV0dXJuIG1faWRi
Q3Vyc29yOwogfQogCi0KIFBhc3NSZWZQdHI8SURCQ3Vyc29yV2l0aFZhbHVlPiBJREJBbnk6Omlk
YkN1cnNvcldpdGhWYWx1ZSgpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBJREJDdXJzb3JXaXRo
VmFsdWVUeXBlKTsKQEAgLTExOSw2ICsxMjQsMTMgQEAgdm9pZCBJREJBbnk6OnNldE51bGwoKQog
ICAgIG1fdHlwZSA9IE51bGxUeXBlOwogfQogCit2b2lkIElEQkFueTo6c2V0KFBhc3NSZWZQdHI8
RE9NU3RyaW5nTGlzdD4gdmFsdWUpCit7CisgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRU
eXBlKTsKKyAgICBtX3R5cGUgPSBET01TdHJpbmdMaXN0VHlwZTsKKyAgICBtX2RvbVN0cmluZ0xp
c3QgPSB2YWx1ZTsKK30KKwogdm9pZCBJREJBbnk6OnNldChQYXNzUmVmUHRyPElEQkN1cnNvcldp
dGhWYWx1ZT4gdmFsdWUpCiB7CiAgICAgQVNTRVJUKG1fdHlwZSA9PSBVbmRlZmluZWRUeXBlKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdG9yYWdlL0lEQkFueS5oCmluZGV4IGU3ZTk0ZjlkOTJhMDczYjlmN2Q1ZjNiMmJmNzNj
N2E1MTFmZWMwZTUuLjZiZWRhNTg4ODA4NGJjMjIxYTNkMThjNjAzNjQ2NDY0MmRjYTdlNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQW55LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3RvcmFnZS9JREJBbnkuaApAQCAtMzQsNiArMzQsNyBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKK2NsYXNzIERPTVN0cmluZ0xpc3Q7CiBjbGFzcyBJREJDdXJzb3I7CiBjbGFzcyBJ
REJDdXJzb3JXaXRoVmFsdWU7CiBjbGFzcyBJREJEYXRhYmFzZTsKQEAgLTY3LDYgKzY4LDcgQEAg
cHVibGljOgogICAgIGVudW0gVHlwZSB7CiAgICAgICAgIFVuZGVmaW5lZFR5cGUgPSAwLAogICAg
ICAgICBOdWxsVHlwZSwKKyAgICAgICAgRE9NU3RyaW5nTGlzdFR5cGUsCiAgICAgICAgIElEQkN1
cnNvclR5cGUsCiAgICAgICAgIElEQkN1cnNvcldpdGhWYWx1ZVR5cGUsCiAgICAgICAgIElEQkRh
dGFiYXNlVHlwZSwKQEAgLTgwLDYgKzgyLDcgQEAgcHVibGljOgogCiAgICAgVHlwZSB0eXBlKCkg
Y29uc3QgeyByZXR1cm4gbV90eXBlOyB9CiAgICAgLy8gVXNlIHR5cGUoKSB0byBmaWd1cmUgb3V0
IHdoaWNoIG9uZSBvZiB0aGVzZSB5b3UncmUgYWxsb3dlZCB0byBjYWxsLgorICAgIFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4gZG9tU3RyaW5nTGlzdCgpOwogICAgIFBhc3NSZWZQdHI8SURCQ3Vy
c29yPiBpZGJDdXJzb3IoKTsKICAgICBQYXNzUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gaWRi
Q3Vyc29yV2l0aFZhbHVlKCk7CiAgICAgUGFzc1JlZlB0cjxJREJEYXRhYmFzZT4gaWRiRGF0YWJh
c2UoKTsKQEAgLTkyLDYgKzk1LDcgQEAgcHVibGljOgogCiAgICAgLy8gU2V0IGNhbiBvbmx5IGJl
IGNhbGxlZCBvbmNlLgogICAgIHZvaWQgc2V0TnVsbCgpOworICAgIHZvaWQgc2V0KFBhc3NSZWZQ
dHI8RE9NU3RyaW5nTGlzdD4pOwogICAgIHZvaWQgc2V0KFBhc3NSZWZQdHI8SURCQ3Vyc29yPik7
CiAgICAgdm9pZCBzZXQoUGFzc1JlZlB0cjxJREJDdXJzb3JXaXRoVmFsdWU+KTsKICAgICB2b2lk
IHNldChQYXNzUmVmUHRyPElEQkRhdGFiYXNlPik7CkBAIC0xMDgsNiArMTEyLDcgQEAgcHJpdmF0
ZToKICAgICBUeXBlIG1fdHlwZTsKIAogICAgIC8vIE9ubHkgb25lIG9mIHRoZSBmb2xsb3dpbmcg
c2hvdWxkIGV2ZXIgYmUgaW4gdXNlIGF0IGFueSBnaXZlbiB0aW1lLgorICAgIFJlZlB0cjxET01T
dHJpbmdMaXN0PiBtX2RvbVN0cmluZ0xpc3Q7CiAgICAgUmVmUHRyPElEQkN1cnNvcj4gbV9pZGJD
dXJzb3I7CiAgICAgUmVmUHRyPElEQkN1cnNvcldpdGhWYWx1ZT4gbV9pZGJDdXJzb3JXaXRoVmFs
dWU7CiAgICAgUmVmUHRyPElEQkRhdGFiYXNlPiBtX2lkYkRhdGFiYXNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCQmFja2luZ1N0b3JlLmgKaW5kZXggMGJlZDg5MzM4MjBmMGQzZjkzY2JhZWQ5
YmY3NTUxOGIwODFlMzcyYi4uMDI3ZDU1ZmYyOTkzNDBmNDMzM2JhYTUzNWE3ZmQzZDkwZGNhZDVl
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJCYWNraW5nU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkJhY2tpbmdTdG9yZS5oCkBAIC00Niw2ICs0
Niw3IEBAIGNsYXNzIElEQkJhY2tpbmdTdG9yZSA6IHB1YmxpYyBSZWZDb3VudGVkPElEQkJhY2tp
bmdTdG9yZT4gewogcHVibGljOgogICAgIHZpcnR1YWwgfklEQkJhY2tpbmdTdG9yZSgpIHt9Owog
CisgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5k
TmFtZXMpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgZXh0cmFjdElEQkRhdGFiYXNlTWV0YURhdGEo
Y29uc3QgU3RyaW5nJiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJ
ZCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBzZXRJREJEYXRhYmFzZU1ldGFEYXRhKGNvbnN0IFN0
cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2ZXJzaW9uLCBpbnQ2NF90JiByb3dJZCwgYm9vbCBp
bnZhbGlkUm93SWQpID0gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCQ2FsbGJhY2tzLmgKaW5k
ZXggZGRjNmU2MDk0NjlmZWI2Y2JhNjYwMDk4YzdiOThiMDJmNGQ3MjhlYy4uM2MwNjFhNzEwYzJm
ZmEwYmJiNmUwZjAyOTE4MGZjN2QxOTFjNmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3RvcmFnZS9JREJDYWxsYmFja3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkNh
bGxiYWNrcy5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaWZuZGVmIElEQkNhbGxiYWNrc19oCiAjZGVm
aW5lIElEQkNhbGxiYWNrc19oCiAKKyNpbmNsdWRlICJET01TdHJpbmdMaXN0LmgiCiAjaW5jbHVk
ZSAiSURCQ3Vyc29yQmFja2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlQmFj
a2VuZEludGVyZmFjZS5oIgogI2luY2x1ZGUgIklEQkRhdGFiYXNlRXJyb3IuaCIKQEAgLTQ4LDYg
KzQ5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfklEQkNhbGxiYWNrcygpIHsgfQogCiAgICAg
dmlydHVhbCB2b2lkIG9uRXJyb3IoUGFzc1JlZlB0cjxJREJEYXRhYmFzZUVycm9yPikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PikgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5k
SW50ZXJmYWNlPikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJ
REJEYXRhYmFzZUJhY2tlbmRJbnRlcmZhY2U+KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG9uU3Vj
Y2VzcyhQYXNzUmVmUHRyPElEQktleT4pID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0b3JhZ2UvSURCRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnkuY3BwCmluZGV4IDk4YjUyNzRmNDFlZWRhZDQxN2Q0M2Y4OGFlMjAyNTZjMWJiMTAzZjUuLmY1
ODcyMmJhY2Y5NWZkZGU5ZDkxMjRhNzc4ZjFmNDIxZGI5MmI1ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJGYWN0b3J5LmNwcApAQCAtNTgsNiArNTgsMjMgQEAgSURCRmFjdG9yeTo6fklEQkZh
Y3RvcnkoKQogewogfQogCitQYXNzUmVmUHRyPElEQlJlcXVlc3Q+IElEQkZhY3Rvcnk6OmdldERh
dGFiYXNlTmFtZXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBpZiAo
IWNvbnRleHQtPmlzRG9jdW1lbnQoKSkgeworICAgICAgICAvLyBGSVhNRTogbWFrZSB0aGlzIHdv
cmsgd2l0aCB3b3JrZXJzLgorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOworICAgIGlmICgh
ZG9jdW1lbnQtPmZyYW1lKCkgfHwgIWRvY3VtZW50LT5wYWdlKCkpCisgICAgICAgIHJldHVybiAw
OworCisgICAgUmVmUHRyPElEQlJlcXVlc3Q+IHJlcXVlc3QgPSBJREJSZXF1ZXN0OjpjcmVhdGUo
ZG9jdW1lbnQsIElEQkFueTo6Y3JlYXRlKHRoaXMpLCAwKTsKKyAgICBHcm91cFNldHRpbmdzKiBn
cm91cFNldHRpbmdzID0gZG9jdW1lbnQtPnBhZ2UoKS0+Z3JvdXAoKS5ncm91cFNldHRpbmdzKCk7
CisgICAgbV9mYWN0b3J5QmFja2VuZC0+Z2V0RGF0YWJhc2VOYW1lcyhyZXF1ZXN0LCBkb2N1bWVu
dC0+c2VjdXJpdHlPcmlnaW4oKSwgZG9jdW1lbnQtPmZyYW1lKCksIGdyb3VwU2V0dGluZ3MtPmlu
ZGV4ZWREQkRhdGFiYXNlUGF0aCgpLCBncm91cFNldHRpbmdzLT5pbmRleGVkREJRdW90YUJ5dGVz
KCksIElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpEZWZhdWx0QmFja2luZ1N0b3JlKTsKKyAg
ICByZXR1cm4gcmVxdWVzdDsKK30KKwogUGFzc1JlZlB0cjxJREJSZXF1ZXN0PiBJREJGYWN0b3J5
OjpvcGVuKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFjb250ZXh0LT5pc0RvY3VtZW50KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgKaW5kZXggY2QwZDY0ZmQ5M2JlNTNiMWYy
YzA5NTVjNGE1MWMzMDgzMzcwZjEyNC4uMzYzODU1YTRjY2ZjNmIwNDcxMjIwODg0OTQwODkxNWIz
Mjc4MTI4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5LmgKQEAgLTU0LDYgKzU0LDgg
QEAgcHVibGljOgogICAgIH0KICAgICB+SURCRmFjdG9yeSgpOwogCisgICAgUGFzc1JlZlB0cjxJ
REJSZXF1ZXN0PiBnZXREYXRhYmFzZU5hbWVzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqKTsKKwog
ICAgIFBhc3NSZWZQdHI8SURCUmVxdWVzdD4gb3BlbihTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
Y29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2RlJik7CiAKIHByaXZhdGU6CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuaWRsIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJGYWN0b3J5LmlkbAppbmRleCAwMmVlZDBlYjQxMmMyYmM1NmY5N2Q0NjU4
Y2MxMWI4YzhmZWE3NzllLi41MDZmYWY4YTExMjRkOTYyZWE1MGEwYzc1MzgzOGUyOWE0YzNhODhh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnkuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeS5pZGwKQEAgLTI4LDYgKzI4LDggQEAg
bW9kdWxlIHN0b3JhZ2UgewogICAgIGludGVyZmFjZSBbCiAgICAgICAgIENvbmRpdGlvbmFsPUlO
REVYRURfREFUQUJBU0UKICAgICBdIElEQkZhY3RvcnkgeworICAgICAgICBbQ2FsbFdpdGg9U2Ny
aXB0RXhlY3V0aW9uQ29udGV4dF0gSURCUmVxdWVzdCBnZXREYXRhYmFzZU5hbWVzKCk7CisKICAg
ICAgICAgW0NhbGxXaXRoPVNjcmlwdEV4ZWN1dGlvbkNvbnRleHRdIElEQlJlcXVlc3Qgb3Blbihp
biBET01TdHJpbmcgbmFtZSkKICAgICAgICAgICAgIHJhaXNlcyAoSURCRGF0YWJhc2VFeGNlcHRp
b24pOwogICAgIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3Rv
cnlCYWNrZW5kSW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNr
ZW5kSW1wbC5jcHAKaW5kZXggNTg4NGZiMjIwNTk4ZWFhYzZlNWE3MzM0ZDU0ZWU2NTFhZTU3NGMw
Ny4uZTFhM2Y3MTlhYzk0YWFhMDE4MGM3OTg4OGZjNDE2N2RiZTdiMDRjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbXBsLmNwcApAQCAtODEsNiAr
ODEsMjYgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6OnJlbW92ZUlEQkJhY2tpbmdTdG9y
ZShjb25zdCBTdHJpbmcmIGZpbGVJZGVudGlmaWVyKQogICAgIG1fYmFja2luZ1N0b3JlTWFwLnJl
bW92ZShmaWxlSWRlbnRpZmllcik7CiB9CiAKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRJbXBsOjpn
ZXREYXRhYmFzZU5hbWVzKFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYWxsYmFja3MsIFBhc3NS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luLCBGcmFtZSosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5n
U3RvcmVUeXBlKQoreworICAgIEFTU0VSVChiYWNraW5nU3RvcmVUeXBlICE9IERlZmF1bHRCYWNr
aW5nU3RvcmUpOworCisgICAgUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gYmFja2luZ1N0b3JlID0g
b3BlbkJhY2tpbmdTdG9yZShzZWN1cml0eU9yaWdpbiwgZGF0YURpciwgbWF4aW11bVNpemUsIGJh
Y2tpbmdTdG9yZVR5cGUpOworICAgIGlmICghYmFja2luZ1N0b3JlKSB7CisgICAgICAgIGNhbGxi
YWNrcy0+b25FcnJvcihJREJEYXRhYmFzZUVycm9yOjpjcmVhdGUoSURCRGF0YWJhc2VFeGNlcHRp
b246OlVOS05PV05fRVJSLCAiSW50ZXJuYWwgZXJyb3IuIikpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgUmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRhdGFiYXNlTmFtZXMgPSBET01TdHJp
bmdMaXN0OjpjcmVhdGUoKTsKKworICAgIFZlY3RvcjxTdHJpbmc+IGZvdW5kTmFtZXM7CisgICAg
YmFja2luZ1N0b3JlLT5nZXREYXRhYmFzZU5hbWVzKGZvdW5kTmFtZXMpOworICAgIGZvciAoVmVj
dG9yPFN0cmluZz46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gZm91bmROYW1lcy5iZWdpbigpOyBpdCAh
PSBmb3VuZE5hbWVzLmVuZCgpOyArK2l0KQorICAgICAgICBkYXRhYmFzZU5hbWVzLT5hcHBlbmQo
Kml0KTsKKworICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlTmFtZXMucmVsZWFzZSgp
KTsKK30KKwogdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29uc3QgU3RyaW5nJiBu
YW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3Vy
aXR5T3JpZ2luPiBzZWN1cml0eU9yaWdpbiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIs
IGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0b3JlVHlwZSkK
IHsKICAgICBBU1NFUlQoYmFja2luZ1N0b3JlVHlwZSAhPSBEZWZhdWx0QmFja2luZ1N0b3JlKTsK
QEAgLTExMiw2ICsxMzIsMjMgQEAgdm9pZCBJREJGYWN0b3J5QmFja2VuZEltcGw6Om9wZW4oY29u
c3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4gY2EKICAgICB9CiAjZW5k
aWYKIAorICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9yZSA9IG9wZW5CYWNr
aW5nU3RvcmUoc2VjdXJpdHlPcmlnaW4sIGRhdGFEaXIsIG1heGltdW1TaXplLCBiYWNraW5nU3Rv
cmVUeXBlKTsKKyAgICBpZiAoIWJhY2tpbmdTdG9yZSkgeworICAgICAgICBjYWxsYmFja3MtPm9u
RXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFiYXNlRXhjZXB0aW9uOjpVTktO
T1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIFJlZlB0cjxJREJEYXRhYmFzZUJhY2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJE
YXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVhdGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3Ry
YW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOworICAg
IGNhbGxiYWNrcy0+b25TdWNjZXNzKGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgbV9kYXRh
YmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQo
KSk7Cit9CisKK1Bhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBJREJGYWN0b3J5QmFja2VuZElt
cGw6Om9wZW5CYWNraW5nU3RvcmUoUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gc2VjdXJpdHlP
cmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2lu
Z1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlKQoreworICAgIEFTU0VSVChiYWNraW5nU3RvcmVU
eXBlICE9IERlZmF1bHRCYWNraW5nU3RvcmUpOworCisgICAgY29uc3QgU3RyaW5nIGZpbGVJZGVu
dGlmaWVyID0gY29tcHV0ZUZpbGVJZGVudGlmaWVyKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBiYWNr
aW5nU3RvcmVUeXBlKTsKKwogICAgIFJlZlB0cjxJREJCYWNraW5nU3RvcmU+IGJhY2tpbmdTdG9y
ZTsKICAgICBJREJCYWNraW5nU3RvcmVNYXA6Oml0ZXJhdG9yIGl0MiA9IG1fYmFja2luZ1N0b3Jl
TWFwLmZpbmQoZmlsZUlkZW50aWZpZXIpOwogICAgIGlmIChpdDIgIT0gbV9iYWNraW5nU3RvcmVN
YXAuZW5kKCkgJiYgKGJhY2tpbmdTdG9yZVR5cGUgPT0gaXQyLT5zZWNvbmQtPmJhY2tpbmdTdG9y
ZVR5cGUoKSkpCkBAIC0xMjMsMTUgKzE2MCwxMiBAQCB2b2lkIElEQkZhY3RvcnlCYWNrZW5kSW1w
bDo6b3Blbihjb25zdCBTdHJpbmcmIG5hbWUsIFBhc3NSZWZQdHI8SURCQ2FsbGJhY2tzPiBjYQog
ICAgICAgICBlbHNlIGlmIChiYWNraW5nU3RvcmVUeXBlID09IExldmVsREJCYWNraW5nU3RvcmUp
CiAgICAgICAgICAgICBiYWNraW5nU3RvcmUgPSBJREJMZXZlbERCQmFja2luZ1N0b3JlOjpvcGVu
KHNlY3VyaXR5T3JpZ2luLmdldCgpLCBkYXRhRGlyLCBtYXhpbXVtU2l6ZSwgZmlsZUlkZW50aWZp
ZXIsIHRoaXMpOwogI2VuZGlmCi0gICAgICAgIGlmICghYmFja2luZ1N0b3JlKSB7Ci0gICAgICAg
ICAgICBjYWxsYmFja3MtPm9uRXJyb3IoSURCRGF0YWJhc2VFcnJvcjo6Y3JlYXRlKElEQkRhdGFi
YXNlRXhjZXB0aW9uOjpVTktOT1dOX0VSUiwgIkludGVybmFsIGVycm9yLiIpKTsKLSAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgfQogICAgIH0KIAotICAgIFJlZlB0cjxJREJEYXRhYmFzZUJh
Y2tlbmRJbXBsPiBkYXRhYmFzZUJhY2tlbmQgPSBJREJEYXRhYmFzZUJhY2tlbmRJbXBsOjpjcmVh
dGUobmFtZSwgYmFja2luZ1N0b3JlLmdldCgpLCBtX3RyYW5zYWN0aW9uQ29vcmRpbmF0b3IuZ2V0
KCksIHRoaXMsIHVuaXF1ZUlkZW50aWZpZXIpOwotICAgIGNhbGxiYWNrcy0+b25TdWNjZXNzKGRh
dGFiYXNlQmFja2VuZC5nZXQoKSk7Ci0gICAgbV9kYXRhYmFzZUJhY2tlbmRNYXAuc2V0KHVuaXF1
ZUlkZW50aWZpZXIsIGRhdGFiYXNlQmFja2VuZC5nZXQoKSk7CisgICAgaWYgKGJhY2tpbmdTdG9y
ZSkKKyAgICAgICAgcmV0dXJuIGJhY2tpbmdTdG9yZS5yZWxlYXNlKCk7CisKKyAgICByZXR1cm4g
MDsKIH0KIAogI2lmIFVTRShMRVZFTERCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Rv
cmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
RmFjdG9yeUJhY2tlbmRJbXBsLmgKaW5kZXggZmIzMDNkMWEyYjY1OGQyMmI1MTFlNzY1ZTlkNGU1
OWI0ZWNkMWJlNC4uYjcwNGQ5ODgxZmU1YWMzNDU4OWYxMDg3Y2U3MTBkNmMyMDJkM2ZjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJGYWN0b3J5QmFja2VuZEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW1wbC5oCkBAIC01
NSwxMCArNTUsMTIgQEAgcHVibGljOgogICAgIHZvaWQgYWRkSURCQmFja2luZ1N0b3JlKGNvbnN0
IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkJhY2tpbmdTdG9yZSopOwogICAgIHZvaWQgcmVt
b3ZlSURCQmFja2luZ1N0b3JlKGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIpOwogCisgICAg
dmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQ
YXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIs
IGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpOwogICAgIHZpcnR1YWwgdm9p
ZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNz
UmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIsIGlu
dDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpOwogCiBwcml2YXRlOgogICAgIElE
QkZhY3RvcnlCYWNrZW5kSW1wbCgpOworICAgIFBhc3NSZWZQdHI8SURCQmFja2luZ1N0b3JlPiBv
cGVuQmFja2luZ1N0b3JlKFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+LCBjb25zdCBTdHJpbmcm
IGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpOwogICAgIGJv
b2wgbWlncmF0ZUZyb21TUUxpdGVUb0xldmVsREIoY29uc3QgU3RyaW5nJiBuYW1lLCBTZWN1cml0
eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSk7CiAK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBJREJEYXRhYmFzZUJhY2tlbmRJbXBsKj4gSURC
RGF0YWJhc2VCYWNrZW5kTWFwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJGYWN0b3J5QmFja2VuZEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJG
YWN0b3J5QmFja2VuZEludGVyZmFjZS5oCmluZGV4IDI0ODI2NjI0ZTY4MjI4Yjk2NDZkMzVmZTNm
ZjlhMDMzZGRhMmU3ZjEuLmE4NzYxYzgwOWYyYmU3MDhjYTllZDM0NmM0NTA0NDM4M2IxYzUyYjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCRmFjdG9yeUJhY2tlbmRJbnRl
cmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkZhY3RvcnlCYWNrZW5kSW50
ZXJmYWNlLmgKQEAgLTU3LDYgKzU3LDggQEAgcHVibGljOgogICAgICAgICBTUUxpdGVCYWNraW5n
U3RvcmUKICAgICB9OwogCisgICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoUGFzc1Jl
ZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUqLCBj
b25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5
cGUpID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFz
c1JlZlB0cjxJREJDYWxsYmFja3M+LCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiwgRnJhbWUq
LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIsIGludDY0X3QgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9y
ZVR5cGUpID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVs
REJCYWNraW5nU3RvcmUuY3BwCmluZGV4IDBhMGEyNDcxYzU0ODI4YTRiOGMwYTNmZDI4ZWQ2MDdm
YjhlNDA3YzYuLjkzYThjNTI1N2IzMjY4ODRlMDRmMzVmZGE5YTQ5ZDExZjAzZDdiYmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmNwcApA
QCAtMTY0LDYgKzE2NCwyNiBAQCBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4gSURCTGV2ZWxE
QkJhY2tpbmdTdG9yZTo6b3BlbihTZWN1cml0eU9yaWdpbiogc2VjdXJpdAogICAgIHJldHVybiBi
YWNraW5nU3RvcmUucmVsZWFzZSgpOwogfQogCit2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6
OmdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpCit7CisgICAgY29u
c3QgVmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gRGF0YWJhc2VOYW1lS2V5OjplbmNvZGVNaW5LZXlG
b3JPcmlnaW4obV9pZGVudGlmaWVyKTsKKyAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9
IERhdGFiYXNlTmFtZUtleTo6ZW5jb2RlU3RvcEtleUZvck9yaWdpbihtX2lkZW50aWZpZXIpOwor
CisgICAgQVNTRVJUKGZvdW5kTmFtZXMuaXNFbXB0eSgpKTsKKworICAgIE93blB0cjxMZXZlbERC
SXRlcmF0b3I+IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKKyAgICBmb3IgKGl0LT5zZWVr
KHN0YXJ0S2V5KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIHN0b3BL
ZXkpIDwgMDsgaXQtPm5leHQoKSkgeworICAgICAgICBjb25zdCBjaGFyICpwID0gaXQtPmtleSgp
LmJlZ2luKCk7CisgICAgICAgIGNvbnN0IGNoYXIgKmxpbWl0ID0gaXQtPmtleSgpLmVuZCgpOwor
CisgICAgICAgIERhdGFiYXNlTmFtZUtleSBkYXRhYmFzZU5hbWVLZXk7CisgICAgICAgIHAgPSBE
YXRhYmFzZU5hbWVLZXk6OmRlY29kZShwLCBsaW1pdCwgJmRhdGFiYXNlTmFtZUtleSk7CisgICAg
ICAgIEFTU0VSVChwKTsKKworICAgICAgICBmb3VuZE5hbWVzLmFwcGVuZChkYXRhYmFzZU5hbWVL
ZXkuZGF0YWJhc2VOYW1lKCkpOworICAgIH0KK30KKwogYm9vbCBJREJMZXZlbERCQmFja2luZ1N0
b3JlOjpleHRyYWN0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUsIFN0cmlu
ZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKQogewogICAgIGNvbnN0IFZlY3Rvcjxj
aGFyPiBrZXkgPSBEYXRhYmFzZU5hbWVLZXk6OmVuY29kZShtX2lkZW50aWZpZXIsIG5hbWUpOwpA
QCAtMjE3LDYgKzIzNywxMSBAQCB2b2lkIElEQkxldmVsREJCYWNraW5nU3RvcmU6OmdldE9iamVj
dFN0b3JlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIFZlY3RvcjxpbnQ2NF90PgogICAgIGNvbnN0IFZl
Y3RvcjxjaGFyPiBzdGFydEtleSA9IE9iamVjdFN0b3JlTWV0YURhdGFLZXk6OmVuY29kZShkYXRh
YmFzZUlkLCAxLCAwKTsKICAgICBjb25zdCBWZWN0b3I8Y2hhcj4gc3RvcEtleSA9IE9iamVjdFN0
b3JlTWV0YURhdGFLZXk6OmVuY29kZU1heEtleShkYXRhYmFzZUlkKTsKIAorICAgIEFTU0VSVChm
b3VuZElkcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChmb3VuZE5hbWVzLmlzRW1wdHkoKSk7Cisg
ICAgQVNTRVJUKGZvdW5kS2V5UGF0aHMuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQoZm91bmRBdXRv
SW5jcmVtZW50RmxhZ3MuaXNFbXB0eSgpKTsKKwogICAgIE93blB0cjxMZXZlbERCSXRlcmF0b3I+
IGl0ID0gbV9kYi0+Y3JlYXRlSXRlcmF0b3IoKTsKICAgICBmb3IgKGl0LT5zZWVrKHN0YXJ0S2V5
KTsgaXQtPmlzVmFsaWQoKSAmJiBjb21wYXJlS2V5cyhpdC0+a2V5KCksIHN0b3BLZXkpIDwgMDsg
aXQtPm5leHQoKSkgewogICAgICAgICBjb25zdCBjaGFyICpwID0gaXQtPmtleSgpLmJlZ2luKCk7
CkBAIC01NjksNiArNTk0LDExIEBAIHZvaWQgSURCTGV2ZWxEQkJhY2tpbmdTdG9yZTo6Z2V0SW5k
ZXhlcyhpbnQ2NF90IGRhdGFiYXNlSWQsIGludDY0X3Qgb2JqZWN0U3RvcmVJCiAgICAgY29uc3Qg
VmVjdG9yPGNoYXI+IHN0YXJ0S2V5ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNl
SWQsIG9iamVjdFN0b3JlSWQsIDAsIDApOwogICAgIGNvbnN0IFZlY3RvcjxjaGFyPiBzdG9wS2V5
ID0gSW5kZXhNZXRhRGF0YUtleTo6ZW5jb2RlKGRhdGFiYXNlSWQsIG9iamVjdFN0b3JlSWQgKyAx
LCAwLCAwKTsKIAorICAgIEFTU0VSVChmb3VuZElkcy5pc0VtcHR5KCkpOworICAgIEFTU0VSVChm
b3VuZE5hbWVzLmlzRW1wdHkoKSk7CisgICAgQVNTRVJUKGZvdW5kS2V5UGF0aHMuaXNFbXB0eSgp
KTsKKyAgICBBU1NFUlQoZm91bmRVbmlxdWVGbGFncy5pc0VtcHR5KCkpOworCiAgICAgT3duUHRy
PExldmVsREJJdGVyYXRvcj4gaXQgPSBtX2RiLT5jcmVhdGVJdGVyYXRvcigpOwogICAgIGZvciAo
aXQtPnNlZWsoc3RhcnRLZXkpOyBpdC0+aXNWYWxpZCgpICYmIGNvbXBhcmVLZXlzKGl0LT5rZXko
KSwgc3RvcEtleSkgPCAwOyBpdC0+bmV4dCgpKSB7CiAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBp
dC0+a2V5KCkuYmVnaW4oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
TGV2ZWxEQkJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERC
QmFja2luZ1N0b3JlLmgKaW5kZXggOGRkZDI4ZGIyMDdkOGJlZWE4OTkxYzdkZGJiMDg1MWEyODkz
ODg2My4uMjMxMGM3ZjlhNDcxYmEwZjdhZTZhMWE2MTVhOWFmZTBhMjFiYjc1ZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQmFja2luZ1N0b3JlLmgKQEAgLTQ0LDYg
KzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdTdG9yZT4g
b3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGludDY0X3QgbWF4
aW11bVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlCYWNrZW5k
SW1wbCopOwogICAgIHZpcnR1YWwgfklEQkxldmVsREJCYWNraW5nU3RvcmUoKTsKIAorICAgIHZp
cnR1YWwgdm9pZCBnZXREYXRhYmFzZU5hbWVzKFZlY3RvcjxTdHJpbmc+JiBmb3VuZE5hbWVzKTsK
ICAgICB2aXJ0dWFsIGJvb2wgZXh0cmFjdElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5n
JiBuYW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCk7CiAgICAgdmly
dHVhbCBib29sIHNldElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBTdHJpbmcmIHZlcnNpb24sIGludDY0X3QmIHJvd0lkLCBib29sIGludmFsaWRSb3dJZCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQkxldmVsREJDb2RpbmcuY3BwCmluZGV4IDc1MzFj
ODVjZGQ2OGNkNGY5N2RhY2MyOTRjMjJiMmYzYWFjMzhlYWUuLmE2Nzk1ZTdlNTRmMzc5YWE1ZDZk
NDE4MGIyMmNlOGQ1YzM2NDM2YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2Uv
SURCTGV2ZWxEQkNvZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZl
bERCQ29kaW5nLmNwcApAQCAtODE3LDYgKzgxNywxNyBAQCBWZWN0b3I8Y2hhcj4gRGF0YWJhc2VO
YW1lS2V5OjplbmNvZGUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJh
cwogICAgIHJldHVybiByZXQ7CiB9CiAKK1ZlY3RvcjxjaGFyPiBEYXRhYmFzZU5hbWVLZXk6OmVu
Y29kZU1pbktleUZvck9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpbikKK3sKKyAgICByZXR1cm4g
ZW5jb2RlKG9yaWdpbiwgIiIpOworfQorCitWZWN0b3I8Y2hhcj4gRGF0YWJhc2VOYW1lS2V5Ojpl
bmNvZGVTdG9wS2V5Rm9yT3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luKQoreworICAgIC8vIGp1
c3QgYWZ0ZXIgb3JpZ2luIGluIGNvbGxhdGlvbiBvcmRlcgorICAgIHJldHVybiBlbmNvZGVNaW5L
ZXlGb3JPcmlnaW4ob3JpZ2luICsgIlx4MDEiKTsKK30KKwogaW50IERhdGFiYXNlTmFtZUtleTo6
Y29tcGFyZShjb25zdCBEYXRhYmFzZU5hbWVLZXkmIG90aGVyKQogewogICAgIGlmIChpbnQgeCA9
IGNvZGVQb2ludENvbXBhcmUobV9vcmlnaW4sIG90aGVyLm1fb3JpZ2luKSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCTGV2ZWxEQkNvZGluZy5oIGIvU291cmNlL1dlYkNv
cmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmgKaW5kZXggNGU3MDJjZGZlYTA4Yjc0NWQ3ZGYw
NTgyYTFhNmFkNDFkODU5ZDlmYS4uYWE3NTM3Yzc0NzIwY2MzMmY3YjllOTUwZGNjODA3MWVmNjUx
NzQ0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJMZXZlbERCQ29kaW5nLmgKQEAgLTEx
Nyw2ICsxMTcsOCBAQCBjbGFzcyBEYXRhYmFzZU5hbWVLZXkgewogcHVibGljOgogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBkZWNvZGUoY29uc3QgY2hhciogc3RhcnQsIGNvbnN0IGNoYXIqIGxpbWl0
LCBEYXRhYmFzZU5hbWVLZXkqIHJlc3VsdCk7CiAgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNv
ZGUoY29uc3QgU3RyaW5nJiBvcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lKTsKKyAg
ICBzdGF0aWMgVmVjdG9yPGNoYXI+IGVuY29kZU1pbktleUZvck9yaWdpbihjb25zdCBTdHJpbmcm
IG9yaWdpbik7CisgICAgc3RhdGljIFZlY3RvcjxjaGFyPiBlbmNvZGVTdG9wS2V5Rm9yT3JpZ2lu
KGNvbnN0IFN0cmluZyYgb3JpZ2luKTsKICAgICBTdHJpbmcgb3JpZ2luKCkgY29uc3QgeyByZXR1
cm4gbV9vcmlnaW47IH0KICAgICBTdHJpbmcgZGF0YWJhc2VOYW1lKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhYmFzZU5hbWU7IH0KICAgICBpbnQgY29tcGFyZShjb25zdCBEYXRhYmFzZU5hbWVLZXkm
IG90aGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlJlcXVlc3QuY3BwCmluZGV4IGZlZDMzMmQ3
YzIyMDY4ZGVlYWZmYTRjYjM4N2E2NTZmYzJkMWQ0MjYuLjY0MzBkMjUxMTJjMjUzYWMxMTI4NmFj
MDk1NDQ3NmJhMDcyNTFiMjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURC
UmVxdWVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmNwcApA
QCAtMTg2LDYgKzE4NiwxMyBAQCBzdGF0aWMgUGFzc1JlZlB0cjxFdmVudD4gY3JlYXRlU3VjY2Vz
c0V2ZW50KCkKICAgICByZXR1cm4gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuc3VjY2Vzc0V2
ZW50LCBmYWxzZSwgZmFsc2UpOwogfQogCit2b2lkIElEQlJlcXVlc3Q6Om9uU3VjY2VzcyhQYXNz
UmVmUHRyPERPTVN0cmluZ0xpc3Q+IGRvbVN0cmluZ0xpc3QpCit7CisgICAgQVNTRVJUKCFtX2Vy
cm9yQ29kZSAmJiBtX2Vycm9yTWVzc2FnZS5pc051bGwoKSAmJiAhbV9yZXN1bHQpOworICAgIG1f
cmVzdWx0ID0gSURCQW55OjpjcmVhdGUoZG9tU3RyaW5nTGlzdCk7CisgICAgZW5xdWV1ZUV2ZW50
KGNyZWF0ZVN1Y2Nlc3NFdmVudCgpKTsKK30KKwogdm9pZCBJREJSZXF1ZXN0OjpvblN1Y2Nlc3Mo
UGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50ZXJmYWNlPiBiYWNrZW5kKQogewogICAgIEFT
U0VSVCghbV9lcnJvckNvZGUgJiYgbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkgJiYgIW1fcmVzdWx0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCUmVxdWVzdC5oIGIvU291
cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKaW5kZXggOTAwZGYwMTcyOWZlNzhmNDY0
YWMyNTQzMzM0NDM2MjBmMGFlZTUwMy4uMGZhMDA2YTBkMWYxNGMwOWQ1MDY0NjAyNzcyOWY3MzEy
N2U1MmM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJSZXF1ZXN0LmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9i
amVjdC5oIgorI2luY2x1ZGUgIkRPTVN0cmluZ0xpc3QuaCIKICNpbmNsdWRlICJFdmVudC5oIgog
I2luY2x1ZGUgIkV2ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJFdmVudE5hbWVzLmgiCkBAIC03
NCw2ICs3NSw3IEBAIHB1YmxpYzoKIAogICAgIC8vIElEQkNhbGxiYWNrcwogICAgIHZpcnR1YWwg
dm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8SURCRGF0YWJhc2VFcnJvcj4pOworICAgIHZpcnR1YWwg
dm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0Pik7CiAgICAgdmlydHVhbCB2
b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQkRhdGFiYXNlQmFja2VuZEludGVyZmFjZT4pOwog
ICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxJREJDdXJzb3JCYWNrZW5kSW50
ZXJmYWNlPik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQktleT4p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3Rv
cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9JREJTUUxpdGVCYWNraW5nU3RvcmUuY3Bw
CmluZGV4IDM0NjE3NjBiZDA4YzhiZThmYTFiY2E4ZjgzYjM3MDZmYjdkZDk1MWYuLjNlYjg3ZWNh
YmUwZDk0NzcwOTEzOTliZDk5OTE2MjljYTY3YzIyM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0b3JhZ2UvSURCU1FMaXRlQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5jcHAKQEAgLTE5Nyw2ICsxOTcsMjAgQEAg
UGFzc1JlZlB0cjxJREJCYWNraW5nU3RvcmU+IElEQlNRTGl0ZUJhY2tpbmdTdG9yZTo6b3BlbihT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHkKICAgICByZXR1cm4gYmFja2luZ1N0b3JlLnJlbGVhc2Uo
KTsKIH0KIAordm9pZCBJREJTUUxpdGVCYWNraW5nU3RvcmU6OmdldERhdGFiYXNlTmFtZXMoVmVj
dG9yPFN0cmluZz4mIGZvdW5kTmFtZXMpCit7CisgICAgQVNTRVJUKGZvdW5kTmFtZXMuaXNFbXB0
eSgpKTsKKworICAgIFNRTGl0ZVN0YXRlbWVudCBxdWVyeShtX2RiLCAiU0VMRUNUIG5hbWUgRlJP
TSBEYXRhYmFzZXMiKTsKKyAgICBpZiAocXVlcnkucHJlcGFyZSgpICE9IFNRTFJlc3VsdE9rKSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgd2hpbGUgKHF1ZXJ5LnN0ZXAoKSA9PSBTUUxSZXN1bHRSb3cpCisgICAgICAgIGZvdW5k
TmFtZXMuYXBwZW5kKHF1ZXJ5LmdldENvbHVtblRleHQoMCkpOworfQorCiBib29sIElEQlNRTGl0
ZUJhY2tpbmdTdG9yZTo6ZXh0cmFjdElEQkRhdGFiYXNlTWV0YURhdGEoY29uc3QgU3RyaW5nJiBu
YW1lLCBTdHJpbmcmIGZvdW5kVmVyc2lvbiwgaW50NjRfdCYgZm91bmRJZCkKIHsKICAgICBTUUxp
dGVTdGF0ZW1lbnQgZGF0YWJhc2VRdWVyeShtX2RiLCAiU0VMRUNUIGlkLCB2ZXJzaW9uIEZST00g
RGF0YWJhc2VzIFdIRVJFIG5hbWUgPSA/Iik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9J
REJTUUxpdGVCYWNraW5nU3RvcmUuaAppbmRleCBiMTJhYWZhNDYyNGZjMTA5Y2U4YzE2YTBkZTkx
Y2NhYWY0ZTEyZDkzLi4yYTRiYWFiZDJhOTAwMjAxNzdhMDM0YmQ3N2JiZTQzMGEyMGUzZTRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL0lEQlNRTGl0ZUJhY2tpbmdTdG9yZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvSURCU1FMaXRlQmFja2luZ1N0b3JlLmgKQEAg
LTM5LDYgKzM5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPElEQkJhY2tpbmdT
dG9yZT4gb3BlbihTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgcGF0aEJhc2UsIGludDY0
X3QgbWF4aW11bVNpemUsIGNvbnN0IFN0cmluZyYgZmlsZUlkZW50aWZpZXIsIElEQkZhY3RvcnlC
YWNrZW5kSW1wbCopOwogICAgIHZpcnR1YWwgfklEQlNRTGl0ZUJhY2tpbmdTdG9yZSgpOwogCisg
ICAgdmlydHVhbCB2b2lkIGdldERhdGFiYXNlTmFtZXMoVmVjdG9yPFN0cmluZz4mIGZvdW5kTmFt
ZXMpOwogICAgIHZpcnR1YWwgYm9vbCBleHRyYWN0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBT
dHJpbmcmIG5hbWUsIFN0cmluZyYgZm91bmRWZXJzaW9uLCBpbnQ2NF90JiBmb3VuZElkKTsKICAg
ICB2aXJ0dWFsIGJvb2wgc2V0SURCRGF0YWJhc2VNZXRhRGF0YShjb25zdCBTdHJpbmcmIG5hbWUs
IGNvbnN0IFN0cmluZyYgdmVyc2lvbiwgaW50NjRfdCYgcm93SWQsIGJvb2wgaW52YWxpZFJvd0lk
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAzNDI5YTY1YzkxNzBhZTdkYjk5Y2E5
OWM5YWFmZjljMGJkZjM1OWRkLi4zZTRkYjM1YTAyNzM4Y2E4ZmVkYjk5OTMxYzdjMmZhNzM3ZGIx
MzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDExLTA5
LTI2ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgSW5kZXhl
ZERCOiBTZWNvbmQgaGFsZiBvZiBJREJGYWN0b3J5LmdldERhdGFiYXNlTmFtZXMgaW1wbGVtZW50
YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4
ODE4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
cyBhYmlsaXR5IHRvIGVudW1lcmF0ZSBJbmRleGVkREIgZGF0YWJhc2VzIHdpdGhpbiBhbiBvcmln
aW4uCisKKyAgICAgICAgKiBzcmMvSURCQ2FsbGJhY2tzUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJREJDYWxsYmFja3NQcm94eTo6b25TdWNjZXNzKToKKyAgICAgICAgKiBzcmMvSURCQ2Fs
bGJhY2tzUHJveHkuaDoKKyAgICAgICAgKiBzcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNlTmFt
ZXMpOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5Lmg6CisgICAgICAgICog
c3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJDYWxs
YmFja3NJbXBsOjpvblN1Y2Nlc3MpOgorICAgICAgICAqIHNyYy9XZWJJREJDYWxsYmFja3NJbXBs
Lmg6CisgICAgICAgICogc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViSURCRmFjdG9yeUltcGw6OmdldERhdGFiYXNlTmFtZXMpOgorICAgICAgICAqIHNyYy9X
ZWJJREJGYWN0b3J5SW1wbC5oOgorCiAyMDExLTA5LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgQWx3YXlzIGVuYWJsZSBFTkFCTEUoT0ZGTElORV9XRUJfQVBQ
TElDQVRJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2Fs
bGJhY2tzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tz
UHJveHkuY3BwCmluZGV4IGM1MzZjMzhkYWMxNTlhNmQ1OGUwYTYzZGQ1MjVkMzY2NWNkMjNiMWUu
LjdiMjIyMmNlNzBkODM5ZTU2ODY2NTQ4ZDg5NTQzMTFkM2U0MjU1YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJDYWxsYmFja3NQcm94eS5jcHAKQEAgLTg0LDYgKzg0
LDExIEBAIHZvaWQgSURCQ2FsbGJhY2tzUHJveHk6Om9uU3VjY2VzcyhQYXNzUmVmUHRyPElEQlRy
YW5zYWN0aW9uQmFja2VuZEludGVyZmFjZT4gYmFjCiAgICAgbV9jYWxsYmFja3MtPm9uU3VjY2Vz
cyhuZXcgV2ViSURCVHJhbnNhY3Rpb25JbXBsKGJhY2tlbmQpKTsKIH0KIAordm9pZCBJREJDYWxs
YmFja3NQcm94eTo6b25TdWNjZXNzKFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gZG9tU3RyaW5n
TGlzdCkKK3sKKyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYkRPTVN0cmluZ0xpc3QoZG9t
U3RyaW5nTGlzdCkpOworfQorCiB2b2lkIElEQkNhbGxiYWNrc1Byb3h5OjpvblN1Y2Nlc3MoUGFz
c1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSkKIHsK
ICAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShzZXJp
YWxpemVkU2NyaXB0VmFsdWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0lEQkNhbGxiYWNrc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJD
YWxsYmFja3NQcm94eS5oCmluZGV4IGU5ZjQ1ZmY1Y2YxMjQ0ODEyMDVmN2ZmYTAxMmRiNDRjOTZi
ZTQ0MTIuLmVjYjE3MGE2MGUzOGVhMWRkN2Q2MmM4MDIzMDI4NGUwMmFjMDAxYzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkNhbGxiYWNrc1Byb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCQ2FsbGJhY2tzUHJveHkuaApAQCAtNDYsNiAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SURCQ2FsbGJhY2tzUHJveHkoKTsKIAogICAg
IHZpcnR1YWwgdm9pZCBvbkVycm9yKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VFcnJv
cj4pOworICAgIHZpcnR1YWwgdm9pZCBvblN1Y2Nlc3MoUGFzc1JlZlB0cjxXZWJDb3JlOjpET01T
dHJpbmdMaXN0Pik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNv
cmU6OklEQkN1cnNvckJhY2tlbmRJbnRlcmZhY2U+KTsKICAgICB2aXJ0dWFsIHZvaWQgb25TdWNj
ZXNzKFBhc3NSZWZQdHI8V2ViQ29yZTo6SURCRGF0YWJhc2VCYWNrZW5kSW50ZXJmYWNlPik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQktleT4pOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmNwcAppbmRleCBhNDVjOTliYTU1MjBmZmZhYWM2MzI3NzllOTljNWE0MTRkNWU2M2UxLi5k
Nzg5ZmY1MzZiNzUxZmMwZDZmYWE1OTAxNmExMGRmNTBkYjIyMDNmIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcApAQCAt
NjQsNiArNjQsMjAgQEAgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6fklEQkZhY3RvcnlCYWNrZW5k
UHJveHkoKQogewogfQogCit2b2lkIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmdldERhdGFiYXNl
TmFtZXMoUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1
cml0eU9yaWdpbj4gcHJwT3JpZ2luLCBGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YURp
ciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBl
KQoreworICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9yaWdpbihwcnBPcmlnaW4pOworICAgIFdlYkZy
YW1lSW1wbCogd2ViRnJhbWUgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CisgICAg
V2ViVmlld0ltcGwqIHdlYlZpZXcgPSB3ZWJGcmFtZS0+dmlld0ltcGwoKTsKKworICAgIGlmICh3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgJiYgIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQo
KS0+YWxsb3dJbmRleGVkREIod2ViRnJhbWUsICJEYXRhYmFzZSBMaXN0aW5nIiwgb3JpZ2luKSkg
eworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcigwLCAiVGhl
IHVzZXIgZGVuaWVkIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRoZSBkYXRhYmFzZS4iKSk7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3dlYklEQkZhY3RvcnktPmdldERhdGFiYXNlTmFt
ZXMobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2FsbGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwg
ZGF0YURpciwgbWF4aW11bVNpemUsIHN0YXRpY19jYXN0PFdlYklEQkZhY3Rvcnk6OkJhY2tpbmdT
dG9yZVR5cGU+KGJhY2tpbmdTdG9yZVR5cGUpKTsKK30KKwogdm9pZCBJREJGYWN0b3J5QmFja2Vu
ZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJDYWxsYmFja3M+
IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luLCBGcmFtZSog
ZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2lu
Z1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlKQogewogICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9y
aWdpbihwcnBPcmlnaW4pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
SURCRmFjdG9yeUJhY2tlbmRQcm94eS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5oCmluZGV4IDg5ZWQzNTUyZGRhZmRhM2JmZDMyZTE1ZTNmYjc0
ZDc1OWMxZDY1MzIuLjFkYjA0NjAwZGUzZjg3MTBlYjU3MThmM2JkOTM5NmFlMjI5ODQxMjYgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdl
YkNvcmU6OklEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlPiBjcmVhdGUoKTsKICAgICB2aXJ0dWFs
IH5JREJGYWN0b3J5QmFja2VuZFByb3h5KCk7CiAKLSAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkRP
TVN0cmluZ0xpc3Q+IGRhdGFiYXNlcyh2b2lkKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPFdlYkNvcmU6OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQ
dHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJDb3JlOjpGcmFtZSosIGNvbnN0IFN0cmlu
ZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSk7CiAgICAg
dmlydHVhbCB2b2lkIG9wZW4oY29uc3QgU3RyaW5nJiBuYW1lLCBQYXNzUmVmUHRyPFdlYkNvcmU6
OklEQkNhbGxiYWNrcz4sIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+LCBXZWJD
b3JlOjpGcmFtZSosIGNvbnN0IFN0cmluZyYgZGF0YURpciwgaW50NjRfdCBtYXhpbXVtU2l6ZSwg
QmFja2luZ1N0b3JlVHlwZSk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYklEQkNhbGxiYWNrc0ltcGwuY3BwCmluZGV4IDNlNGFiNTBjMjc3OWM2ZWU0
MjA4NTMxOTNmYjdkOGRiMzk3ZWJjN2MuLjRlZTE1YWUwNzU2NTkyMGVmNjY1YjI3ZTViYjMyZjZm
NTA3ZDg1MzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkNh
bGxiYWNrc0ltcGwuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiSURCRGF0YWJhc2VF
cnJvci5oIgogI2luY2x1ZGUgIklEQktleS5oIgogI2luY2x1ZGUgIklEQlRyYW5zYWN0aW9uQmFj
a2VuZFByb3h5LmgiCisjaW5jbHVkZSAiV2ViRE9NU3RyaW5nTGlzdC5oIgogI2luY2x1ZGUgIldl
YklEQkNhbGxiYWNrcy5oIgogI2luY2x1ZGUgIldlYklEQkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAi
V2ViSURCRGF0YWJhc2VFcnJvci5oIgpAQCAtNTksNiArNjAsMTEgQEAgdm9pZCBXZWJJREJDYWxs
YmFja3NJbXBsOjpvbkVycm9yKGNvbnN0IFdlYklEQkRhdGFiYXNlRXJyb3ImIGVycm9yKQogICAg
IG1fY2FsbGJhY2tzLT5vbkVycm9yKGVycm9yKTsKIH0KIAordm9pZCBXZWJJREJDYWxsYmFja3NJ
bXBsOjpvblN1Y2Nlc3MoY29uc3QgV2ViRE9NU3RyaW5nTGlzdCYgZG9tU3RyaW5nTGlzdCkKK3sK
KyAgICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKGRvbVN0cmluZ0xpc3QpOworfQorCiB2b2lkIFdl
YklEQkNhbGxiYWNrc0ltcGw6Om9uU3VjY2VzcyhXZWJJREJDdXJzb3IqIGN1cnNvcikKIHsKICAg
ICBtX2NhbGxiYWNrcy0+b25TdWNjZXNzKElEQkN1cnNvckJhY2tlbmRQcm94eTo6Y3JlYXRlKGFk
b3B0UHRyKGN1cnNvcikpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYklEQkNhbGxiYWNrc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklE
QkNhbGxiYWNrc0ltcGwuaAppbmRleCBjNDg2NjAxMmRiYzkwOTIwYjYzNjc1OGQyOGFlYjFhYWMz
MWRiZWVkLi45YTI5NGIxNjA2YjkwODZjMTVjMzY5ODRmM2E1YWEzOGRkMWQ3YTg3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJDYWxsYmFja3NJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCQ2FsbGJhY2tzSW1wbC5oCkBAIC00
Miw2ICs0Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJJREJDYWxsYmFja3NJbXBsKCk7
CiAKICAgICB2aXJ0dWFsIHZvaWQgb25FcnJvcihjb25zdCBXZWJJREJEYXRhYmFzZUVycm9yJik7
CisgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vzcyhjb25zdCBXZWJET01TdHJpbmdMaXN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIG9uU3VjY2VzcyhXZWJJREJDdXJzb3IqKTsKICAgICB2aXJ0dWFsIHZv
aWQgb25TdWNjZXNzKFdlYklEQkRhdGFiYXNlKik7CiAgICAgdmlydHVhbCB2b2lkIG9uU3VjY2Vz
cyhjb25zdCBXZWJJREJLZXkmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCA1YWRmN2Y4ZDExMGI3ZGRhNWM4NzEzN2Q1Y2Y3NmMw
NzRhZDRhOTNhLi42NjYwODdiODg2NTc1OTdlMTZlNDU2ZDA4MjUwMzE3OWJlNjIxNGY3IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCkBA
IC03MSw2ICs3MSwzMiBAQCBXZWJJREJGYWN0b3J5SW1wbDo6fldlYklEQkZhY3RvcnlJbXBsKCkK
IHsKIH0KIAordm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6Z2V0RGF0YWJhc2VOYW1lcyhXZWJJREJD
YWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mIG9yaWdpbiwgV2Vi
RnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIsIHVuc2lnbmVkIGxvbmcgbG9uZyBtYXhp
bXVtU2l6ZSwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlKQoreworICAgIFdlYlN0
cmluZyBwYXRoID0gZGF0YURpcjsKKworICAgIGlmIChvdmVycmlkZGVuQmFja2luZ1N0b3JlVHlw
ZSAhPSBEZWZhdWx0QmFja2luZ1N0b3JlKSB7CisgICAgICAgIC8vIEJhY2tpbmcgc3RvcmUgdHlw
ZSBvdmVycmlkZGVuIGJ5IExheW91dFRlc3RDb250cm9sbGVyLgorICAgICAgICBiYWNraW5nU3Rv
cmVUeXBlID0gb3ZlcnJpZGRlbkJhY2tpbmdTdG9yZVR5cGU7CisgICAgfQorCisgICAgaWYgKGJh
Y2tpbmdTdG9yZVR5cGUgPT0gRGVmYXVsdEJhY2tpbmdTdG9yZSkKKyAgICAgICAgYmFja2luZ1N0
b3JlVHlwZSA9IExldmVsREJCYWNraW5nU3RvcmU7CisKKyAgICBpZiAoZGF0YURpci5pc0VtcHR5
KCkgJiYgYmFja2luZ1N0b3JlVHlwZSA9PSBMZXZlbERCQmFja2luZ1N0b3JlKSB7CisgICAgICAg
IGlmICghdGVtcERhdGFiYXNlRm9sZGVyLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgLy8gTGF5
b3V0IHRlc3RzIHByb3ZpZGUgYSB0ZW1wb3JhcnkgZm9sZGVyLgorICAgICAgICAgICAgcGF0aCA9
IHRlbXBEYXRhYmFzZUZvbGRlcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEZv
ciBpbmNvZ25pdG8gbW9kZSwgZmFsbCBiYWNrIHRvIFNRTGl0ZS4KKyAgICAgICAgICAgIGJhY2tp
bmdTdG9yZVR5cGUgPSBTUUxpdGVCYWNraW5nU3RvcmU7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5
OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgcGF0aCwgbWF4aW11bVNp
emUsIHN0YXRpY19jYXN0PElEQkZhY3RvcnlCYWNrZW5kSW50ZXJmYWNlOjpCYWNraW5nU3RvcmVU
eXBlPihiYWNraW5nU3RvcmVUeXBlKSk7Cit9CisKKwogdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6
b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBj
b25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmlu
ZyYgZGF0YURpciwgdW5zaWduZWQgbG9uZyBsb25nIG1heGltdW1TaXplLCBCYWNraW5nU3RvcmVU
eXBlIGJhY2tpbmdTdG9yZVR5cGUpCiB7CiAgICAgV2ViU3RyaW5nIHBhdGggPSBkYXRhRGlyOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmgKaW5kZXgg
NjJiZDllZDkyNzhjYmE0MzZmZTM0NzFhMmE0MGM3MjUzZWZiMDQzYy4uOTk0MDMwOWNkODRiYTk5
NzQyZGJjNWQ1ZjE1MGM5Yjk0YzAwNDIyMCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJJREJGYWN0b3J5SW1wbC5oCkBAIC00NCw2ICs0NCw3IEBAIHB1YmxpYzoKICAgICBX
ZWJJREJGYWN0b3J5SW1wbCgpOwogICAgIHZpcnR1YWwgfldlYklEQkZhY3RvcnlJbXBsKCk7CiAK
KyAgICB2aXJ0dWFsIHZvaWQgZ2V0RGF0YWJhc2VOYW1lcyhXZWJJREJDYWxsYmFja3MqLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGly
LCB1bnNpZ25lZCBsb25nIGxvbmcgbWF4aW11bVNpemUsIEJhY2tpbmdTdG9yZVR5cGUpOwogICAg
IHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJhY2tz
KiwgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4mLCBXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYg
ZGF0YURpciwgdW5zaWduZWQgbG9uZyBsb25nIG1heGltdW1TaXplLCBCYWNraW5nU3RvcmVUeXBl
KTsKIAogcHJpdmF0ZToK
</data>

          </attachment>
      

    </bug>

</bugzilla>